問題タブ [msal.js]

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.

0 投票する
1 に答える
275 参照

azure - Vue / Hapi JS アプリでの認証に AzureAD を使用する方法

MSAL.jsAzure ポータルに登録されたアプリがあり、ユーザーを認証するためにフロントエンドとバックエンドで使用しhapi-auth-jwt2たいjwks-rsaと考えています。バックエンドは Azure ではなく、独自の MySQL サーバーでホストされています。

この例の active-directory-b2c-javascript-msal-singlepageapp にMSAL.jsよると、ログインしてサイレント モードで、またはポップアップで ID とアクセス トークンを取得するために使用できます。次に、このようにアクセス トークンを http ヘッダーにアタッチし、バックエンドルートにVue.prototype.$http.defaults.headers.common['Authorization'] = 'Bearer ' + tokenリクエストを送信します。クライアントからのルートに到達すると、認証戦略が開始され、パブリックhttps://login.microsoftonline.com/common/discovery/keysから取得したキーを使用してトークンをデコードしようとします。axios/loginjwtjwks-rsa

問題は、 からの応答に と が付属/loginしていることです。401 (Unauthorized)res.headers.www-authenticate: "Bearer error=\"Invalid token\""

アクセス トークンをコピーして jwt.io に貼り付けると、デコードされたヘッダー オブジェクトがtypnoncealg、 でx5t構成されkid、署名が無効であることがわかりました。また、アプリの登録には、User.Read現在必要なアクセス許可の下で選択された Microsoft Graph がありましたが、それを削除しました。

問題が JWT 戦略にあるかどうかをテストするために、アクセス トークンの代わりに ID トークンを Bearer に渡しました。JWT はトークンをデコードしましたが、応答が返されましたres.headers.www-authenticate: "Bearer error=\"Invalid credentials\""

質問は次のとおりです。

  1. Graph API を呼び出さずにアクセス トークンを検証することはできますか? また、その方法は?
  2. 上記が不可能な場合、ID トークンを使用してユーザーを認証できますか? また、それはどのように機能しますか?
  3. Graph API を呼び出さずにアクセス トークンを検証できる場合、https://portal.azure.com/の設定はどうすればよいでしょうか?