你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure Active Directory B2C 设置通过 X 帐户注册与登录

重要

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

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

注释

在 Azure Active Directory B2C 中,自定义策略 主要用于解决复杂场景。 对于大多数场景,我们建议您使用内置的用户流。 如果未这样做,请通过 Active Directory B2C 中的自定义策略入门来了解自定义策略初学者包。

先决条件

创建应用程序

若要在 Azure AD B2C 中为具有 X 帐户的用户启用登录,需要创建 X 应用程序。 如果还没有 X 帐户,可以注册 。https://x.com/signup 还需要 申请开发人员帐户。 有关详细信息,请参阅 “申请访问”。

  1. 使用 X 帐户凭据登录到 X 开发人员门户
  2. 选择 “+ 创建项目 ”按钮。
  3. “项目名称 ”选项卡下,输入项目的首选名称,然后选择“ 下一步 ”按钮。
  4. “用例 ”选项卡下,选择首选用例,然后选择“ 下一步”。
  5. “项目说明 ”选项卡下,输入项目说明,然后选择“ 下一步 ”按钮。
  6. “应用名称 ”选项卡下,输入应用的名称,例如 azureadb2c,然后选择“ 下一步 ”按钮。
  7. “密钥和令牌 ”选项卡下,复制 API 密钥API 密钥机密的值。 稍后将使用这些项进行配置。
  8. 选择 “应用设置” 以打开应用设置。
  9. 在页面的下半部分,在 “用户身份验证设置”下,选择“ 设置”。
  10. “应用类型”下,选择适当的应用类型,例如 Web 应用
  11. “应用信息”下:
    1. 对于“回叫 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
    2. 对于 网站 URL,请输入 https://your-tenant.b2clogin.com。 将 your-tenant 替换为租户的名称。 例如,https://contosob2c.b2clogin.com。 如果使用 自定义域,请输入 https://your-___domain-name
    3. (可选)输入 服务条款的 URL,例如 http://www.contoso.com/tos。 策略 URL 是你为应用程序继续提供条款和条件的页面。
    4. (可选)输入 隐私策略的 URL,例如 http://www.contoso.com/privacy。 策略 URL 是继续提供应用程序的隐私信息的页面。
  12. 选择“保存”
  1. 使用 X 帐户凭据登录到 X 开发人员门户
  2. 选择 “+ 创建项目 ”按钮。
  3. “项目名称 ”选项卡下,输入项目的首选名称,然后选择“ 下一步 ”按钮。
  4. “用例 ”选项卡下,选择首选用例,然后选择“ 下一步”。
  5. “项目说明 ”选项卡下,输入项目说明,然后选择“ 下一步 ”按钮。
  6. “应用名称 ”选项卡下,输入应用的名称,例如 azureadb2c,然后选择“ 下一步 ”按钮。
  7. “密钥和令牌 ”选项卡下,复制 API 密钥API 密钥密钥 的值供以后使用。 在 Azure AD B2C 租户中,使用这两者将 X 配置为标识提供者。
  8. 选择 “应用设置” 以打开应用设置。
  9. 在页面的下半部分,在 “用户身份验证设置”下,选择“ 设置”。
  10. “应用类型”下,选择适当的应用类型,例如 Web 应用
  11. “应用信息”下:
    1. 对于“回叫 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
    2. 对于 网站 URL,请输入 https://your-tenant.b2clogin.com。 将 your-tenant 替换为租户的名称。 例如,https://contosob2c.b2clogin.com。 如果使用 自定义域,请输入 https://your-___domain-name
    3. 输入 服务条款的 URL,例如 http://www.contoso.com/tos。 策略 URL 是你为应用程序继续提供条款和条件的页面。
    4. 输入 隐私策略的 URL,例如 http://www.contoso.com/privacy。 策略 URL 是继续提供应用程序的隐私信息的页面。
  12. 选择“保存”

将 X 配置为标识提供者

  1. 使用至少具有外部标识提供者管理员权限的帐户登录到 Azure 门户
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
  3. 选择 Azure 门户左上角的“所有服务” ,搜索并选择 Azure AD B2C
  4. 选择 “标识提供者”,然后选择 “Twitter”。
  5. 输入“名称”。 例如, X
  6. 对于 客户端 ID,输入前面创建的 X 应用程序的 API 密钥
  7. 对于 客户端密码,请输入你记录的 API 密钥机密
  8. 选择“保存”

将 X 标识提供者添加到用户流

此时,X 标识提供者已设置,但还不能在任何登录页中使用。 若要将 X 标识提供者添加到用户流,请执行以下作:

  1. 在 Azure AD B2C 租户中,选择“用户流” 。
  2. 选择要将 X 标识提供者添加到的用户流。
  3. 社交标识提供者下,选择 Twitter
  4. 选择“保存”

测试用户流

  1. 若要测试策略,请选择“运行用户流”。
  2. 对于“应用程序”,请选择前面已注册的名为“testapp1”的 Web 应用程序。 “回复 URL”应显示为 https://jwt.ms
  3. 选择“运行用户流”按钮。
  4. 在注册或登录页中,选择 Twitter 以使用 X 帐户登录。

创建策略密钥

需要在 Azure AD B2C 租户中存储之前为 X 应用记录的秘密密钥。

  1. 登录到 Azure 门户
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
  3. 在 Azure 门户中,搜索并选择 Azure AD B2C
  4. 在左侧菜单中的“ 策略”下,选择“ 标识体验框架”。
  5. 选择“策略密钥”,然后选择“添加”
  6. 对于“选项”,选择 Manual
  7. 输入策略密钥的名称。 例如,XSecret。 前缀 B2C_1A_ 会自动添加到密钥名称。
  8. 对于 机密,请输入之前记录的 API 密钥机密 值。
  9. 在“密钥用法”处选择
  10. 单击 “创建”

将 X 配置为标识提供者

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

可以将 X 帐户定义为声明提供程序,方法是将其添加到策略扩展文件中的 ClaimsProviders 元素。 请参阅本文的先决条件中下载的自定义策略起始包。

  1. 打开 TrustFrameworkExtensions.xml

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

  3. 添加一个新的 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>
    
  4. client_id 的值替换为之前记录的 API 密钥

  5. 保存文件。

添加用户旅程

此时,标识提供者已设置,但还不能在任何登录页中使用。 如果你没有自己的自定义用户旅程,请创建现有模板用户旅程的副本,否则,请继续执行下一步。

  1. 打开初学者包中的 TrustFrameworkBase.xml 文件。
  2. 找到并复制包含 Id="SignUpOrSignIn" 元素的完整内容。
  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="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>

上传自定义策略

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

测试自定义策略

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

如果登录过程成功,浏览器将重定向到 https://jwt.ms,后者显示 Azure AD B2C 返回的令牌内容。

小窍门

如果在测试此标识提供者时遇到 unauthorized 错误,请确保使用正确的 X API 密钥和 API 密钥机密,或尝试申请提升的访问权限。 此外,如果你在功能可用之前注册了应用,我们建议你查看 X 的项目结构