跳转到主要内容

使用Python验证由Azure Active Directory B2C签发的JWT。

项目描述

azure-ad-verify-token

使用Python验证由Azure Active Directory B2C签发的JWT 🐍。

Build Status PyPI version

Validation steps this library makes:

1. Accepts an Azure AD B2C JWT.
2. Extracts `kid` from unverified headers.
3. Finds `kid` within Azure JWKS.
4. Obtains RSA key from JWK.
5. Calls `jwt.decode` with nessary parameters, which inturn validates:

    - Signature
    - Expiration
    - Audience
    - Issuer
    - Key
    - Algorithm

许可协议

https://creativecommons.org/licenses/by-nc-nd/4.0/

本作品受创用CC Attribution-NonCommercial-NoDerivatives 4.0 国际许可协议许可。

对于商业用途许可,请联系我们[联系方式]

安装

pip install azure-ad-verify-token

用法

首先,您需要获取您的 azure_ad_app_idazure_ad_issuerazure_ad_jwks_uri。以下步骤将展示如何获取这些值。

  1. 对于应用ID。登录到 Azure门户,导航到Azure AD B2C,点击“应用程序”部分,您的应用ID应列在列表中。

  2. 对于发行者和JWKS URI

在“用户流程”下,记下您的名称,这将在之后需要。

https://i.imgur.com/uYmghAZ.png

接下来,在Azure AD B2C中,在“应用程序”部分。

点击“端点”。

复制带有标签“OpenID Connect配置端点(v2)”的端点

它看起来可能像这样

https://exampletenant.b2clogin.com/exampletenant.onmicrosoft.com/<policy-name>/v2.0/.well-known/openid-configuration

https://i.imgur.com/3bQGZBn.png

现在将 <policy-name> 替换为之前您的用户流程名称

https://exampletenant.b2clogin.com/exampletenant.onmicrosoft.com/B2C_1_app_sign_in/v2.0/.well-known/openid-configuration

现在在您的网络浏览器中访问该URL。

您应该会收到一个JSON响应,记下'issuer'和'jwks_uri'键的值。

现在您有了这些值,您可以继续验证由Azure生成的JWT令牌。

from azure_ad_verify_token import verify_jwt

azure_ad_app_id = 'b74cd13f-8f79-4c98-b748-7789ecb1111d5'
azure_ad_issuer = 'https://exampletenant.b2clogin.com/0867afa-24e7-40e9-9d27-74bb598zzzzc/v2.0/'
azure_ad_jwks_uri = 'https://exampletenant.b2clogin.com/exampletenant.onmicrosoft.com/B2C_1_app_sign_in/discovery/v2.0/keys'
payload = verify_jwt(
    token='<AZURE_JWT_TO_VERIFY_HERE>',
    valid_audiences=[azure_ad_app_id],
    issuer=azure_ad_issuer,
    jwks_uri=azure_ad_jwks_uri,
    verify=True,
)

print(payload)
{'aud': 'b74cd13f-8f79-4c98-b748-7789ecb1111d5',
 'auth_time': 1591800638,
 'emails': ['bob@example.com'],
 'exp': 1591804238,
 'family_name': 'Exp Admin',
 'given_name': 'Richard',
 'iat': 1591800638,
 'iss': 'https://exampletenant.b2clogin.com/90867afa-24e7-40e9-9d27-74bb598zzzzc/v2.0/',
 'nbf': 1591800638,
 'sub': 'e07bbc53-b812-4572-9edc-4b5d4ac88447',
 'tfp': 'B2C_1_app_sign_in',
 'ver': '1.0'}

如果出现问题,以下异常之一将被引发

# If the token is found to be invalid.
azure_ad_verify_token.InvalidAuthorizationToken

# Base exception, raised if the checks which call the Azure server recieve an unhappy response.
azure_ad_verify_token.AzureVerifyTokenError

版本历史

0.4.0 (2022-12-29)

  • verify_jwt函数添加了可选的kwargs。

0.3.0 (2022-11-03)

  • verify_jwt函数添加了可选的'选项'参数。

0.2.1 (2021-12-23)

  • 放宽了允许的依赖关系版本。

0.2.0 (2021-10-19)

  • 将可选参数 verify 添加到 verify_jwt 函数中。

0.1.3 (2021-03-11)

  • 允许更广泛的加密依赖版本。

0.1.2 (2020-06-30)

  • 更正了所需的依赖版本范围。

0.1.1 (2020-06-29)

  • 文档更新。

0.1.0 (2020-06-29)

  • 首次发布。

项目详情


下载文件

下载适用于您平台文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

azure-ad-verify-token-0.4.0.tar.gz (12.5 kB 查看哈希值)

上传时间

构建分发

azure_ad_verify_token-0.4.0-py2.py3-none-any.whl (10.4 kB 查看哈希值)

上传时间 Python 2 Python 3