如何验证MS Azure AD产生的JWT id_token?

如何验证MS Azure AD产生的JWT id_token?,第1张

如何验证MS Azure AD产生的JWT id_token?

到目前为止,我可以提出的最佳解决方案:

抓斗的证书
(中的第一个值

x5c
从任一属性阵列)
https://login.microsoftonline.com/common/discovery/keys
https://login.microsoftonline.com/common/discovery/v2.0/keys
,匹配
kid
x5t
从id_token。

将证书包裹

-----BEGIN CERTIFICATE-----n
和中
n-----ENDCERTIFICATE-----
(换行看起来很重要),然后将结果用作公钥(与https://jwt.io/上的id_token结合使用)。

当然,您的实际用例可能是让某些程序验证传入的JWT
id_tokens,所以您的目标将不是简单地通过https://jwt.io/上的Web UI获取令牌来进行验证。

例如, 在python中 ,我需要这样的东西:

#!/usr/bin/env pythonimport jwtfrom cryptography.x509 import load_pem_x509_certificatefrom cryptography.hazmat.backends import default_backendPEMSTART = "-----BEGIN CERTIFICATE-----n"PEMEND = "n-----END CERTIFICATE-----n"mspubkey = "The value from the x5c property"IDTOKEN = "the id_token to be validated"tenant_id = "your tenant id"cert_str = PEMSTART + mspubkey + PEMENDcert_obj = load_pem_x509_certificate(cert_str, default_backend())public_key = cert_obj.public_key()depred = jwt.depre(IDTOKEN, public_key, algorithms=['RS256'], audience=tenant_id)if depred:    print "Depred!"else:    print "Could not depre token."

有关各种语言的JWT库的列表,请参见JWT网站。我正在使用pyjwt及其加密依赖(具有二进制依赖,因此需要针对目标OS构建和打包)。

然后,当然,你可以 验证其他细节,如索赔 的建议在这里。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5646957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存