你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
Azure Active Directory B2C 是一种客户标识访问管理(CIAM)解决方案,每天支持数百万用户和数十亿身份验证。 它负责身份验证平台的缩放和安全性,并监视和自动处理拒绝服务、密码喷射或暴力攻击等威胁。
Azure Active Directory B2C(Azure AD B2C)是独立于 Microsoft Entra ID 的单独服务。 它基于与 Microsoft Entra ID 相同的技术构建,但出于其他目的。 它允许企业生成面向客户的应用程序,然后允许自助注册应用程序。
Azure AD B2C 是一种由多个组件组成的全球分布式服务:
创建 Azure AD B2C 解决方案时,必须提供托管服务的位置。 此位置仅与将存储用户配置文件数据的区域相关,而处理登录的服务的其余部分则全局运行。
通常,在离用户群最近的区域中部署 Azure AD B2C 租户。 这样可以更轻松地遵守数据驻留法规,因为用户配置文件仅复制在所选区域中。 这在登录过程中也提供了最佳性能,因为网络延迟已得到优化,以提升目录存储的效率。
当 Azure AD B2C 目录需要在全球范围内为用户提供服务时,区域结构将带来挑战。 必须确定要在哪个位置创建 Azure AD B2C 租户。 所选区域以外的任何用户可能不符合数据驻留要求,在验证凭据或读取其用户配置文件数据时也可能会遇到更高的延迟。
例如,请考虑支持澳大利亚和北美用户的应用程序,并在北美区域中创建 Azure AD B2C 目录。 从澳大利亚登录的用户可能需要更长的处理时间才能完成身份验证。
为了更好地满足数据驻留要求并缓解性能问题,必须部署多个 Azure AD B2C 租户。 通过在您的业务运营的每个区域安置一个租户,可以优化目录内的操作以减少延迟。 但是,通过这样做,解决方案会创建其他开销来配置、管理和保护每个区域中的这些敏感租户资源。 其他开销包括:
租户管理
租户隔离导致最终用户体验不具有全局性
账单管理
用于管理策略/应用注册/密钥的 CI/CD 进程
本文档推荐了一些包含 Azure AD B2C 的体系结构,这些体系结构最适合为全球用户提供服务的客户的解决方案。 这些解决方案满足以下要求:
无论从何处访问应用程序,用户都可以维护相同的凭据集。
无论用户从何处进行身份验证,性能与延迟都一致。
使客户能够轻松地将流程、框架或 SDK 交付给其开发人员团队,且所需的配置最少。
用户可以在世界各地旅行时维护个人资料。 这会在任何服务中的用户交互生成的分析中创建更多价值。
客户用户数据存储在区域数据存储中。
以下是使用 Azure AD B2C 租户为全球运营业务模型建立标识平台时可以参考的两种方法。
第一种方法使用地理区域作为边界和应用程序专门为该区域配置。
第二种方法具有应用程序的全局边界,并使用额外的 Azure AD B2C 租户来协调区域租户之间的交互。
区域租户业务流程
在此模型中,应用程序要么按区域托管,要么具有用来连接到区域租户的按区域配置。 应用程序将用户直接发送到特定于区域的租户。 当用户可能已前往其他区域时,跨租户通信用于执行跨租户身份验证或跨租户配置文件更新。
漏斗租户业务流程
在此模型中,Azure AD B2C 租户将用户引导到区域 Azure AD B2C 租户。 该漏斗租户充当指向其他 Azure AD B2C 租户的重定向业务流程协调程序。 这由 Azure AD B2C 服务的全局分布式组件处理,因此性能不受影响。 此重定向是使用 OpenId Connect 标识提供者联合身份验证执行的。
跨租户通信用于执行跨租户身份验证,或跨租户配置文件更新。 漏斗租户为应用程序提供了一个可以与之通信的终结点。
你决定为解决方案建模的体系结构需要根据所述两个模型之间的利弊做出选择。 例如,漏斗模型使你能够维护应用程序的单个实例。 以下部分介绍可能影响所选设计的功能、选择条件和性能。
功能和注意事项
下表描述了使用基于区域设计与漏斗设计提供的功能:
能力 | 基于区域的 | 基于漏斗 |
---|---|---|
支持本地帐户注册和登录 |
![]() |
![]() |
支持联合帐户注册和登录 |
![]() |
![]() |
支持为从其注册区域外部登录的用户验证本地帐户 |
![]() |
![]() |
支持通过跨租户 API 查找功能来验证从注册区域外登录的用户的联合帐户身份验证。 |
![]() |
![]() |
防止从多个不同区域注册 |
![]() |
![]() |
每个区域中的应用程序都有一组要连接的终结点 |
![]() |
|
所有应用程序都连接到同一组终结点,无论它们托管在哪个地区。 |
![]() |
|
支持细粒度的条件访问策略。 |
![]() |
|
针对成本进行优化。 |
![]() |
根据功能,必须考虑以下注意事项:
使用基于区域的方法时,主要考虑因素是该方法要求跨多个区域的应用程序为每个区域 Azure AD B2C 租户配置相应的配置。
使用基于漏斗的方法时
存在双令牌成本
引入了一个额外的 HTTP 重定向
许多租户必须使用自定义域名
条件访问在租户级别应用,而不是应用程序级别
通过多个 IdP 进行的单一注销可能会带来挑战
你选择的方法将取决于托管的应用程序数以及访问应用程序的特定要求。
性能
对全球运营的业务而言,使用多个租户(无论是在基于区域的配置中,还是在基于漏斗的配置中)的性能优势将高于使用单个 Azure AD B2C 租户。
使用基于漏斗的方法时,漏斗租户位于一个特定区域中,并为全球用户提供服务。 由于漏斗租户操作使用了 Azure AD B2C 服务的全球组件,因此无论用户从何处登录,它都能保持一致的性能水平。
如上图所示,漏斗方法中的 Azure AD B2C 租户将仅利用策略引擎执行重定向,以将用户重定向到区域 Azure AD B2C 租户。 Azure AD B2C 策略引擎组件全局分布。 因此,无论 Azure AD B2C 漏斗租户预配到何处,从性能的角度来看,漏斗都不受限制。 由于基于漏斗的方法中漏斗租户和区域租户之间的额外重定向,因此会遇到性能损失。
在基于区域的方法中,由于每个用户被定向到其最本地的 Azure AD B2C,因此所有登录的用户的性能都是一致的。
区域性租户将对目录存储执行目录调用,目录存储是基于漏斗的体系结构和基于区域的体系结构中都存在的唯一区域化组件。
仅当用户在注册的其他区域中执行身份验证时,才会遇到额外的延迟。 这是因为,调用将跨区域进行以到达其配置文件所在的目录存储,从而完成身份验证。