配置 Azure AD B2C 以实现客户身份保护
05/01/2025
本技术和教育文章旨在指导安全分析师、IT 管理员和系统工程师配置和使用 Azure AD B2C(企业对消费者)来保护和管理客户身份。在客户体验至关重要的数字世界中,提供安全、直观和可定制的注册和登录流程至关重要。 Azure AD B2C 是一种客户身份和访问管理 (CIAM) 解决方案,允许您的客户使用其社交身份(例如 Google、Facebook)或本地帐户 [1] 注册并登录您的应用程序和 API。
简介
客户身份是现代数字体验的基础。 Web 和移动应用程序需要一个强大的系统来管理数百万客户的注册、登录和个人资料,确保安全性、可扩展性并遵守隐私法规。开发和维护内部 CIAM 系统非常复杂、昂贵且容易出现安全错误。 Azure AD B2C 等解决方案通过提供处理客户身份管理各个方面的平台即服务 (PaaS) 消除了这种复杂性 [2]。
Azure AD B2C 扩展了 Azure Active Directory 的功能,以满足面向消费者的应用程序的特定需求。它允许组织完全定制客户身份体验,从登录和注册页面到收集的属性。此外,它还集成了多重身份验证 (MFA)、条件访问和身份保护等高级安全功能,以保护客户帐户免受暴力攻击和凭据泄露等常见威胁 [3]。
本实用指南将涵盖先决条件、B2C 概念、如何创建和配置 B2C 租户、注册应用程序、配置可自定义的用户流程(注册、登录、配置文件编辑、密码重置)、如何与应用程序集成以及如何测试和验证身份验证。将提供分步说明、实际示例和简洁的解释,以便读者可以实现、测试和验证这些功能。此外,还将讨论安全提示、合规性检查和最佳实践,以确保您的客户身份得到有效、自主、专业和可靠的保护和管理。
为什么 Azure AD B2C 对于保护客户身份至关重要?
- 增强的客户体验:提供社交登录选项和完整的用户界面定制,从而带来流畅且一致的用户体验。
- 强大的安全性:集成企业级安全功能,例如 MFA、条件访问和身份保护,以保护客户帐户免受攻击。
- 可扩展性和可靠性:旨在处理数百万用户和数十亿次身份验证,确保高可用性和性能。
- 合规性:通过控制客户数据的存储和处理,帮助满足 GDPR 和 LGPD 等数据隐私法规。
- 降低成本:无需构建和维护复杂的内部身份基础设施。
- 灵活性:支持多种身份验证协议(OpenID Connect、OAuth 2.0、SAML),并且几乎可以与任何应用程序集成。
先决条件
要配置 Azure AD B2C,您将需要以下项目:
- 活动 Azure 订阅:用于创建和管理资源的 Azure 订阅。
- 管理访问权限:在 Azure 订阅中具有“全局管理员”或“用户管理员”角色的帐户。
- Azure AD B2C 租户:新的 Azure AD B2C 租户,它是与公司 Azure AD 租户不同的目录。
分步:配置 Azure AD B2C
让我们创建一个 B2C 租户,注册一个应用程序并配置一个用户流程。
1.创建 Azure AD B2C 租户
B2C 租户是一个单独的目录,用于存储客户的身份。
- 打开浏览器并导航到 Azure 门户:“https://portal.azure.com”。
- 使用具有权限的帐户登录有必要。
- 在顶部搜索字段中,输入“Azure Active Directory B2C”并从结果中选择它。
-
单击“+ 创建新的 Azure AD B2C 租户”。
-
创建B2C租户:
- 租户类型:
Azure AD B2C 租户。 - 组织名称:为您的组织命名(例如:
MyCompanyB2C)。 - 初始域名:选择一个唯一的域名(例如:
mycompanyab2c.onmicrosoft.com)。 - 国家/地区:选择您所在的国家/地区。
- 订阅:选择您的 Azure 订阅。
- 资源组:创建一个新资源组(例如:
rg-b2c)或选择一个现有资源组。
- 租户类型:
-
单击“查看 + 创建”,然后单击“创建”。
- 说明:B2C 租户创建可能需要几分钟时间。创建后,您需要切换到这个新的 B2C 目录来管理它。
2. 在 Azure AD B2C 中注册应用程序
每个将使用 Azure AD B2C 进行身份验证的应用程序都需要注册。
- 在 Azure 门户中,确保您位于 Azure AD B2C 租户(使用右上角的目录选择器)。
- 在左侧导航窗格中,选择“管理”下的应用程序注册。
-
单击“+新注册”。
-
注册申请:
- 名称:为您的应用程序命名(例如:
WebApp-MinhaEmpresa)。 - 支持的帐户类型:选择“任何组织目录或身份提供商目录中的帐户(以使用用户流对用户进行身份验证)”。
- 重定向 URI(可选):选择“Web”并输入登录后将发送身份验证令牌的 URL(例如“https://localhost:5001/signin-oidc”用于本地开发或应用程序的生产 URL)。
- 权限:选中“授予管理员对 openid 和离线访问权限的同意”。
- 名称:为您的应用程序命名(例如:
-
单击注册。
-
注册后,记下应用程序 ID(客户端) 和 目录 ID(租户)。您将需要它们来配置您的应用程序。
3. 创建用户流程
用户流程是预定义的、可自定义的注册、登录、个人资料编辑和密码重置的身份体验。
- 在 Azure AD B2C 租户的左侧导航窗格中,选择“策略”下的“用户流”。
-
单击“+新用户流程”。
-
创建用户流程:
- 用户流程类型:选择“注册并登录”。
- 版本:
推荐。 - 名称:给出一个名称(例如:
B2C_1_signup_signin)。 - 身份提供商:选择“本地帐户电子邮件”(如果您想集成社交提供商,则选择“Google”、“Facebook”等其他身份提供商)。
- 用户属性和令牌声明:选择您想要在注册期间收集的属性(例如“电子邮件地址”、“名字”、“姓氏”)以及将包含在令牌中的声明。
- 多重身份验证 (MFA):“已禁用”(对于本示例,但可以启用以提高安全性)。
- 条件访问:“已禁用”(对于本例)。
-
单击“创建”。
-
重复此过程以创建其他用户流程,例如“密码重置”(例如“B2C_1_password_reset”)和“个人资料编辑”(例如“B2C_1_profile_edit”)。
- 说明:用户流是客户身份体验的支柱。它们定义用户在身份验证过程中将进行的屏幕和交互的顺序。您可以自定义这些流的外观和行为。
4. 自定义用户流程的用户界面 (UI)
您可以自定义登录和注册页面的外观以匹配您的应用程序的品牌。
- 在 Azure AD B2C 租户的左侧导航窗格中,选择“用户流”。
- 单击您创建的用户流程(例如:“B2C_1_signup_signin”)。
- 在左侧导航窗格中,选择“页面布局”。
-
您可以使用自定义 CSS 或 HTML 自定义每个页面的布局(例如:“统一登录页面”、“本地帐户注册页面”)以匹配您的品牌。
- 说明:对于高级自定义,您可以在 Azure Blob 存储上托管自己的 HTML/CSS/JavaScript 文件并引用它们他们在这里。
5. 将 Azure AD B2C 与应用程序集成
集成涉及将应用程序配置为使用 Azure AD B2C 进行身份验证。该过程因应用程序的平台和框架而异。我们将使用一个 Web 应用程序的概念示例。
- 配置应用程序以使用 OpenID Connect:您的应用程序将需要使用 OpenID Connect 客户端与 Azure AD B2C 进行通信。
-
配置参数:您将需要来自 B2C 租户和注册应用程序的以下参数:
- 客户端 ID(应用程序 ID):您注册的应用程序的 ID(例如:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。 - B2C 租户 ID(租户 ID):B2C 租户的名称(例如:
mycompanyab2c.onmicrosoft.com)。 - 用户流名称(策略名称):您要用于登录的用户流的名称(例如:
B2C_1_signup_signin)。 - 重定向 URI:您在应用程序注册中配置的 URL(例如:
https://localhost:5001/signin-oidc)。 -
OpenID Connect 元数据端点:此端点提供 B2C 配置信息。格式通常为“https://
.b2clogin.com/ .onmicrosoft.com/ /v2.0/.well-known/openid-configuration”。 -
配置示例(ASP.NET Core Web 应用程序的伪代码): ``csharp // Startup.cs 或 Program.cs services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(选项=> { Configuration.Bind("AzureAdB2C", 选项); options.Instance = "https://minhaempresab2c.b2clogin.com"; options.Domain = "mycompanyab2c.onmicrosoft.com"; options.ClientId = "
"; options.SignUpSignInPolicyId = "B2C_1_signup_signin"; options.CallbackPath = "/signin-oidc"; options.SignedOutCallbackPath = "/signout-oidc"; options.ClientSecret = " "; // 仅适用于非 SPA 的 Web 应用 }); ```` -
说明:
Microsoft.Identity.Web库简化了 Azure AD B2C 与 .NET 应用程序的集成。对于其他平台,有等效的 SDK 和库。
- 客户端 ID(应用程序 ID):您注册的应用程序的 ID(例如:
验证和测试
测试身份验证过程和用户体验至关重要。
1. 测试注册和登录用户流程
- 场景:访问配置为使用 Azure AD B2C 的 Web 应用程序。尝试注册一个新用户,然后使用新创建的帐户登录。
- 预期操作:您应该被重定向到 Azure AD B2C 注册/登录页面,能够创建帐户、登录并成功重定向回您的应用程序。
- 验证:
- 在 Azure 门户的 B2C 租户中,导航到“管理”下的 用户。新用户应该出现在列表中。
- 检查 Azure AD B2C 审核日志以确认注册和登录事件。
2. 测试密码重置
- 场景:尝试使用密码重置用户流程重置用户密码。
- 预期操作:用户应该能够重置密码并使用新密码登录。
- 验证:
- 检查 Azure AD B2C 审核日志以确认密码重置事件。
3.检查 Azure AD B2C 中的审核日志
- 在 Azure 门户中的 B2C 租户中,导航到 Azure Active Directory > 监控 > 审核日志。
- 按“类别”=“核心目录”和“活动”=“登录”或“注册”过滤日志。
- 检查事件详细信息以确认身份验证操作是否成功。
安全提示和最佳实践
- 启用 MFA:始终为登录用户流启用多重身份验证 (MFA),特别是对于具有特权或访问敏感数据的帐户。 MFA 是抵御凭据泄露攻击的最有效防御方法之一。
- 使用条件访问:将 Azure AD B2C 与条件访问集成以实施基于风险的安全策略,例如要求从未知位置或不合规设备登录时使用 MFA [3]。
- 身份保护:使用 Azure AD B2C 身份保护功能来检测和修复身份风险,例如泄露的凭据或异常登录。
- 安全 UI 定制:定制登录/注册页面时,确保定制 HTML/CSS/JavaScript 不会引入安全漏洞(例如 XSS)。使用具有正确配置的 CORS 的安全 Blob 存储。
- 限制用户属性:仅收集您的应用程序和业务绝对必需的用户属性。这可以最大限度地降低数据暴露的风险并有助于合规性。
- 日志监控:持续监控 Azure AD B2C 审核日志和登录日志以检测可疑活动或企图攻击。
- 客户端密钥轮换:如果您的应用程序使用客户端密钥,请务必定期轮换并安全地存储它(例如 Azure Key Vault)。
- 与社交提供商集成:集成 Google 或 Facebook 等社交身份提供商时,请正确配置它们并遵循每个提供商的安全准则。
常见故障排除
- 创建 B2C 租户时出错:
- 检查您的 Azure 订阅是否拥有必要的权限。
- 确保初始域名是唯一的且未被使用。
- 登录/注册后重定向错误:
- 验证 Azure AD B2C 中的应用程序注册中配置的“重定向 URI”是否与应用程序的返回 URL 完全匹配。
- 确保协议(HTTP/HTTPS)和端口正确。
- 用户流程不起作用或显示错误:
- 验证用户流是否已正确创建以及身份提供商和用户属性是否已选择。
- 直接从 Azure 门户测试用户流(在用户流页面上,单击“运行用户流”)以隔离问题。
- 检查审核日志中的错误消息。
- 不应用 UI 自定义:
- 检查自定义 CSS/HTML 文件的 URL 是否正确且可公开访问(如果托管在 Blob 存储上)。
- 确保在 Blob 存储上正确配置 CORS,以允许从“b2clogin.com”域进行访问。
- 清除浏览器缓存以确保加载最新更改。
- 应用程序集成问题:
- 检查应用程序中的“客户 ID”、“B2C 租户 ID”和“用户流名称”配置是否正确。
- 确保应用程序中的身份验证库是最新的。
- 检查您的应用程序日志中是否有身份验证错误消息。
结论
Azure AD B2C 是一个强大而灵活的解决方案,用于管理和保护客户的身份,提供改进的用户体验和强大的安全性。通过将身份管理的复杂性委托给 Microsoft,组织可以专注于其核心业务,确保其客户数据安全且合规。仔细实施用户流、与安全最佳实践集成以及持续监控对于最大限度地发挥 Azure AD B2C 的优势至关重要。通过本实用指南,安全专业人员和 IT 管理员将能够配置、验证和管理 Azure AD B2C,保护客户的身份并加强其应用程序的整体安全状况。
参考资料:
[1] 微软学习。 Azure Active Directory B2C 文档。位于:https://learn.microsoft.com/pt-br/azure/active-directory-b2c/ [2] 微软学习。 Azure AD B2C 的最佳实践。位于:https://learn.microsoft.com/pt-br/azure/active-directory-b2c/best-practices [3] 微软学习。 Azure AD B2C 中的身份保护和条件访问。位于:[https://learn.microsoft.com/pt-br/azure/active-directory-b2c/conditional-access-identity-protection-overview](https://learn.microsoft.com/pt-br/azure/active-directory-b2c/条件访问身份保护概述) [4] 微软学习。 在 Azure Active Directory B2C 中注册 Web 应用程序。位于:https://learn.microsoft.com/pt-br/azure/active-directory-b2c/tutorial-register-applications [5] 微软学习。 创建用户流和自定义策略 - Azure Active Directory B2C。位于:https://learn.microsoft.com/pt-br/azure/active-directory-b2c/tutorial-create-user-flows [6] 微软学习。 使用 Azure AD B2C 在示例 Web 应用程序中配置身份验证。位于:https://learn.microsoft.com/pt-br/azure/active-directory-b2c/configure-authentication-sample-web-app [7] 微软学习。 利用 Azure AD B2C 中的身份保护调查风险。网址:https://learn.microsoft.com/pt-br/azure/active-directory-b2c/identity-protection-investigate-risk