你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure Active Directory B2C 设置通过 Microsoft 帐户注册与登录
开始之前,可以使用“选择策略类型”选择器来选择要设置的策略类型。 Azure Active Directory B2C 提供了两种定义用户如何与应用程序交互的方法:通过预定义的用户流,或者通过可完全配置的自定义策略。 对于每种方法,本文中所需的步骤都不同。
注意
在 Azure Active Directory B2C 中,自定义策略主要用于解决复杂的情况。 在大多数情况下,建议你使用内置用户流。 如果尚未这样做,请从 Active Directory B2C 中的自定义策略入门了解自定义策略新手包。
必备条件
- 创建用户流,以便用户能够注册并登录应用程序。
- 注册 Web 应用程序。
创建 Microsoft 帐户应用程序
要在 Azure Active Directory B2C (Azure AD B2C) 中为使用 Microsoft 帐户的用户启用登录,需要在 Azure 门户中创建应用程序。 有关详细信息,请参阅将应用程序注册到 Microsoft 标识平台。 如果还没有 Microsoft 帐户,可以在 https://www.live.com/ 获取。
登录 Azure 门户。
如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Microsoft Entra ID 租户。
选择 Azure 门户左上角的“所有服务”,然后搜索并选择“应用注册” 。
选择“新注册”。
输入应用程序的名称。 例如,MSAapp1。
在“支持的帐户类型”下,选择“个人 Microsoft 帐户(例如 Skype、Xbox)”。
有关不同帐户类型选择的详细信息,请参阅快速入门:将应用程序注册到 Microsoft 标识平台。
对于“重定向 URI (可选)”,选择“Web”并输入
https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp
。 如果使用自定义域,请输入https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp
。 将your-tenant-name
替换为你的 Azure AD B2C 租户的名称,将your-domain-name
替换为你的自定义域。选择“注册”
记录应用程序概述页上显示的“应用程序(客户端)ID”。 在下一部分配置标识提供者时,需要此客户端 ID。
选择“证书和机密”
单击“新客户端密码”
为密码输入“说明”,例如“应用程序密码 1”,然后单击“添加”。
记录“值”列中显示的应用程序密码。 在下一部分配置标识提供者时,需要此客户端密码。
将 Microsoft 配置为标识提供者
- 以 Azure AD B2C 租户的全局管理员身份登录 Azure 门户。
- 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Azure AD B2C 租户。
- 选择 Azure 门户左上角的“所有服务” ,搜索并选择 Azure AD B2C。
- 选择“标识提供者”,然后选择“Microsoft 帐户”。
- 输入“名称”。 例如,MSA。
- 对于“客户端 ID”,输入之前创建的 Microsoft Entra 应用程序的应用程序(客户端)ID。
- 对于“客户端密码”,输入已记录的客户端密码。
- 选择“保存”。
将 Microsoft 标识提供者添加到用户流
此时,Microsoft 标识提供者已设置,但还不能在任何登录页中使用。 若要将 Microsoft 标识提供者添加到用户流,请执行以下操作:
- 在 Azure AD B2C 租户中,选择“用户流” 。
- 单击要添加 Microsoft 标识提供者的用户流。
- 在“社交标识提供者”下,选择“Microsoft 帐户”。
- 选择“保存”。
- 若要测试策略,请选择“运行用户流”。
- 对于“应用程序”,请选择前面已注册的名为“testapp1”的 Web 应用程序。 “回复 URL”应显示为
https://jwt.ms
。 - 选择“运行用户流”按钮。
- 在注册或登录页上,选择“Microsoft”以使用 Microsoft 帐户登录。
如果登录过程成功,则浏览器会重定向到 https://jwt.ms
,后者显示 Azure AD B2C 返回的令牌内容。
配置可选声明
如果要从 Microsoft Entra ID 获取 family_name
和 given_name
声明,可以在 Azure 门户 UI 或应用程序清单中为应用程序配置可选声明。 有关详细信息,请参阅如何向 Microsoft Entra 应用提供可选声明。
- 登录 Azure 门户。 搜索并选择 Microsoft Entra ID。
- 从“管理”部分中选择“应用注册” 。
- 在列表中选择要为其配置可选声明的应用程序。
- 从“管理”部分中选择“令牌配置(预览)”。
- 选择“添加可选声明”。
- 选择要配置的令牌类型。
- 选择要添加的可选声明。
- 单击“添加”。
创建策略密钥
你已在 Microsoft Entra 租户中创建了应用程序,现在需要将该应用程序的客户端密码存储在 Azure AD B2C 租户中。
- 登录 Azure 门户。
- 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Azure AD B2C 租户。
- 选择 Azure 门户左上角的“所有服务”,然后搜索并选择“Azure AD B2C” 。
- 在“概述”页上选择“标识体验框架”。
- 选择“策略密钥”,然后选择“添加”。
- 对于“选项”,请选择
Manual
。 - 输入策略密钥的名称。 例如,
MSASecret
。 前缀B2C_1A_
会自动添加到密钥名称。 - 在“密码”中,输入在上一部分中记录的客户端密码。
- 在“密钥用法”处选择
Signature
。 - 单击“创建”。
将 Microsoft 配置为标识提供者
要让用户使用 Microsoft 帐户登录,需将该帐户定义为 Azure AD B2C 可通过终结点与其进行通信的声明提供程序。 该终结点将提供一组声明,Azure AD B2C 使用这些声明来验证特定的用户是否已完成身份验证。
要将 Microsoft Entra ID 定义为声明提供程序,可在策略的扩展文件中添加 ClaimsProvider 元素。
保存 TrustFrameworkExtensions.xml 策略文件。
找到 ClaimsProviders 元素。 如果该元素不存在,请在根元素下添加它。
如下所示添加新的 ClaimsProvider:
<ClaimsProvider> <Domain>live.com</Domain> <DisplayName>Microsoft Account</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="MSA-MicrosoftAccount-OpenIdConnect"> <DisplayName>Microsoft Account</DisplayName> <Protocol Name="OpenIdConnect" /> <Metadata> <Item Key="ProviderName">https://login.live.com</Item> <Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item> <Item Key="response_types">code</Item> <Item Key="response_mode">form_post</Item> <Item Key="scope">openid profile email</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">false</Item> <Item Key="client_id">Your Microsoft application client ID</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_MSASecret" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid" /> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" /> <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" /> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" /> <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" /> <OutputClaim ClaimTypeReferenceId="email" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
将 client_id 的值替换为前面记录的 Microsoft Entra 应用程序的“应用程序(客户端)ID”。
保存文件。
现在,已配置了策略,因此 Azure AD B2C 知道如何与 Microsoft Entra ID 中的 Microsoft 帐户应用程序进行通信。
添加用户旅程
此时,标识提供者已设置,但还不能在任何登录页中使用。 如果你没有自己的自定义用户旅程,请创建现有模板用户旅程的副本,否则,请继续执行下一步。
- 打开初学者包中的 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="MicrosoftAccountExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="MicrosoftAccountExchange" TechnicalProfileReferenceId="MSA-MicrosoftAccount-OpenIdConnect" />
</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
),然后上传信赖方策略(例如SignUpSignIn.xml
)。
测试自定义策略
- 选择信赖方策略,例如
B2C_1A_signup_signin
。 - 对于“应用程序”,请选择前面注册的 Web 应用程序。 “回复 URL”应显示为
https://jwt.ms
。 - 选择“立即运行”按钮。
- 在注册或登录页上,选择“Microsoft”以使用 Microsoft 帐户登录。
如果登录过程成功,则浏览器会重定向到 https://jwt.ms
,后者显示 Azure AD B2C 返回的令牌内容。