你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
在开始之前,请使用此页面顶部的 “选择策略类型 选择器”来选择要设置的策略类型。 Azure Active Directory B2C 提供了两种定义用户如何与应用程序交互的方法:通过预定义的用户流,或者通过可完全配置的自定义策略。 对于每种方法,本文中所需的步骤都不同。
注释
在 Azure Active Directory B2C 中,自定义策略 主要用于解决复杂场景。 对于大多数场景,我们建议您使用内置的用户流。 如果未这样做,请通过 Active Directory B2C 中的自定义策略入门来了解自定义策略初学者包。
先决条件
- 创建用户流,以便用户能够注册并登录应用程序。
- 注册 Web 应用程序。
- 完成 Active Directory B2C 中的自定义策略入门中的步骤。 本教程指导你如何更新自定义策略文件以使用 Azure AD B2C 租户配置。
- 注册 Web 应用程序。
创建应用程序
若要在 Azure AD B2C 中为具有 X 帐户的用户启用登录,需要创建 X 应用程序。 如果还没有 X 帐户,可以注册 。https://x.com/signup
还需要 申请开发人员帐户。 有关详细信息,请参阅 “申请访问”。
- 使用 X 帐户凭据登录到 X 开发人员门户 。
- 选择 “+ 创建项目 ”按钮。
- 在 “项目名称 ”选项卡下,输入项目的首选名称,然后选择“ 下一步 ”按钮。
- 在 “用例 ”选项卡下,选择首选用例,然后选择“ 下一步”。
- 在 “项目说明 ”选项卡下,输入项目说明,然后选择“ 下一步 ”按钮。
- 在 “应用名称 ”选项卡下,输入应用的名称,例如 azureadb2c,然后选择“ 下一步 ”按钮。
- 在 “密钥和令牌 ”选项卡下,复制 API 密钥 和 API 密钥机密的值。 稍后将使用这些项进行配置。
- 选择 “应用设置” 以打开应用设置。
- 在页面的下半部分,在 “用户身份验证设置”下,选择“ 设置”。
- 在 “应用类型”下,选择适当的应用类型,例如 Web 应用。
- 在 “应用信息”下:
- 对于“回叫 URL/重定向 URL”,输入
https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/your-policy-id/oauth1/authresp
。 如果使用 自定义域,请输入https://your-___domain-name/your-tenant-name.onmicrosoft.com/your-user-flow-Id/oauth1/authresp
。 输入租户名称和用户流 ID 时,请使用所有小写字母,即使它们在 Azure AD B2C 中使用大写字母定义也是如此。 取代:-
your-tenant-name
替换为租户的名称。 -
your-___domain-name
替换为自定义域。 -
your-policy-id
替换为用户流的标识符。 例如,b2c_1a_signup_signin_x
。
-
- 对于 网站 URL,请输入
https://your-tenant.b2clogin.com
。 将your-tenant
替换为租户的名称。 例如,https://contosob2c.b2clogin.com
。 如果使用 自定义域,请输入https://your-___domain-name
。 - (可选)输入 服务条款的 URL,例如
http://www.contoso.com/tos
。 策略 URL 是你为应用程序继续提供条款和条件的页面。 - (可选)输入 隐私策略的 URL,例如
http://www.contoso.com/privacy
。 策略 URL 是继续提供应用程序的隐私信息的页面。
- 对于“回叫 URL/重定向 URL”,输入
- 选择“保存”。
- 使用 X 帐户凭据登录到 X 开发人员门户 。
- 选择 “+ 创建项目 ”按钮。
- 在 “项目名称 ”选项卡下,输入项目的首选名称,然后选择“ 下一步 ”按钮。
- 在 “用例 ”选项卡下,选择首选用例,然后选择“ 下一步”。
- 在 “项目说明 ”选项卡下,输入项目说明,然后选择“ 下一步 ”按钮。
- 在 “应用名称 ”选项卡下,输入应用的名称,例如 azureadb2c,然后选择“ 下一步 ”按钮。
- 在 “密钥和令牌 ”选项卡下,复制 API 密钥 和 API 密钥密钥 的值供以后使用。 在 Azure AD B2C 租户中,使用这两者将 X 配置为标识提供者。
- 选择 “应用设置” 以打开应用设置。
- 在页面的下半部分,在 “用户身份验证设置”下,选择“ 设置”。
- 在 “应用类型”下,选择适当的应用类型,例如 Web 应用。
- 在 “应用信息”下:
- 对于“回叫 URL/重定向 URL”,输入
https://your-tenant.b2clogin.com/your-tenant-name.onmicrosoft.com/your-user-flow-name/oauth1/authresp
。 如果使用 自定义域,请输入https://your-___domain-name/your-tenant-name.onmicrosoft.com/your-user-flow-Id/oauth1/authresp
。 输入租户名称和用户流 ID 时,请使用所有小写字母,即使它们在 Azure AD B2C 中使用大写字母定义也是如此。 取代:-
your-tenant-name
替换为租户的名称。 -
your-___domain-name
替换为自定义域。 -
your-user-flow-name
替换为用户流的标识符。 例如,b2c_1_signup_signin_x
。
-
- 对于 网站 URL,请输入
https://your-tenant.b2clogin.com
。 将your-tenant
替换为租户的名称。 例如,https://contosob2c.b2clogin.com
。 如果使用 自定义域,请输入https://your-___domain-name
。 - 输入 服务条款的 URL,例如
http://www.contoso.com/tos
。 策略 URL 是你为应用程序继续提供条款和条件的页面。 - 输入 隐私策略的 URL,例如
http://www.contoso.com/privacy
。 策略 URL 是继续提供应用程序的隐私信息的页面。
- 对于“回叫 URL/重定向 URL”,输入
- 选择“保存”。
将 X 配置为标识提供者
- 使用至少具有外部标识提供者管理员权限的帐户登录到 Azure 门户。
- 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
- 选择 Azure 门户左上角的“所有服务” ,搜索并选择 Azure AD B2C。
- 选择 “标识提供者”,然后选择 “Twitter”。
- 输入“名称”。 例如, X。
- 对于 客户端 ID,输入前面创建的 X 应用程序的 API 密钥 。
- 对于 客户端密码,请输入你记录的 API 密钥机密 。
- 选择“保存”。
将 X 标识提供者添加到用户流
此时,X 标识提供者已设置,但还不能在任何登录页中使用。 若要将 X 标识提供者添加到用户流,请执行以下作:
- 在 Azure AD B2C 租户中,选择“用户流” 。
- 选择要将 X 标识提供者添加到的用户流。
- 在 社交标识提供者下,选择 Twitter。
- 选择“保存”。
测试用户流
- 若要测试策略,请选择“运行用户流”。
- 对于“应用程序”,请选择前面已注册的名为“testapp1”的 Web 应用程序。 “回复 URL”应显示为
https://jwt.ms
。 - 选择“运行用户流”按钮。
- 在注册或登录页中,选择 Twitter 以使用 X 帐户登录。
创建策略密钥
需要在 Azure AD B2C 租户中存储之前为 X 应用记录的秘密密钥。
- 登录到 Azure 门户。
- 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
- 在 Azure 门户中,搜索并选择 Azure AD B2C。
- 在左侧菜单中的“ 策略”下,选择“ 标识体验框架”。
- 选择“策略密钥”,然后选择“添加”。
- 对于“选项”,选择 。
Manual
- 输入策略密钥的名称。 例如,
XSecret
。 前缀B2C_1A_
会自动添加到密钥名称。 - 对于 机密,请输入之前记录的 API 密钥机密 值。
- 在“密钥用法”处选择 。
- 单击 “创建” 。
将 X 配置为标识提供者
要使用户能够使用 X 帐户登录,需将该帐户定义为 Azure AD B2C 可通过终结点与之通信的声明提供程序。 该终结点将提供一组声明,Azure AD B2C 使用这些声明来验证特定的用户是否已完成身份验证。
可以将 X 帐户定义为声明提供程序,方法是将其添加到策略扩展文件中的 ClaimsProviders 元素。 请参阅本文的先决条件中下载的自定义策略起始包。
打开 TrustFrameworkExtensions.xml。
找到 ClaimsProviders 元素。 如果该元素不存在,请在根元素下添加它。
添加一个新的 ClaimsProvider,如下所示:
<ClaimsProvider> <Domain>x.com</Domain> <DisplayName>X</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="Twitter-OAuth1"> <DisplayName>X</DisplayName> <Protocol Name="OAuth1" /> <Metadata> <Item Key="ProviderName">Twitter</Item> <Item Key="authorization_endpoint">https://api.twitter.com/oauth/authenticate</Item> <Item Key="access_token_endpoint">https://api.twitter.com/oauth/access_token</Item> <Item Key="request_token_endpoint">https://api.twitter.com/oauth/request_token</Item> <Item Key="ClaimsEndpoint">https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true</Item> <Item Key="ClaimsResponseFormat">json</Item> <Item Key="client_id">Your X application API key</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_TwitterSecret" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="user_id" /> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="screen_name" /> <OutputClaim ClaimTypeReferenceId="email" /> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="twitter.com" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
将 client_id 的值替换为之前记录的 API 密钥 。
保存文件。
添加用户旅程
此时,标识提供者已设置,但还不能在任何登录页中使用。 如果你没有自己的自定义用户旅程,请创建现有模板用户旅程的副本,否则,请继续执行下一步。
- 打开初学者包中的 TrustFrameworkBase.xml 文件。
- 找到并复制包含 的
Id="SignUpOrSignIn"
元素的完整内容。 - 打开 TrustFrameworkExtensions.xml 并找到 UserJourneys 元素。 如果该元素不存在,请添加一个。
- 将您复制的 UserJourney 元素的完整内容粘贴到 UserJourneys 元素下作为其子项。
- 对用户旅程的 ID 进行重命名。 例如,
Id="CustomSignUpSignIn"
。
将标识提供者添加到用户旅程
现在你已拥有用户旅程,请将新的身份提供者添加到用户旅程中。 首先添加一个“登录”按钮,然后将该按钮链接到某个操作。 该操作是前面创建的技术配置文件。
在用户旅程中,查找包含
Type="CombinedSignInAndSignUp"
或Type="ClaimsProviderSelection"
的业务流程步骤元素。 通常这是第一个编排步骤。 ClaimsProviderSelections 元素包含用户可以用来登录的标识提供者列表。 元素的顺序将决定向用户显示的登录按钮的顺序。 添加ClaimsProviderSelection XML 元素。 将 TargetClaimsExchangeId 的值设置为易记名称。在下一个编排步骤中,添加 ClaimsExchange 元素。 将 ID 设为目标声明交换 ID 的值。将 TechnicalProfileReferenceId 的值更新为先前创建的技术配置文件的 ID。
下面的 XML 演示了使用标识提供者进行用户旅程的前两个业务流程步骤:
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="TwitterExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="TwitterExchange" TechnicalProfileReferenceId="Twitter-OAuth1" />
</ClaimsExchanges>
</OrchestrationStep>
配置信赖方策略
信赖方策略(例如 SignUpSignIn.xml)指定 Azure AD B2C 将执行的用户旅程。 在信赖方内查找 DefaultUserJourney 元素。 更新 ReferenceId,使其与已在其中添加标识提供者的用户旅程 ID 匹配。
在以下示例中,对于 CustomSignUpSignIn
用户旅程,将 ReferenceId 设置为 CustomSignUpSignIn
:
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
上传自定义策略
- 登录到 Azure 门户。
- 在门户工具栏中选择“目录 + 订阅”图标,然后选择包含 Azure AD B2C 租户的目录。
- 在 Azure 门户中,搜索并选择 Azure AD B2C。
- 在“策略”下,选择“Identity Experience Framework”。
- 选择“上传自定义策略”,然后上传已更改的两个策略文件,其顺序为:先上传扩展策略(例如 ),然后上传信赖方策略(例如
TrustFrameworkExtensions.xml
)。
测试自定义策略
- 选择依赖方策略,例如
B2C_1A_signup_signin
。 - 对于应用程序,请选择您前面注册的 Web 应用程序。 “回复 URL”应显示为
https://jwt.ms
。 - 选择“立即运行”按钮。
- 在注册或登录页中,选择 Twitter 以使用 X 帐户登录。
如果登录过程成功,浏览器将重定向到 https://jwt.ms
,后者显示 Azure AD B2C 返回的令牌内容。