我有一個使用ADAL-JS(和adal-angular)的angularjs SPA web應用程序。 它設置爲對我們在MS Azure中的公司AD進行身份驗證。登錄流程似乎正常工作,SPA收到一個id_token。如何驗證MS Azure AD生成的JWT id_token?
接下來,當用戶單擊按鈕時,SPA向我在AWS API網關上託管的REST API發出請求。我在Authorization: Bearer <id_token>
標題上傳遞了id_token。 API網關按預期接收頭,現在必須確定給定令牌是否良好,以允許或拒絕訪問。
我有一個示例令牌,它在https://jwt.io/上正確解析,但我至今未能找到公鑰或證書來驗證簽名。我已經看了看:
- 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
我認爲我應該使用的關鍵x5c屬性的值在https://login.microsoftonline.com/common/discovery/keys匹配來自JWT id_token孩子和x5t性能(目前a3QN0BZS7s4nN-BdrjbF0Y_LdMM
,導致開始與x5c值「MIIDBTCCAe2gAwIBAgIQY ......」) 。但是,https://jwt.io/頁面報告「無效簽名」(我也嘗試用「----- BEGIN CERTIFICATE -----」和「----- END CERTIFICATE -----」包裝密鑰值)。
另外,是否有一個(可能是python)庫,可以方便地驗證給定的id_token,如上例(這樣我就不必自己動手抓住簽名密鑰?).. 。我能找到的最好的(ADAL for python)似乎沒有提供此功能?
你見過[this](https://github.com/Azure/msrestazure-for-python/blob/master/msrestazure/azure_active_directory.py#L166) – 4c74356b41
嘿@ 4c74356b41 - 感謝您的鏈接!可以很方便但是..我沒有看到在那個庫中籤入令牌簽名的位置? – FOR