重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
自定义策略是定义 Azure Active Directory B2C (Azure AD B2C) 租户行为的配置文件。 虽然 用户流 在 Azure AD B2C 门户中预定义了最常见的标识任务,但标识开发人员可以编辑自定义策略以完成许多不同的任务。
自定义策略是完全可配置的,并且由策略驱动。 自定义策略协调标准协议中的实体之间的信任。 例如,OpenID Connect、OAuth、SAML 和几个非标准连接,例如基于 REST API 的系统到系统声明交换。 该框架创建用户友好的白标体验。
自定义策略表示为一个或多个 XML 格式的文件,这些文件在分层链中相互引用。 XML 元素定义构建基块、与用户和其他各方的交互以及业务逻辑。
自定义策略入门包
Azure AD B2C 自定义策略 初学者包 附带多个预生成策略,可快速入门。 每个新手包中都有实现所述方案必需的最少数量的技术配置文件和用户旅程:
- LocalAccounts - 仅允许使用本地帐户。
- SocialAccounts - 仅允许使用社交帐户(或联合帐户)。
- SocialAndLocalAccounts - 启用本地帐户和社交帐户的使用。 我们的大多数示例都引用此策略。
- SocialAndLocalAccountsWithMFA - 启用社交、本地和多重身份验证选项。
在 Azure AD B2C 示例 GitHub 存储库中,可以找到多个增强型 Azure AD B2C 自定义 CIAM 用户旅程和方案的示例。 例如,本地帐户策略增强、社交帐户策略增强、MFA 增强、用户界面增强、通用增强功能、应用迁移、用户迁移、条件访问、Web 测试和 CI/CD。
了解基础知识
申请
声明可在 Azure AD B2C 策略执行过程中提供数据的临时存储。 声明更像是编程语言中的变量。 它可以存储有关用户的信息,例如名字、姓氏或任何其他从用户或其他系统获取的声明(声明交换)。 声明架构是你声明内容的位置。
策略运行时,Azure AD B2C 将声明发送给并从内部和外部方接收声明,然后将这些声明的子集作为令牌的一部分发送给依赖方应用程序。 通过以下方式使用声明:
- 针对目录用户对象保存、读取或更新声明。
- 接收到来自外部身份提供者的索赔。
- 声明是使用自定义 REST API 服务发送或接收的。
- 在注册或编辑个人资料流程期间,数据作为用户的声明信息被收集。
操控您的索赔
声明转换是预定义的函数,可用于将给定声明转换为另一个声明、评估声明或设置声明值。 例如,将项添加到字符串集合、更改字符串大小写或计算日期和时间声明。 声明转换指定转换方法,该方法也是预定义的。
自定义和本地化 UI
要通过在用户的 Web 浏览器中显示页面,从用户那里收集信息,请使用自断言技术配置文件。 可编辑自断言技术配置文件来添加声明并自定义用户输入。
若要自定义自申明技术配置文件的用户界面,请在内容定义元素中指定一个包含自定义 HTML 内容的 URL。 在自断言技术配置文件中,指向该内容定义 ID。
若要自定义特定于语言的字符串,请使用 本地化 元素。 内容定义可能包含 本地化 引用,该引用指定要加载的本地化资源列表。 Azure AD B2C 将用户界面元素与从 URL 加载的 HTML 内容合并,然后向用户显示页面。
信赖方策略概述
在 SAML 协议中称为服务提供商的信赖方应用程序调用 信赖方策略 来执行特定的用户旅程。 信赖方策略会指定要执行的用户旅程,以及令牌包含的声明列表。
使用同一策略的所有信赖方应用程序都会收到相同的令牌声明,用户会经历相同的用户旅程。
用户旅程
用户旅程 允许你定义业务逻辑,用户通过该路径获取对应用程序的访问权限。 用户将通过用户旅程检索要提供给应用程序的声明。 用户旅程是通过一系列 协调步骤构建的。 用户必须到达最后一步才能获取令牌。
以下说明介绍了如何将编排步骤添加到 社交帐户和本地帐户入门包 策略中。 下面是已添加的 REST API 调用的示例。
业务流程步骤
编排步骤指的是实现其预期用途或功能的方法。 此方法称为技术配置文件。 当用户旅程需要分支以更好地表示业务逻辑时,编排步骤将引用 子旅程。 子旅程包含自己的一组业务流程步骤。
用户必须到达用户旅程中的最后一个业务流程步骤才能获取令牌。 但用户可能不需要经历所有协调步骤。 业务流程步骤可基于业务流程步骤中定义的前提条件有条件地执行。
业务流程步骤完成后,Azure AD B2C 会将输出的声明存储在 声明包中。 声明包中的声明可由用户旅程中的任何进一步业务流程步骤使用。
下图显示了用户旅程的业务流程步骤如何访问声明包。
技术简介
技术配置文件提供了与不同类型的参与方进行通信的接口。 用户旅程通过业务流程步骤合并调用技术配置文件,以定义业务逻辑。
所有类型的技术配置文件共享相同的概念。 发送输入声明、运行声明转换,并与配置方通信。 完成该过程后,技术配置文件会将输出声明返回到声明包。 有关详细信息,请参阅 技术配置文件概述。
验证技术配置文件
当用户与用户界面交互时,可能需要验证收集的数据。 若要与用户交互,必须使用自断言技术配置文件。
若要验证用户输入,需从自断言技术配置文件中调用验证技术配置文件。 验证技术配置文件是调用任何非交互式技术配置文件的方法。 在此情况下,技术配置文件可能会返回输出声明,也可能会返回错误消息。 错误消息在屏幕上呈现给用户,允许用户重试。
下图说明了 Azure AD B2C 如何使用验证技术配置文件来验证用户凭据。
继承模型
每个 初学者包 包含以下文件:
- 包含大部分定义的 基 文件。 为了帮助对策略进行故障排除和长期维护,请尝试最大程度地减少对此文件所做的更改数。
- 保存本地化字符串的 本地化 文件。 此策略文件派生自基文件。 使用此文件以适应不同的语言以满足你的客户需求。
- 用于保存租户的唯一配置更改的 扩展 文件。 此策略文件派生自本地化文件。 使用此文件可以添加新功能或替代现有功能。 例如,使用此文件可与新的标识提供者联合。
- 信赖方(RP)文件,它是由信赖方应用程序(如 Web、移动或桌面应用程序)直接调用的单一任务重点文件。 每个独特任务(例如注册、登录或个人资料编辑)都需要其独立的信赖方策略文件。 此策略文件派生自扩展文件。
继承模型如下所示:
- 任何级别的子策略可以继承自父策略,并通过添加新元素来扩展父策略。
- 对于更复杂的方案,可以添加更多继承级别(总共最多 10 个)。
- 你可添加更多的信赖方策略。 例如,删除我的帐户、更改电话号码、SAML 信赖方策略等。
下图显示了策略文件和信赖方应用程序之间的关系。
指南和最佳做法
最佳做法
在 Azure AD B2C 自定义策略中,可以集成自己的业务逻辑,以生成所需的用户体验并扩展服务的功能。 我们提供了一组最佳做法和建议,可开始使用。
- 在 扩展策略中创建逻辑,或在 信赖方策略中创建逻辑。 可以添加新元素,通过引用相同的 ID 来替代基本策略。 这种方法允许您扩展项目规模,并在微软发布新的入门包后,更轻松地升级基本策略。
- 在 基本策略中,强烈建议避免进行任何更改。 在必要时,对作出更改的位置进行注释。
- 重写元素(例如技术配置文件元数据)时,请勿从基本策略复制整个技术配置文件。 而是仅复制元素的所需部分。 有关如何进行更改的示例,请参阅 “禁用电子邮件验证 ”。
- 若要减少共享核心功能的技术配置文件重复,请使用技术配置文件包含。
- 避免在登录期间写入 Microsoft Entra 目录,这可能会导致限制问题。
- 如果策略具有外部依赖项(例如 REST API),请确保它们具有高可用性。
- 为了获得更好的用户体验,请确保使用 联机内容交付全局部署自定义 HTML 模板。 Azure 内容分发网络(CDN)可减少加载时间、节省带宽并提高响应速度。
- 如果要更改用户旅程,请将整个用户旅程从基本策略复制到扩展策略。 为已复制的用户旅程提供独一无二的用户旅程 ID。 然后在 信赖方策略中,将 默认用户旅程 元素更改为指向新用户旅程。
故障排除
使用 Azure AD B2C 策略进行开发时,在执行用户旅程时可能会遇到错误或异常。 可使用 Application Insights 来调查这些问题。
- 将 Application Insights 与 Azure AD B2C 集成以 诊断异常。
- 适用于 Visual Studio Code 的 Azure AD B2C 扩展可帮助你基于策略名称和时间访问和可视化日志。
- 设置自定义策略时最常见的错误是设置了不正确的 XML 格式。 在上传 XML 文件之前,使用 XML 架构验证 识别错误。
持续集成
通过使用在 Azure Pipelines 中设置的持续集成和交付(CI/CD)管道,可以在软件交付和代码控制自动化 中包含 Azure AD B2C 自定义策略 。 部署到不同的 Azure AD B2C 环境(例如开发、测试和生产环境)时,建议删除手动过程,并使用 Azure Pipelines 执行自动测试。
准备好你的环境
Azure AD B2C 自定义策略入门:
- 创建 Azure AD B2C 租户
- 使用 Azure 门户注册 Web 应用程序,以便可以测试策略。
- 添加必要的 策略密钥 并 注册标识体验框架应用程序。
- 获取 Azure AD B2C 策略入门包 并上传到您的租户。
- 上传初学者包后, 测试注册或登录策略。
- 建议下载并安装 Visual Studio Code (VS Code)。 Visual Studio Code 是一种轻型但功能强大的源代码编辑器,可在桌面上运行,适用于 Windows、macOS 和 Linux。 使用 VS Code,可以通过安装适用于 VS Code 的 Azure AD B2C 扩展快速浏览和编辑 Azure AD B2C 自定义策略 XML 文件
相关内容
设置并测试 Azure AD B2C 策略后,可以开始自定义策略。 浏览以下文章,了解如何:
- 使用自定义策略添加声明并自定义用户输入。 了解如何通过自定义一些新手包技术配置文件来定义声明并向用户界面添加声明。
- 使用自定义策略自定义应用程序的用户界面。 了解如何创建自己的 HTML 内容并自定义内容定义。
- 使用自定义策略本地化应用程序的用户界面。 了解如何通过添加本地化资源元素来设置支持的语言列表并提供特定于语言的标签。
- 在策略开发和测试期间,可以 禁用电子邮件验证。 了解如何覆盖技术配置文件元数据。
- 使用自定义策略设置 Google 帐户登录。 了解如何使用 OAuth2 技术配置文件创建新的声明提供程序。 然后自定义用户旅程以包含 Google 登录选项。
- 若要诊断自定义策略的问题,可以使用 Application Insights 收集 Azure Active Directory B2C 日志。 了解如何添加新的技术配置文件和配置信赖方策略。
- 若要了解如何从头开始构建自定义策略,请了解如何 在 Azure Active Directory B2C作指南系列中创建和运行自己的自定义策略。