私はADAL-JS(および大角)を使用するangularjs SPAウェブアプリを持っています。 これはMS Azureの企業ADとの認証を設定しています。ログインフローが正しく機能しているように見え、SPAはid_tokenを受信します。MS Azure ADによって生成されたJWT id_tokenを確認する方法は?
次に、ユーザーがボタンをクリックすると、SPAはAWS APIゲートウェイでホストしているREST APIにリクエストを行います。 id_tokenをAuthorization: Bearer <id_token>
ヘッダーに渡しています。 APIゲートウェイは意図したとおりにヘッダーを受け取り、指定されたトークンが良好かどうかを判断してアクセスを許可または拒否する必要があります。
私はサンプルトークンを持っていて、それは正しくhttps://jwt.io/で解析されますが、これまで署名を検証するために使用する公開鍵または証明書を見つけることができませんでした。 Iはで見た:
- https://login.microsoftonline.com/ {tenantid} /federationmetadata/2007-06/federationmetadata.xml
- https://login.microsoftonline.com/ {tenantId} /発見/キー
- https://login.microsoftonline.com/common/.well-known/openid-configuration(jwks_uriを取得する)
- https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration
- https://login.microsoftonline.com/common/discovery/keys
- https://login.microsoftonline.com/common/discovery/v2.0/keys
私は私はJWTのid_tokenから子供とx5tの特性のマッチングhttps://login.microsoftonline.com/common/discovery/keysにキーのx5cプロパティの値を使用すべきだと思う(で始まるx5c値につながり、現在a3QN0BZS7s4nN-BdrjbF0Y_LdMM
、「MIIDBTCCAe2gAwIBAgIQYを...」) 。しかし、https://jwt.io/ページには「Invalid Signature」と表示されます(「----- BEGIN CERTIFICATE -----」と「----- END CERTIFICATE -----」)。
また、上記の場合と同様にid_tokenの検証を容易にする(おそらくPythonの)ライブラリがあります(私は自分自身で署名鍵を取得する必要はありません)。私が見つけた最高の(ADAL for python)はこの機能を提供していないようですか?私がこれまでにまとめることができ
[this](https://github.com/Azure/msrestazure-for-python/blob/master/msrestazure/azure_active_directory.py#L166) – 4c74356b41
ちょっと@ 4c74356b41 - ありがとうございました!便利かもしれませんが、私はそのlibでトークンの署名がチェックされているのを見ませんか? – FOR