MSAL.js
Azure ポータルに登録されたアプリがあり、ユーザーを認証するためにフロントエンドとバックエンドで使用し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
/login
jwt
jwks-rsa
問題は、 からの応答に と が付属/login
していることです。401 (Unauthorized)
res.headers.www-authenticate: "Bearer error=\"Invalid token\""
アクセス トークンをコピーして jwt.io に貼り付けると、デコードされたヘッダー オブジェクトがtyp
、nonce
、alg
、 でx5t
構成されkid
、署名が無効であることがわかりました。また、アプリの登録には、User.Read
現在必要なアクセス許可の下で選択された Microsoft Graph がありましたが、それを削除しました。
問題が JWT 戦略にあるかどうかをテストするために、アクセス トークンの代わりに ID トークンを Bearer に渡しました。JWT はトークンをデコードしましたが、応答が返されましたres.headers.www-authenticate: "Bearer error=\"Invalid credentials\""
質問は次のとおりです。
- Graph API を呼び出さずにアクセス トークンを検証することはできますか? また、その方法は?
- 上記が不可能な場合、ID トークンを使用してユーザーを認証できますか? また、それはどのように機能しますか?
- Graph API を呼び出さずにアクセス トークンを検証できる場合、https://portal.azure.com/の設定はどうすればよいでしょうか?