教程:在 Azure Active Directory B2C 中创建用户流和自定义策略

重要

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

开始之前,请使用此页顶部的“选择策略类型”选择器来选择要设置的策略类型。 Azure Active Directory B2C 提供了两种定义用户如何与应用程序交互的方法:通过预定义的用户流,或者通过可完全配置的自定义策略。 对于每种方法,本文中所需的步骤都不同。

在应用程序中,你可能具有允许用户注册、登录或管理其配置文件的用户流。 可以在 Azure Active Directory B2C (Azure AD B2C) 租户中创建多种类型的用户流,并根据需要在应用程序中使用它们。 可以在应用程序之间重复使用用户流。

用户流使你能够确定用户在执行登录、注册、编辑配置文件或重置密码等作时如何与应用程序交互。 在这篇文章中,你将学会如何:

自定义策略 是定义 Azure Active Directory B2C (Azure AD B2C) 租户行为的配置文件。 在这篇文章中,你将学会如何:

  • 创建注册和登录用户流
  • 启用自助密码重置
  • 创建配置文件编辑用户流

重要

我们更改了引用用户流版本的方式。 以前,我们提供了 V1(生产就绪)版本,V1.1 和 V2(预览版)版本。 现在,我们已将用户流整合为两个版本:推荐用户流,包含最新功能,以及标准(旧版)用户流。 所有旧版预览版用户流(V1.1 和 V2)均已弃用。 有关详细信息,请参阅 Azure AD B2C 中的用户流版本这些更改仅适用于 Azure 公有云。 其他环境将继续使用 旧用户流版本控制

先决条件

创建注册和登录用户流

注册和登录用户流通过单个配置处理这两种体验。 应用程序的用户根据上下文被引导到正确的路径。 若要创建注册和登录用户流,请执行以下作:

  1. 登录到 Azure 门户

  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Azure AD B2C 租户。

  3. 在 Azure 门户中,搜索并选择“Azure AD B2C”

  4. 在“ 策略”下,选择 “用户流”,然后选择“ 新建用户流”。

    Azure 门户中“用户流”页的屏幕截图,其中突出显示了“新建用户流”按钮。

  5. 在“创建用户流”页面上,选择“注册和登录”用户流 。

    Azure 门户中的“选择用户流”页的屏幕截图,其中突出显示了“注册和登录流”。

  6. “选择版本”下,选择“ 建议”,然后选择“ 创建”。 (详细了解用户流版本。)

    在 Azure 门户中创建用户流页,其中突出显示了属性

  7. 输入该用户流的名称。 例如 signupsignin1

  8. 对于 标识提供者,请选择 “电子邮件注册”。

  9. 对于 用户属性和令牌声明,请在注册期间选择要从用户收集和发送的声明和属性。 例如,选择“显示更多”,然后选择“国家/地区”、“显示名称”和“邮政编码”的属性和声明。 选择“确定”

    Azure 门户中属性和声明选择页的屏幕截图,其中已选中并突出显示了三个声明。

  10. 选择“ 创建 ”以添加用户流。 B2C_1_前缀自动追加到前面输入的名称。 例如 B2C_1_signupsignin1。

测试用户流

  1. 从“ 用户流 ”页中,选择刚刚创建的用户流以打开其概述页。

  2. 在用户流概述页面顶部,选择“ 运行用户流”。 将在页面右侧打开一个窗格。

  3. 对于 应用程序,请选择要测试的 Web 应用程序,例如名为 webapp1 的 Web 应用程序。 “回复 URL”应显示为 https://jwt.ms

  4. 选择 “运行用户流”,然后选择“ 立即注册”。

    Azure 门户的“运行用户流”页的屏幕截图,其中突出显示了“运行用户流”按钮、“应用程序”文本框和“回复 URL”文本框。

  5. 输入有效的电子邮件地址,选择 “发送验证码”,输入收到的验证码,然后选择“ 验证码”。

  6. 输入新密码并确认。

  7. 选择国家/地区,输入要显示的名称,输入邮政编码,然后选择“ 创建”。 令牌将返回到 https://jwt.ms,并且应该会显示在浏览器中。

  8. 现在可以再次运行用户流,并且应该能够使用刚刚创建的帐户登录。 返回的令牌包含所选国家/地区、名称和邮政编码的声明。

注释

“运行用户流”体验当前与使用授权代码流的 SPA 回复 URL 类型不兼容。 若要使用这些类型的应用使用“运行用户流”体验,请注册类型为“Web”的回复 URL 并启用隐式流。

启用自助密码重置

若要为注册或登录用户流启用 自助密码重置 ,请执行以下作:

  1. 从“ 用户流 ”页中,选择刚刚创建的注册或登录用户流。
  2. 在左侧菜单中的 “设置” 下,选择“ 属性”。
  3. “密码配置”下,选择 “自助密码重置”。
  4. 选择“保存”

测试用户流

  1. 从“ 用户流 ”页中,选择刚刚创建的用户流以打开其概述页,然后选择“ 运行用户流”。
  2. 对于 应用程序,请选择要测试的 Web 应用程序,例如名为 webapp1 的 Web 应用程序。 “回复 URL”应显示为 https://jwt.ms
  3. 选择运行用户流
  4. 在注册或登录页中,选择“ 忘记密码?”
  5. 验证之前创建的帐户的电子邮件地址,然后选择“ 继续”。
  6. 现在,你有机会更改用户的密码。 更改密码,然后选择“ 继续”。 令牌将返回到 https://jwt.ms ,并应在浏览器中显示。

创建配置文件编辑用户流

如果要让用户在应用程序中编辑其个人资料,请使用个人资料编辑用户流。

  1. 在 Azure AD B2C 租户概述页的菜单中,选择 “用户流”,然后选择“ 新建用户流”。
  2. “创建用户流 ”页上,选择 配置文件编辑 用户流。
  3. “选择版本”下,选择“ 建议”,然后选择“ 创建”。
  4. 输入该用户流的名称。 例如 profileediting1
  5. 对于 标识提供者,请在 “本地帐户”下选择 “电子邮件注册”。
  6. 对于 用户属性,请选择希望客户能够在其配置文件中编辑的属性。 例如,选择“ 显示更多”,然后选择 “显示名称 ”和 “职务”的属性和声明。 选择“确定”
  7. 选择“ 创建 ”以添加用户流。 B2C_1_前缀会自动追加到名称中。

测试用户流

  1. 选择要创建的用户流以打开其概述页。
  2. 在用户流概述页面顶部,选择“ 运行用户流”。 将在页面右侧打开一个窗格。
  3. 对于 应用程序,请选择要测试的 Web 应用程序,例如名为 webapp1 的 Web 应用程序。 “回复 URL”应显示为 https://jwt.ms
  4. 选择 “运行用户流”,然后使用之前创建的帐户登录。
  5. 现在,你有机会更改用户的显示名称和职务。 选择继续。 令牌将返回到 https://jwt.ms ,并应在浏览器中显示。

小提示

本文介绍了如何手动设置租户。 可以从本文自动完成整个过程。 自动化将部署 Azure AD B2C SocialAndLocalAccountsWithMFA 入门包,该包将提供注册和登录、密码重置和配置文件编辑功能流程。 若要自动执行以下演练,请访问 IEF 设置应用 并按照说明进行操作。

为标识体验框架应用程序添加签名和加密密钥

  1. 登录到 Azure 门户
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Azure AD B2C 租户。
  3. 在 Azure 门户中,搜索并选择“Azure AD B2C”
  4. 在概述页上,在 策略下,选择 标识体验框架

创建签名密钥

  1. 选择“策略密钥”,然后选择“添加”
  2. 对于“选项”,请选择 Generate
  3. “名称”中,输入 TokenSigningKeyContainer。 前缀B2C_1A_可能会自动添加。
  4. 对于 密钥类型,请选择 “RSA”。
  5. 对于“密钥用法”,请选择“签名”
  6. 选择 创建

创建加密密钥

  1. 选择“策略密钥”,然后选择“添加”
  2. 对于“选项”,请选择 Generate
  3. “名称”中,输入 TokenEncryptionKeyContainer。 可能会自动添加前缀 B2C_1A_。
  4. 对于 密钥类型,请选择 “RSA”。
  5. 对于 密钥使用情况,请选择“ 加密”。
  6. 选择 创建

注册身份体验框架应用程序

Azure AD B2C 要求注册两个应用程序,用于使用本地帐户注册和登录用户: IdentityExperienceFramework、Web API 和 ProxyIdentityExperienceFramework,这是一个对 IdentityExperienceFramework 应用具有委派权限的本机应用。 用户可以使用电子邮件地址或用户名和密码注册,以访问注册到租户的应用程序,这会创建“本地帐户”。本地帐户仅存在于 Azure AD B2C 租户中。

只需在 Azure AD B2C 租户中注册这两个应用程序一次。

注册 IdentityExperienceFramework 应用程序

若要在 Azure AD B2C 租户中注册应用程序,可以使用 应用注册 体验。

  1. 选择“应用注册”,然后选择“新建注册”
  2. 输入 作为“名称”IdentityExperienceFramework
  3. 在“支持的帐户类型”下,选择“仅此组织目录中的帐户”。
  4. “重定向 URI”下,选择 “Web”,然后在 https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com 中输入作为 Azure AD B2C 租户域名的 your-tenant-name
  5. 在“权限”下,选择“授予对 openid 和 office_access 权限的管理员许可”复选框。
  6. 选择“注册”。
  7. 记录“应用程序(客户端) ID”,以便在后续步骤中使用。

接下来,通过添加范围公开 API:

  1. 在左侧菜单中的“管理”下,选择“公开 API” 。
  2. 选择添加范围,然后选择保存并继续以接受默认应用程序 ID URI。
  3. 输入以下值以创建允许在 Azure AD B2C 租户中执行自定义策略的范围:
    • 范围名称user_impersonation
    • 管理员许可显示名称Access IdentityExperienceFramework
    • 管理员许可说明Allow the application to access IdentityExperienceFramework on behalf of the signed-in user.
  4. 选择“添加范围

注册 ProxyIdentityExperienceFramework 应用程序

  1. 选择“应用注册”,然后选择“新建注册”
  2. 输入 作为“名称”ProxyIdentityExperienceFramework
  3. 在“支持的帐户类型”下,选择“仅此组织目录中的帐户”。
  4. “重定向 URI”下,使用下拉列表选择“公共客户端/本地(移动和桌面)”
  5. 对于 重定向 URI,请输入 myapp://auth
  6. 在“权限”下,选择“授予对 openid 和 office_access 权限的管理员许可”复选框。
  7. 选择“注册”。
  8. 记录“应用程序(客户端) ID”,以便在后续步骤中使用。

接下来,指定应将应用程序视为公共客户端:

  1. 在左侧菜单中的“管理”下,选择“身份验证” 。
  2. “高级设置”下,在 “允许公共客户端流 ”部分中,将 “启用以下移动和桌面流 ”设置为 “是”。
  3. 选择“保存”
  4. 确保 “isFallbackPublicClient”:true 在应用程序清单中设置:
    1. 在左侧菜单中的“ 管理”下,选择“ 清单 ”以打开应用程序清单。
    2. Microsoft Graph 应用清单(新) 选项卡切换到 AAD Graph 应用清单(即将弃用) 选项卡。
    3. 查找 isFallbackPublicClient 键并确保其值设置为 true

现在,向前面在 IdentityExperienceFramework 注册中公开的 API 范围授予权限:

  1. 在左侧菜单中的“ 管理”下,选择 API 权限
  2. 在“已配置权限”下,选择“添加权限”。
  3. 选择 组织使用的 API 选项卡,然后选择 IdentityExperienceFramework 应用程序。
  4. “权限”下,选择前面定义的 user_impersonation 范围。
  5. 选择“添加权限”。 按照指示等待几分钟,然后继续下一步。
  6. 选择“向 < 授予管理员同意”。>
  7. 选择
  8. 选择“刷新”,然后验证范围的“状态”下是否均显示“已授予...”

自定义策略入门包

自定义策略是一组 XML 文件,您上传到 Azure AD B2C 租户,用于定义技术配置和用户流程。 我们提供了新手包,其中有多个预建策略来帮助你快速入门。 每个新手包中都有实现所述方案必需的最少数量的技术配置文件和用户旅程。 有关 Azure AD B2C 自定义策略的更深入指南,请遵循我们的 自定义策略作指南系列

  • LocalAccounts - 仅限使用本地帐户。
  • SocialAccounts - 仅允许使用社交帐户(或联合帐户)。
  • SocialAndLocalAccounts - 启用本地帐户和社交帐户的使用。
  • SocialAndLocalAccountsWithMFA - 启用社交、本地和多重身份验证选项。

每个初学者包都包含:

  • 基文件 - 基文件只需要进行少量修改。 示例: TrustFrameworkBase.xml
  • 本地化文件 - 此文件是进行本地化更改的位置。 示例: TrustFrameworkLocalization.xml
  • 扩展文件 - 此文件是进行大多数配置更改的地方。 示例: TrustFrameworkExtensions.xml
  • 信赖方文件 - 应用程序调用的任务特定文件。 示例: SignUpOrSignin.xmlProfileEdit.xmlPasswordReset.xml

在本文中,你将在 SocialAndLocalAccounts 初学者包中编辑 XML 自定义策略文件。 如果需要 XML 编辑器,请尝试使用轻型跨平台编辑器 Visual Studio Code

获取入门套装

从 GitHub 获取自定义策略初学者包,然后使用 Azure AD B2C 租户名称更新 SocialAndLocalAccounts 初学者包中的 XML 文件。

  1. 下载 .zip 文件 或克隆存储库:

    git clone https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack
    
  2. SocialAndLocalAccounts 目录中的所有文件中,将字符串 yourtenant 替换为 Azure AD B2C 租户的名称。

    例如,如果 B2C 租户的名称为 contosotenant,则 的所有实例都将变为 yourtenant.onmicrosoft.comcontosotenant.onmicrosoft.com

将应用程序 ID 添加到自定义策略

将应用程序 ID 添加到扩展文件 TrustFrameworkExtensions.xml

  1. 打开 SocialAndLocalAccounts/TrustFrameworkExtensions.xml 并查找元素 <TechnicalProfile Id="login-NonInteractive">
  2. IdentityExperienceFrameworkAppId 的两个实例替换为前面创建的 IdentityExperienceFramework 应用程序的 ID。
  3. ProxyIdentityExperienceFrameworkAppId 的两个实例替换为前面创建的 ProxyIdentityExperienceFramework 应用程序的 ID。
  4. 保存文件。

将 Facebook 添加为标识提供者

SocialAndLocalAccounts 初学者包包括 Facebook 社交登录。 使用自定义策略不需要 Facebook,但我们在此处使用它来演示如何在自定义策略中启用联合社交登录。 如果不需要启用联合社交登录,请改用 LocalAccounts 初学者包,并跳到“ 上传策略 ”部分。

创建 Facebook 应用程序

使用 “创建 Facebook 应用程序” 中所述的步骤获取 Facebook 应用 ID应用机密。 跳过文章《设置 Facebook 帐户注册和登录》中的先决条件及其他步骤。

创建 Facebook 密钥

将 Facebook 应用程序 的应用机密 添加为策略密钥。 可将你创建的应用程序的应用机密设为本文先决条件的一部分。

  1. 登录到 Azure 门户
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Azure AD B2C 租户。
  3. 在 Azure 门户中,搜索并选择“Azure AD B2C”
  4. 在概述页上,在 策略下,选择 标识体验框架
  5. 选择“策略密钥”,然后选择“添加”
  6. 对于“选项”,请选择 Manual
  7. 输入 作为“名称”FacebookSecret。 前缀B2C_1A_可能会自动添加。
  8. Secret 中,输入您在 developers.facebook.com 上的 Facebook 应用程序的 App Secret。 此值是机密,而不是应用程序 ID。
  9. 对于“密钥用法”,请选择“签名”
  10. 选择 创建

在自定义策略入门包中更新 TrustFrameworkExtensions.xml

SocialAndLocalAccounts/TrustFrameworkExtensions.xml 文件中,将该值 client_id 替换为 Facebook 应用程序 ID 并保存更改。

<TechnicalProfile Id="Facebook-OAUTH">
  <Metadata>
  <!--Replace the value of client_id in this technical profile with the Facebook app ID"-->
    <Item Key="client_id">00000000000000</Item>

上传政策文件

  1. 在 Azure 门户中的 B2C 租户中选择 “标识体验框架 ”菜单项。
  2. 选择“上传自定义策略”
  3. 按此顺序上传策略文件:
    1. TrustFrameworkBase.xml
    2. TrustFrameworkLocalization.xml
    3. TrustFrameworkExtensions.xml
    4. SignUpOrSignin.xml
    5. ProfileEdit.xml
    6. PasswordReset.xml

上传文件时,Azure 会将前缀添加到每个文件 B2C_1A_

小提示

如果 XML 编辑器支持验证,请根据 TrustFrameworkPolicy_0.3.0.0.xsd 位于初学者包根目录中的 XML 架构验证文件。 XML 架构验证在上传之前标识错误。

测试自定义策略

  1. “自定义策略”下,选择 B2C_1A_signup_signin
  2. 对于自定义策略的概述页上 的“选择应用程序 ”,请选择要测试的 Web 应用程序,例如名为 webapp1 的 Web 应用程序
  3. 确保 回复 URLhttps://jwt.ms
  4. 选择“立即运行”。
  5. 使用电子邮件地址注册。
  6. 再次选择 立即运行
  7. 使用同一帐户登录,以确认配置正确。
  8. 再次选择 “运行 ”,然后选择 Facebook 以使用 Facebook 登录并测试自定义策略。

后续步骤

在这篇文章中,您学习了如何:

  • 创建注册和登录用户流
  • 创建配置文件编辑用户流
  • 创建密码重置用户流

接下来,了解如何使用 Azure AD B2C 在应用程序中登录和注册用户。 请参考下面链接中的示例应用程序:

还可以在 Azure AD B2C 体系结构深入探讨系列中了解详细信息。