【发布时间】:2016-07-13 16:58:20
【问题描述】:
我在验证 Azure Active Directory B2C 身份验证期间获得的 ID 令牌的签名时遇到问题。
我正在查看这组说明: [https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-reference-tokens/#token-validation][Azure AD B2C 预览:令牌参考>令牌验证]
所以,我正在尝试不同的 Python 3 包来尝试验证签名,它们似乎都需要 JWT,即 ID 令牌,以及“密钥”或“秘密”,即公钥验证签名。
需要明确的是,Azure Active Directory B2C ID 令牌是使用 RS256 签名的:
{'alg': 'RS256'} // Found in header of ID token
我正在使用此链接获取密钥:
https://login.microsoftonline.com/<b2c_directory>.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_sign_in
此链接返回一个 JSON 字符串,其中包含以下键: “孩子”、“使用”、“kty”、“n”、“e”
根据我的阅读,“n”和“e”密钥与验证签名所需的公钥有关。我已经尝试过单独和串联(n+e 和 e+n),但我无法验证该签名。
我正在使用 PyJWT,但我不介意使用其他 Python 3 包,只要它能成功验证签名,即使有人已经弄清楚如何使用 OpenID 进行身份验证,也可以使用 adal。
【问题讨论】:
-
所以“e”是指数,“n”是模数。有谁知道如何将它们结合起来生成一个适合验证 ID Token 签名的公钥?
-
如果您在这里查看:load_rsa_pub_key()。 github.com/jpadilla/pyjwt/blob/…您可能对如何使用公钥有所了解。
标签: python azure rsa jwt azure-active-directory