重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
在开始之前,请使用此页面顶部的 “选择策略类型 选择器”来选择要设置的策略类型。 Azure Active Directory B2C 提供了两种定义用户如何与应用程序交互的方法:通过预定义的用户流,或者通过可完全配置的自定义策略。 对于每种方法,本文中所需的步骤都不同。
- 创建用户流,以便用户能够注册并登录应用程序。
- 注册 Web 应用程序。
- 完成 Active Directory B2C 中的自定义策略入门中的步骤。 本教程指导你如何更新自定义策略文件以使用 Azure AD B2C 租户配置。
- 注册 Web 应用程序。
若要在 Azure Active Directory B2C(Azure AD B2C)中使用 AD FS 帐户为用户启用登录,请在 AD FS 中创建应用程序组。 有关详细信息,请参阅 使用 OpenID Connect 和 AD FS 2016 及更高版本生成 Web 应用程序
若要创建应用程序组,请执行以下步骤:
- 在 服务器管理器中,选择 “工具”,然后选择 “AD FS 管理”。
- 在”AD FS管理”中,右键单击“应用程序组”,然后选择“添加应用程序组” 。
- 在“应用程序组向导 欢迎 ”屏幕上:
- 输入应用程序 的名称 。 例如, Azure AD B2C 应用程序。
- 在 Client-Server 应用程序下,选择 访问 Web 应用程序模板的 Web 浏览器 。
- 选择“下一步”。
- 在“应用程序组向导”的“本机应用程序”屏幕上:
- 复制“客户端标识符”值。 客户端标识符是 AD FS 应用程序 ID。 本文稍后需要应用程序 ID。
- 在 重定向 URI 中,输入
https://your-tenant-name.b2clogin.cn/your-tenant-name.partner.onmschina.cn/oauth2/authresp
,然后 添加。 将your-tenant-name
替换为租户的名称。 - 选择 “下一步”,然后选择“ 下一步”,然后再次选择 “下一步 ”以完成应用注册向导。
- 选择 关闭。
在此步骤中,配置 AD FS 应用程序返回到 Azure AD B2C 的声明。
在 应用程序组中,选择你创建的应用程序。
在应用程序属性窗口中的 “应用程序”下,选择 “Web 应用程序”。 然后选择“编辑”。
选择“ 颁发转换规则 ”选项卡。然后选择“ 添加规则”。
在 声明规则模板中,选择“ 发送 LDAP 属性作为声明”,然后选择 “下一步”。
提供“声明规则名称”。 对于 属性存储区,请选择 Active Directory,添加以下声明。
LDAP 属性 传出声明类型 用户 -Principal-Name UPN 姓 姓氏 Given-Name given_name Display-Name 姓名 请注意,某些名称不会显示在传出声明类型下拉列表中。 需要手动键入它们(下拉列表是可编辑的)。
选择完成。
选择 “应用”,然后选择 “确定”。
再次选择 “确定 ”以完成。
使用至少具有外部标识提供者管理员权限的帐户登录到 Azure 门户。
如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
选择 Azure 门户左上角的“所有服务”,然后搜索并选择“Azure AD B2C” 。
选择“标识提供程序”,然后选择“新建 OpenID Connect 提供程序” 。
输入“名称”。 例如, Contoso。
对于“元数据 URL”,请输入 AD FS OpenID Connect 配置文档的 URL。 例如:
https://adfs.contoso.com/adfs/.well-known/openid-configuration
对于 客户端 ID,请输入之前记录的应用程序 ID。
对于“范围”,请输入 。
对于 响应类型,请选择 id_token。 因此,不需要 客户端机密 值。 详细了解在添加通用 OpenID Connect 身份提供者时如何使用 客户端 ID 和密钥。
(可选)对于“域提示”,请输入 。 有关详细信息,请参阅使用 Azure Active Directory B2C 设置直接登录。
在“标识提供者声明映射”下,选择以下声明:
-
用户 ID:
upn
-
显示名称:
unique_name
-
给定名称:
given_name
-
姓氏:
family_name
-
用户 ID:
选择“保存”。
此时,AD FS (Contoso) 标识提供者已设置,但还不能在任何登录页中使用。 将 AD FS 标识提供者添加到用户流:
- 在 Azure AD B2C 租户中,选择“用户流” 。
- 选择要添加 AD FS 标识提供者(Contoso)的用户流。
- 在 “社交标识提供者”下,选择 “Contoso”。
- 选择“保存”。
- 若要测试策略,请选择“运行用户流”。
- 对于“应用程序”,请选择前面已注册的名为“testapp1”的 Web 应用程序。 “回复 URL”应显示为 。
- 选择“运行用户流”按钮。
- 在注册或登录页中,选择 Contoso 以使用 Contoso 帐户登录。
如果登录过程成功,浏览器将重定向到 https://jwt.ms
,后者显示 Azure AD B2C 返回的令牌内容。
若要使用户能够使用 AD FS 帐户登录,需要将 AD FS 定义为声明提供程序,以便 Azure AD B2C 可以通过终结点与其通信。
打开 TrustFrameworkExtensions.xml。
找到 ClaimsProviders 元素。 如果该元素不存在,请在根元素下添加它。
添加一个新的 ClaimsProvider,如下所示:
<ClaimsProvider> <Domain>contoso.com</Domain> <DisplayName>Contoso</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="Contoso-OpenIdConnect"> <DisplayName>Contoso</DisplayName> <Protocol Name="OpenIdConnect" /> <Metadata> <Item Key="METADATA">https://your-adfs-domain/adfs/.well-known/openid-configuration</Item> <Item Key="response_types">id_token</Item> <Item Key="response_mode">form_post</Item> <Item Key="scope">openid</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">0</Item> <!-- Update the Client ID below to the Application ID --> <Item Key="client_id">Your AD FS application ID</Item> </Metadata> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="upn" /> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" /> <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" /> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="unique_name" /> <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
对于 元数据网址,请输入 AD FS OpenID Connect 配置文档的网址。 例如:
https://adfs.contoso.com/adfs/.well-known/openid-configuration
将client_id设置为应用程序注册中的应用程序 ID。
保存文件。
此时,标识提供者已设置,但还不能在任何登录页中使用。 如果你没有自己的自定义用户旅程,请创建现有模板用户旅程的副本,否则,请继续执行下一步。
- 打开初学者包中的 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="ContosoExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-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
)。
- 选择依赖方策略,例如
B2C_1A_signup_signin
。 - 对于应用程序,请选择您前面注册的 Web 应用程序。 “回复 URL”应显示为 。
- 选择“立即运行”按钮。
- 在注册或登录页中,选择 Contoso 以使用 Contoso 帐户登录。
如果登录过程成功,浏览器将重定向到 https://jwt.ms
,后者显示 Azure AD B2C 返回的令牌内容。
了解如何将 AD-FS 令牌传递给应用程序。