Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
开始之前,请使用此页顶部的“选择策略类型”选择器来选择要设置的策略类型。 Azure Active Directory B2C 提供了两种定义用户如何与应用程序交互的方法:通过预定义的用户流,或者通过可完全配置的自定义策略。 对于每种方法,本文中所需的步骤都不同。
注意
此功能目前以公共预览版提供。
先决条件
- 创建用户流,以便用户能够注册并登录应用程序。
- 注册 Web 应用程序。
- 完成 Active Directory B2C 中的自定义策略入门中的步骤。 本教程指导你如何更新自定义策略文件以使用 Azure AD B2C 租户配置。
- 注册 Web 应用程序。
- 在 https://kf.qq.com 处获取已批准的微信开放平台帐户。
- 在微信开放平台中获取已批准的应用程序。
创建 WeChat 应用程序
若要在 Azure Active Directory B2C (Azure AD B2C) 中为使用微信帐户的用户启用登录,你需要在微信管理中心创建应用程序。 如果你还没有微信开放平台帐户,可以在 https://kf.qq.com 处获取信息。 微信开放平台帐户和应用程序必须被批准,然后才能将 WeChat 作为标识提供者链接到你的用户流。
注册微信应用程序
- 使用微信凭据登录 https://open.weixin.qq.com/。
- 选择“管理中心”(management center)。
- 按照步骤注册新应用程序。
- 在“开发信息”部分中,将“授权回调域”设置为 。
your-tenant-name.b2clogin.cn - 确保应用程序状态为“已批准”。
- 在“应用程序详细信息”顶部,复制“APP ID”和“APP KEY”。 要将标识提供者配置到你的租户中,这两项都需要。
将微信配置为身份提供商
使用至少具有外部标识提供者管理员权限的帐户登录到 Azure 门户。
如果你可以访问多个租户,请在顶部菜单中选择设置图标,然后在目录 + 订阅菜单中切换到你的 Azure AD B2C 租户。
选择 Azure 门户左上角的“所有服务”,搜索并选择 Azure AD B2C。
选择“标识提供者”,然后选择“微信(预览)”。
输入 名称。 例如,WeChat。
对于客户端 ID,输入你之前创建的 WeChat 应用程序的应用 ID。
对于客户端密码,输入你记录的应用密钥。
选择“保存”。
将“微信”标识提供者添加到用户流
在 Azure AD B2C 租户中,选择“用户流” 。
单击要添加“微信”标识提供者的用户流。
在“社交标识提供者”下,选择“微信”。
选择“保存”。
若要测试策略,请选择“运行用户流”。
对于“应用程序”,请选择前面已注册的名为“testapp1”的 Web 应用程序。 回复 URL应显示为
https://jwt.ms。选择“运行用户流”按钮。
在注册或登录页上,选择“微信”以使用微信帐户登录。
如果登录过程是成功的,则你的浏览器会被重定向到 https://jwt.ms,其中显示 Azure AD B2C 返回的令牌内容。
创建策略密钥
你需要存储前面在 Azure AD B2C 租户中记录的客户端机密。
- 登录 Azure 门户。
- 如果你有权访问多个租户,请在顶部菜单中选择“设置”图标,然后在“目录 + 订阅”菜单中切换到你的 Azure AD B2C 租户。
- 选择 Azure 门户左上角的“所有服务”,然后搜索并选择“Azure AD B2C” 。
- 在“概述”页上选择“标识体验框架”。
- 选择“策略密钥”,然后选择“添加”。
- 对于选项,选择
Manual。 - 输入策略密钥的名称。 例如,
WeChatSecret。 前缀B2C_1A_会自动添加到您的密钥名称前。 - 在“机密”中,输入前面记录的应用程序机密。
- 对于密钥用法,请选择
Signature。 - 单击“创建”。
将微信配置为身份提供商
要使用户能够使用微信帐户登录,需将该帐户定义为一个声明提供程序,以便 Azure AD B2C 可通过终结点与其通信。 该终结点将提供一组声明,Azure AD B2C 使用这些声明来验证特定的用户是否已完成身份验证。
可以通过将微信账户添加到策略扩展文件中的 ClaimsProviders 元素,将其定义为声明提供程序。
打开 TrustFrameworkExtensions.xml。
找到 ClaimsProviders 元素。 如果该元素不存在,请在根元素下添加它。
按如下所示添加一个新的 ClaimsProvider:
<ClaimsProvider> <Domain>wechat.com</Domain> <DisplayName>WeChat (Preview)</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="WeChat-OAuth2"> <DisplayName>WeChat</DisplayName> <Protocol Name="OAuth2" /> <Metadata> <Item Key="ProviderName">wechat</Item> <Item Key="authorization_endpoint">https://open.weixin.qq.com/connect/qrconnect</Item> <Item Key="AccessTokenEndpoint">https://api.weixin.qq.com/sns/oauth2/access_token</Item> <Item Key="ClaimsEndpoint">https://api.weixin.qq.com/sns/userinfo</Item> <Item Key="scope">snsapi_login</Item> <Item Key="HttpBinding">GET</Item> <Item Key="AccessTokenResponseFormat">json</Item> <Item Key="ClientIdParamName">appid</Item> <Item Key="ClientSecretParamName">secret</Item> <Item Key="ExtraParamsInAccessTokenEndpointResponse">openid</Item> <Item Key="ExtraParamsInClaimsEndpointRequest">openid</Item> <Item Key="ResponseErrorCodeParamName">errcode</Item> <Item Key="external_user_identity_claim_id">unionid</Item> <Item Key="client_id">Your WeChat application ID</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_WeChatSecret" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="UserId" PartnerClaimType="unionid" /> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="wechat.com" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>将 client_id 设置为应用程序注册中的应用程序 ID。
保存文件。
添加用户旅程
此时,身份提供商已设置完毕,但尚未在任何登录页面中可用。 如果你没有自己的自定义用户旅程,请创建现有模板用户旅程的副本,否则,请继续执行下一步。
- 打开初学者包中的 TrustFrameworkBase.xml 文件。
- 找到包含
Id="SignUpOrSignIn"的 UserJourney 元素,并复制其全部内容。 - 打开 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="WeChatExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="WeChatExchange" TechnicalProfileReferenceId="WeChat-OAuth2" />
</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。 - 对于“Application”,请选择您之前注册的一个 Web 应用程序。
回复 URL应显示
https://jwt.ms。 - 选择“立即运行”按钮。
- 在注册或登录页上,选择“微信”以使用微信帐户登录。
如果登录过程是成功的,则你的浏览器会被重定向到 https://jwt.ms,其中显示 Azure AD B2C 返回的令牌内容。