問題タブ [passport-azure-ad]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - Passport-azure-ad での state/customState の利用
customState
目的と、それを利用してデータをリターン URL に渡す方法を理解するのに苦労しています。具体的には、サインイン後にユーザーを元の場所に戻したいと考えています。元の url をパラメーターに渡してcustomState
、 return urlPOST
で返すことができると思いましたが、エンコードされているか、おそらく置き換えられているようです別の値。
これが私が達成したいことです:
- 認証が必要な匿名ユーザーの訪問
/page/protected
。 passport.authenticate
ユーザーをサインインにリダイレクトするコード呼び出し。- ユーザーがサインインすると、事前構成されたリターン URL に戻ります (例: )
/auth/oidc/return
。 - コードは、フォーム ポスト データからの情報の抽出を処理します。
- ユーザーは に戻され
/page/protected
ます。
node.js - Azure では無効な状態ですが、ローカルで動作しています
Azure App Service インスタンスで実行されている Node.js アプリケーションから認証したい Azure Active Directory テナントがあります。これを行うために、passportjs と Passport-azure-ad を使用しています。
ローカルではすべて正常に動作します。Azure AD テナントで認証でき、正しくマイ ページに戻ります。ただし、Azure では次のエラーで失敗します。
ローカル テストと Azure で同じテナントを使用しているため、私の構成は (redirectUrl を除いて) まったく同じですが、それでも失敗します。適切な応答 URL を設定すると、認証がアプリケーションに返されます。
これが私の設定です:
OIDCStrategy を使用しています。
私の認証ミドルウェア:
authorize
要求と返された応答のエンコードされた状態を比較しましたが、ローカルでも Azure でも同じように異なりますが、不満を言っているのは Azure だけです。状態の違いの例:
また、customState を完全に削除しようとしましたが、それでも失敗します。
ここで何が起こっているか知っている人はいますか?構成が間違っていますか?
編集:これは、passport-azure-ad の問題ではないようです。まだわかりませんが、一部のデバッグで、アプリへのログイン リクエストに set-cookie ヘッダーがないことが明らかになりました。セッションは作成されますが、Cookie が設定されていないため、返された応答は状態を含むセッション情報を検索して比較することができません。その結果、セッションからデータを取得できないため、無効な状態が報告されます。