使用 Azure AD B2C 在 Python Web 应用中启用身份验证选项

Important

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息

本文介绍如何为 Python Web 应用程序启用、自定义和增强 Azure Active Directory B2C(Azure AD B2C)身份验证体验。

在开始之前,请务必熟悉如何使用 Azure AD B2C 在示例 Python Web 应用中配置身份验证

使用自定义域

通过使用 自定义域,可以完全打造身份验证 URL 的品牌。 从用户的角度来看,用户在身份验证过程中保留在域上,而不是重定向到Azure AD B2C b2clogin.cn 域名。

若要删除对 URL 中“b2c”的所有引用,还可以将身份验证请求 URL 中的 B2C 租户名称 contoso.partner.onmschina.cn 替换为租户 ID GUID。 例如,可以更改为 https://fabrikamb2c.b2clogin.cn/contoso.partner.onmschina.cn/https://account.contosobank.co.uk/<tenant ID GUID>/.

若要在身份验证 URL 中使用自定义域和租户 ID,请执行以下操作:

  1. 按照 “启用自定义域”中的指南操作。
  2. app_config.py 文件中,使用自定义域更新 authority_template 类成员。

以下Python代码显示更改前的应用设置:

authority_template = "https://{tenant}.b2clogin.cn/{tenant}.partner.onmschina.cn/{user_flow}"

以下Python代码显示更改后的应用设置:

authority_template = "https://custom.domain.com/00000000-0000-0000-0000-000000000000/{user_flow}" 

预填充登录名称

在登录用户旅程中,你的应用可能面向特定用户。 当应用面向用户时,它可以在授权请求 login_hint 中使用用户的登录名称指定查询参数。 Azure AD B2C 会自动填充登录名,用户只需提供密码。

若要预填充登录名称,请执行以下操作:

  1. 如果使用自定义策略,请添加所需的输入声明,如 “设置直接登录”中所述。
  2. 找到该方法 initiate_auth_code_flow ,然后使用标识提供者域名添加 login_hint 参数。
def _build_auth_code_flow(authority=None, scopes=None):
    return _build_msal_app(authority=authority).initiate_auth_code_flow(
        scopes or [],
        redirect_uri=url_for("authorized", _external=True),
        login_hint="bob@contoso.com")

预先选择标识提供者

如果将应用程序的登录旅程配置为包含社交帐户,则可以指定 domain_hint 参数。 此查询参数提供有关应用于登录的社交标识提供者Azure AD B2C 的提示。

若要将用户重定向到外部标识提供者,请执行以下操作:

  1. 检查外部标识提供者的域名。 有关详细信息,请参阅将登录重定向到社交服务提供商

  2. initiate_auth_code_flow找到该方法,然后使用登录提示添加domain_hint参数。

    def _build_auth_code_flow(authority=None, scopes=None):
        return _build_msal_app(authority=authority).initiate_auth_code_flow(
            scopes or [],
            redirect_uri=url_for("authorized", _external=True),
            domain_hint="<YOUR_DOMAIN_HINT>")
    

后续步骤