2017-12-05 6 views
0

Saml-StategyでPassportを使用するNodeJS/Expressバックエンドを作成しています。私はフロントエンドとして外部IDプロバイダとVueJsを使用しています。NodeJS Passportは、リクエストがVueJSから来た場合にCORSのプリフライトを実行します。

ブラウザ(Chrome + IE)からバックエンドにAPIリクエストを行うと、すべて正常に動作します。要求はバックエンドに行き、IdPにGET要求として渡され、認証されます。

同じ要求を行うVueJsアプリケーションを読み込むと、OPTIONSがサポートされていないため、パスポートはCORPのプリフライト(OPTIONS)リクエストをIdPから404に戻します。私はVue-ResourceとAxiosを試しました。どちらも同じ結果でした。

残念ながらIdPの設定を変更することはできません。しかし、なぜバックエンドの私のパスポートは要求を別々に扱うのですか?何か案は? enter image description here

API呼び出しとVueJsのリクエストヘッダーを比較しました。プレフライトの原因となるヘッダーが見つかりませんでした。

enter image description here

リポジトリ:https://github.com/tmschbgr/NodePassportExample

バージョン:

  • ノード:8.9.0
  • エクスプレス:4.16.2
  • パスポート:^ 0.4.0
  • パスポート-saml:^ 0.31.0
  • ヴュー:^ 2.4.4
  • Axios:^ 0.17.1

答えて

0

私はそれがタイミングの問題が原因引き起こしていたことが分かりました。

それは以下のロジックで動作します:

  1. リクエストはバックエンドに来る
  2. 認証されている場合ではない場合は、IdPのに行くと戻ってきて、確認してください。正常にリダイレクトされた場合/
  3. 認証チェック後に静的ファイルを提供します。そうすれば、ユーザーが認証されたときにのみアプリケーションが提供されます。
関連する問題