您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

(中的第一个x5c从任一属性阵列)https://login.microsoftonline.com/common/discovery/keyshttps://login.microsoftonline.com/common/discovery/v2.0/keys,匹配kidx5t从id_token。

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

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

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

#!/usr/bin/env python

import jwt
from cryptography.x509 import load_pem_x509_certificate
from cryptography.hazmat.backends import default_backend

PEMSTART = "-----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 + PEMEND
cert_obj = load_pem_x509_certificate(cert_str, default_backend())
public_key = cert_obj.public_key()

decoded = jwt.decode(IDTOKEN, public_key, algorithms=['RS256'], audience=tenant_id)
if decoded:
    print "Decoded!"
else:
    print "Could not decode token."

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

然后,当然,你可以 的建议在这里

其他 2022/1/1 18:30:49 有428人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶