使用 Azure Active Directory B2C 设置通过移动 ID 进行的注册与登录

重要

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

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

在本文中,你会了解如何使用 Azure Active Directory B2C (Azure AD B2C) 让客户能够在你的应用程序中通过移动 ID 进行注册与登录。 移动 ID 解决方案通过全面的端到端解决方案来保护对公司数据和应用程序的访问,以实现强大的多重身份验证 (MFA)。 使用 OpenID Connect 协议将移动 ID 添加到用户流或自定义策略。

先决条件

创建移动 ID 应用程序

若要让用户能够在 Azure AD B2C 中使用移动 ID 登录,需要创建应用程序。 若要创建移动 ID 应用程序,请执行以下步骤:

  1. 联系Mobile ID 支持团队

  2. 向 Mobile ID 提供有关 Azure AD B2C 租户的信息:

    密钥 注意
    重定向 URI 提供 https://your-tenant-name.b2clogin.cn/your-tenant-name.partner.onmschina.cn/oauth2/authresp URI。 将 your-tenant-name 替换为租户的名称。
    令牌端点身份验证方法 client_secret_post
  3. 在注册应用后,由移动 ID 提供以下信息。 使用此信息来配置用户流或自定义策略。

    密钥 注意
    客户端 ID Mobile ID 客户端 ID。 例如 00001111-aaaa-2222-bbbb-33333cccc4444。
    客户端机密 Mobile ID 客户端密钥。

将 Mobile ID 配置为身份提供商

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

  2. 选择 Azure 门户左上角的“所有服务”,然后搜索并选择“Azure AD B2C” 。

  3. 选择“标识提供者”,然后选择“新 OpenID Connect 提供程序”。

  4. 输入 名称。 例如,输入“移动 ID”。

  5. 对于“元数据 URL”,请输入 URL 移动 ID OpenId 的已知配置终结点。 例如:

    https://openid.mobileid.ch/.well-known/openid-configuration
    
  6. Client ID中,输入 Mobile ID Client ID。

  7. 对于“客户端密码”,请输入移动 ID 客户端密码。

  8. 范围中,输入openid, profile, phone, mid_profile

  9. 对于“响应类型”() 和“响应模式”(code),请保留默认值。

  10. (可选)在域提示中,输入mobileid.ch。 有关详细信息,请参阅使用 Azure Active Directory B2C 设置直接登录

  11. 在“标识提供者声明映射”下,选择以下声明:

    • 用户 IDsub
    • 显示名称name
  12. 选择“保存”。

将移动 ID 标识提供者添加到用户流

此时,Mobile ID 身份提供程序已设置完成,但在任何登录页面中仍不可用。 若要将移动 ID 标识提供者添加到用户流,请执行以下操作:

  1. 在 Azure AD B2C 租户中,选择“用户流” 。
  2. 选择要向其中添加移动 ID 身份提供程序的用户流。
  3. 在“社交标识提供者”下,选择“移动 ID”。
  4. 选择“保存”。
  5. 若要测试策略,请选择“运行用户流”。
  6. 对于“应用程序”,请选择前面已注册的名为“testapp1”的 Web 应用程序。 回复 URL应显示https://jwt.ms
  7. 选择“运行用户流”按钮。
  8. 在注册或登录页面中,选择“移动 ID”以使用移动 ID 登录。

如果登录过程是成功的,则你的浏览器会被重定向到 https://jwt.ms,其中显示 Azure AD B2C 返回的令牌内容。

创建策略密钥

你需要在 Azure AD B2C 租户中存储从移动 ID 收到的客户端密码。

  1. 登录 Azure 门户
  2. 请确保你当前使用的是包含 Azure AD B2C 租户的目录。 选择顶部菜单中的“目录 + 订阅”筛选器,然后选择包含租户的目录。
  3. 选择 Azure 门户左上角的“所有服务”,然后搜索并选择“Azure AD B2C” 。
  4. 在“概述”页上选择“标识体验框架”。
  5. 选择“策略密钥”,然后选择“添加”。
  6. 对于选项,请选择Manual
  7. 输入策略密钥的名称。 例如,Mobile IDSecret。 前缀 B2C_1A_ 会自动添加到您的密钥名称前。
  8. 在“密码”中,输入移动 ID 客户端密码。
  9. 对于密钥用途,请选择Signature
  10. 选择“创建”。

将 Mobile ID 配置为身份提供程序

若要让用户使用 Mobile ID 登录,需要将 Mobile ID 定义为声明提供程序,以便 Azure AD B2C 能够通过终结点与之通信。 该终结点将提供一组声明,Azure AD B2C 使用这些声明来验证特定的用户是否已完成身份验证。

您可以通过将 Mobile ID 添加到策略扩展文件中的 ClaimsProviders 元素,将其定义为声明提供程序。

  1. 打开 TrustFrameworkExtensions.xml

  2. 找到 ClaimsProviders 元素。 如果该元素不存在,请在根元素下面添加。

  3. 按如下所示添加新的 ClaimsProvider

    <ClaimsProvider>
    <Domain>mobileid.ch</Domain>
    <DisplayName>Mobile-ID</DisplayName>
    <TechnicalProfiles>
      <TechnicalProfile Id="MobileID-OAuth2">
      <DisplayName>Mobile-ID</DisplayName>
      <Protocol Name="OAuth2" />
      <Metadata>
        <Item Key="ProviderName">Mobile-ID</Item>
         <Item Key="authorization_endpoint">https://m.mobileid.ch/oidc/authorize</Item>
          <Item Key="AccessTokenEndpoint">https://openid.mobileid.ch/token</Item>
          <Item Key="ClaimsEndpoint">https://openid.mobileid.ch/userinfo</Item>
          <Item Key="scope">openid, profile, phone, mid_profile</Item>
          <Item Key="HttpBinding">POST</Item>
          <Item Key="UsePolicyInRedirectUri">false</Item>
          <Item Key="token_endpoint_auth_method">client_secret_post</Item>
          <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
          <Item Key="client_id">Your application ID</Item>
        </Metadata>
        <CryptographicKeys>
          <Key Id="client_secret" StorageReferenceId="B2C_1A_MobileIdSecret" />
        </CryptographicKeys>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub"/>
          <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name"/>
          <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="mobileid.ch" />
          <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>
    
  4. 将“client_id”设置为移动 ID 客户端 ID。

  5. 保存文件。

添加用户历程

此时,身份提供者已设置完成,但尚未在任何登录页面中提供。 如果你没有自己的自定义用户旅程,请创建现有模板用户旅程的副本,否则,请继续执行下一步。

  1. 打开初学者包中的 TrustFrameworkBase.xml 文件。
  2. 找到并复制包含 Id="SignUpOrSignIn"UserJourney 元素的全部内容。
  3. 打开 TrustFrameworkExtensions.xml 并找到 UserJourneys 元素。 如果该元素不存在,请添加一个。
  4. 将你复制的 UserJourney 元素的完整内容粘贴为 UserJourneys 元素的子元素。
  5. 对用户旅程的 ID 进行重命名。 例如,Id="CustomSignUpSignIn"

将标识提供者添加到用户旅程

现在你已经有了用户旅程,请将新的身份提供商添加到该用户旅程中。 首先添加一个“登录”按钮,然后将该按钮链接到某个操作。 该操作对应于你之前创建的技术配置文件。

  1. 在用户旅程中,查找包含 Type="CombinedSignInAndSignUp"Type="ClaimsProviderSelection" 的业务流程步骤元素。 这通常是第一个编排步骤。 ClaimsProviderSelections 元素包含用户可以用来登录的标识提供者列表。 元素的顺序将决定向用户显示的登录按钮的顺序。 添加一个 ClaimsProviderSelection XML 元素。 将 TargetClaimsExchangeId 的值设置为易记名称。

  2. 在下一个编排步骤中,添加一个 ClaimsExchange 元素。 将 ID 设置为目标声明交换 ID 的值。将 TechnicalProfileReferenceId 的值更新为之前创建的技术配置文件的 ID 。

下面的 XML 演示了使用标识提供者进行用户旅程的前两个业务流程步骤:

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="MobileIDExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="MobileIDExchange" TechnicalProfileReferenceId="MobileID-OAuth2" />
  </ClaimsExchanges>
</OrchestrationStep>

配置信赖方策略

信赖方策略(例如 SignUpSignIn.xml)指定 Azure AD B2C 将执行的用户旅程。 在依赖方中查找 DefaultUserJourney 元素。 更新 ReferenceId,使其与您在其中添加了标识提供者的用户旅程 ID 相匹配。

在以下示例中,对于 CustomSignUpSignIn 用户旅程,ReferenceId 设置为 CustomSignUpSignIn

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

上传自定义策略

  1. 登录 Azure 门户
  2. 在门户工具栏中选择“目录 + 订阅”图标,然后选择包含 Azure AD B2C 租户的目录。
  3. 在 Azure 门户中,搜索并选择“Azure AD B2C”。
  4. 在“策略”下,选择“Identity Experience Framework”。
  5. 选择“上传自定义策略”,然后上传已更改的两个策略文件,其顺序为:先上传扩展策略(例如 ),然后上传信赖方策略(例如 TrustFrameworkExtensions.xml)。

测试自定义策略

  1. 选择你的依赖方策略,例如 B2C_1A_signup_signin
  2. 对于“Application”,请选择您之前注册的一个 Web 应用程序。 回复 URL应显示为https://jwt.ms
  3. 选择“立即运行”按钮。
  4. 在注册或登录页面中,选择“移动 ID”以使用移动 ID 登录。

如果登录过程是成功的,则你的浏览器会被重定向到 https://jwt.ms,其中显示 Azure AD B2C 返回的令牌内容。

后续步骤

了解如何将移动 ID 令牌传递给您的应用程序