Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在Azure Active Directory B2C中验证具有签名的ID令牌_Python_Azure_Rsa_Jwt_Azure Active Directory - Fatal编程技术网

Python 正在Azure Active Directory B2C中验证具有签名的ID令牌

Python 正在Azure Active Directory B2C中验证具有签名的ID令牌,python,azure,rsa,jwt,azure-active-directory,Python,Azure,Rsa,Jwt,Azure Active Directory,在Azure Active Directory B2C中验证身份验证期间获得的ID令牌的签名时遇到问题 我正在看这组说明: []Azure AD B2C预览:令牌引用>令牌验证] 因此,我尝试使用不同的Python3包来验证签名,它们似乎都需要JWT,这是ID令牌,以及“key”或“secret”,这是验证签名的公钥 需要说明的是,Azure Active Directory B2C ID令牌使用RS256进行签名: {'alg': 'RS256'} // Found in header of

在Azure Active Directory B2C中验证身份验证期间获得的ID令牌的签名时遇到问题

我正在看这组说明: []Azure AD B2C预览:令牌引用>令牌验证]

因此,我尝试使用不同的Python3包来验证签名,它们似乎都需要JWT,这是ID令牌,以及“key”或“secret”,这是验证签名的公钥

需要说明的是,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
https://login.microsoftonline.com/.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_sign_in
此链接返回一个JSON字符串,其中包含以下键: “kid”、“use”、“kty”、“n”、“e”

据我所知,“n”和“e”密钥与验证签名所需的公钥相关。我尝试了单独和串联(n+e和e+n),但我无法验证该签名


我正在使用PyJWT,但我不介意使用其他Python 3软件包,只要它能成功验证签名,即使使用adal,只要有人知道如何使用OpenID进行身份验证。

@Ed,据我所知,我们通常使用指数(简称“e”)和模(简称“n”)在RSA签名中生成公钥。 您可以参考此页():

公钥由模数n和公钥(或 加密)指数e。私钥由模数n和 私有(或解密)指数d,必须保密。P q、 φ(n)也必须保密,因为它们可以用来 计算d

通常,我们应该对它们进行编码并获得int值。我建议您可以参考链接()表单“Brent Schmaltz”。您还可以分享如何在项目中使用签名。
因此,“e”是指数,“n”是模数。有人知道如何将这些结合起来生成适合验证ID令牌签名的公钥吗?如果您在此处查找:load_rsa_pub_key()。您可能会对如何使用公钥有所了解。