如何验证MS-Azure AD生成的JWT id_令牌?

2024-06-13 20:48:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用ADAL-JS(和adal angular)的angularjs SPA web应用程序。 它的设置是为了与我们在MS Azure中的公司广告进行身份验证。登录流似乎工作正常,SPA接收到一个id_令牌。

接下来,当用户单击一个按钮时,SPA向我在AWS API网关上托管的restapi发出请求。我正在传递Authorization: Bearer <id_token>头上的id_标记。 API网关按预期接收头,现在必须确定给定的令牌是否良好,以允许或拒绝访问。

我有一个示例令牌,它可以在https://jwt.io/上正确解析,但到目前为止,我还没有找到用于验证签名的公钥或证书。我查过:

我认为我应该使用https://login.microsoftonline.com/common/discovery/keys中键的x5c属性的值来匹配JWT id_令牌中的kid和x5t属性(当前是a3QN0BZS7s4nN-BdrjbF0Y_LdMM,这将导致以“MIIDBTCCAe2gAwIBAgIQY…”开头的x5c值)。但是,https://jwt.io/页报告“无效签名”(我还尝试用“--BEGIN CERTIFICATE--”和“--END CERTIFICATE--”包装键值)。

另外,是否有一个(可能是python)库可以像上面的例子那样方便地验证给定的id_令牌(这样我就不必自己去抓取签名密钥了?)。。。我能找到的最好的(ADAL for python)似乎没有提供这个特性?


Tags: httpsiocomapiid网关logincommon