栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何验证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构建和打包)。

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641167.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号