你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
自 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.com 域名。
若要删除 URL 中提到“b2c”的所有内容,还可以将身份验证请求 URL 中的 B2C 租户名称 contoso.onmicrosoft.com 替换成租户 ID GUID。 例如,可以更改为 https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/
https://account.contosobank.co.uk/<tenant ID GUID>/
.
要在身份验证 URL 中使用自定义域和租户 ID,请执行以下作:
- 按照 “启用自定义域”中的指南进行操作。
- 在 app_config.py 文件中,使用自定义域更新
authority_template
类成员。
以下 Python 代码显示了更改前的应用程序设置:
authority_template = "https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{user_flow}"
以下 Python 代码显示了更改后的应用程序设置:
authority_template = "https://custom.___domain.com/00000000-0000-0000-0000-000000000000/{user_flow}"
预填充登录名称
在登录用户旅程中,你的应用可能面向特定用户。 当应用面向用户时,它可以在授权请求中指定具有用户登录名称的 login_hint
查询参数。 Azure AD B2C 会自动填充登录名称,用户只需提供密码。
若要预填充登录名称,请执行以下作:
- 如果您使用的是自定义策略,请按照 设置直接登录中所述添加所需的输入声明。
- 找到方法
initiate_auth_code_flow
,然后添加login_hint
具有身份提供商域名的参数(例如, facebook.com)。
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")
预先选择标识提供者
如果将应用程序的登录旅程配置为包含社交帐户(如 Facebook、LinkedIn 或 Google),则可以指定 domain_hint
参数。 此查询参数向 Azure AD B2C 提供有关应该用于登录的社交标识提供者的提示。 例如,如果应用程序指定 domain_hint=facebook.com
,登录流将直接转到 Facebook 登录页。
若要将用户重定向到外部标识提供者,请执行以下作:
检查外部标识提供者的域名。 有关详细信息,请参阅将登录重定向到社交服务提供商。
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="facebook.com")
后续步骤
- 若要了解详细信息,请参阅 适用于 Python 的 MSAL 配置选项。