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

社交帐户声明转换

在Azure Active Directory B2C (Azure AD B2C) 中,社交帐户标识存储在 alternativeSecurityIdCollection 声明类型的 alternativeSecurityIds 属性中。 alternativeSecurityIdCollection 中的每个项指定颁发者(标识提供者名称,例如 facebook.com)和 issuerUserId(颁发者的唯一用户标识符)。

"alternativeSecurityIds": [{
    "issuer": "google.com",
    "issuerUserId": "MTA4MTQ2MDgyOTI3MDUyNTYzMjcw"
  },
  {
    "issuer": "facebook.com",
    "issuerUserId": "MTIzNDU="
  }]

本文通过示例演示如何使用 Azure Active Directory (Azure AD) B2C 中标识体验框架架构的社交帐户声明转换。 有关详细信息,请参阅 ClaimsTransformations

AddItemToAlternativeSecurityIdCollection

AlternativeSecurityId 添加到 alternativeSecurityIdCollection 声明。 查看此声明转换的实时演示

元素 TransformationClaimType 数据类型 说明
InputClaim 元素 字符串 要添加到输出声明的声明。
InputClaim collection alternativeSecurityIdCollection 声明转换使用的声明(如果在策略中可用)。 如果已提供,则声明转换将在集合末尾添加 item
OutputClaim collection alternativeSecurityIdCollection 调用此声明转换后生成的声明。 包含 collectionitem 输入中的项的集合。

AddItemToAlternativeSecurityIdCollection 的示例

以下示例将新的社交标识与现有帐户相链接。 链接新的社交标识:

  1. AAD-UserReadUsingAlternativeSecurityIdAAD-UserReadUsingObjectId 技术配置文件中,输出用户的 alternativeSecurityIds 声明。
  2. 请让用户使用某个未与此用户关联的标识提供者进行登录。
  3. 使用 CreateAlternativeSecurityId 声明转换创建名为 AlternativeSecurityId2 的新 alternativeSecurityId 声明类型
  4. 调用 AddItemToAlternativeSecurityIdCollection 声明转换,将 AlternativeSecurityId2 声明添加到现有的 AlternativeSecurityIds 声明。
  5. alternativeSecurityIds 声明保存到用户帐户
<ClaimsTransformation Id="AddAnotherAlternativeSecurityId" TransformationMethod="AddItemToAlternativeSecurityIdCollection">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="AlternativeSecurityId2" TransformationClaimType="item" />
    <InputClaim ClaimTypeReferenceId="AlternativeSecurityIds" TransformationClaimType="collection" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="AlternativeSecurityIds" TransformationClaimType="collection" />
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:

    • item:

      {
          "issuer": "facebook.com",
          "issuerUserId": "MTIzNDU="
      }
      
    • 集合:

      [
          {
              "issuer": "live.com",
              "issuerUserId": "MTA4MTQ2MDgyOTI3MDUyNTYzMjcw"
          }
      ]
      
  • 输出声明:

    • 集合:

      [
          {
              "issuer": "live.com",
              "issuerUserId": "MTA4MTQ2MDgyOTI3MDUyNTYzMjcw"
          },
          {
              "issuer": "facebook.com",
              "issuerUserId": "MTIzNDU="
          }
      ]
      

CreateAlternativeSecurityId

创建可在对 Microsoft Entra ID 的调用中使用的用户 alternativeSecurityId 属性的 JSON 表示形式。 查看此声明转换的实时演示。 有关详细信息,请参阅 AlternativeSecurityId 架构。

元素 TransformationClaimType 数据类型 说明
InputClaim key string 用于指定社交标识提供者所用唯一用户标识符的声明。
InputClaim identityProvider 字符串 用于指定社交帐户标识提供者名称(例如 facebook.com)的声明。
OutputClaim alternativeSecurityId 字符串 调用此声明转换后生成的声明。 包含社交帐户用户的标识信息。 issueridentityProvider 声明的值。 issuerUserIdkey 声明的值,采用 base64 格式。

CreateAlternativeSecurityId 的示例

使用此声明转换可以生成 alternativeSecurityId 声明。 此 ClaimType 由所有社交标识提供者技术配置文件(例如 Facebook-OAUTH)使用。 以下声明转换接收用户社交帐户 ID 和标识提供者名称。 此技术配置文件的输出是可在 Microsoft Entra 目录服务中使用的 JSON 字符串格式。

<ClaimsTransformation Id="CreateAlternativeSecurityId" TransformationMethod="CreateAlternativeSecurityId">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="issuerUserId" TransformationClaimType="key" />
    <InputClaim ClaimTypeReferenceId="identityProvider" TransformationClaimType="identityProvider" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="alternativeSecurityId" TransformationClaimType="alternativeSecurityId" />
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:
    • key: 12334
    • identityProvider: Facebook.com
  • 输出声明:
    • alternativeSecurityId: { "issuer": "facebook.com", "issuerUserId": "MTA4MTQ2MDgyOTI3MDUyNTYzMjcw"}

GetIdentityProvidersFromAlternativeSecurityIdCollectionTransformation

在新的 stringCollection 声明中返回 alternativeSecurityIdCollection 声明中的颁发者列表。 查看此声明转换的实时演示

元素 TransformationClaimType 数据类型 说明
InputClaim alternativeSecurityIdCollection alternativeSecurityIdCollection 用于获取标识提供者(颁发者)列表的声明。
OutputClaim identityProvidersCollection stringCollection 调用此声明转换后生成的声明。 与输入声明相关的标识提供者的列表。

GetIdentityProvidersFromAlternativeSecurityIdCollectionTransformation 的示例

以下声明转换读取用户 alternativeSecurityIds 声明,并提取与该帐户关联的标识提供者名称列表。 使用 identityProvidersCollection 输出向用户显示与该帐户关联的标识提供者列表。 或者,在标识提供者选项页上,基于输出 identityProvidersCollection 声明筛选标识提供者列表。 因此,用户可以选择链接尚未与该帐户关联的新社交标识。

<ClaimsTransformation Id="ExtractIdentityProviders" TransformationMethod="GetIdentityProvidersFromAlternativeSecurityIdCollectionTransformation">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="alternativeSecurityIds" TransformationClaimType="alternativeSecurityIdCollection" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="identityProviders" TransformationClaimType="identityProvidersCollection" />
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:

    • alternativeSecurityIdCollection:

      [
          {
              "issuer": "google.com",
              "issuerUserId": "MTA4MTQ2MDgyOTI3MDUyNTYzMjcw"
          },
          {
              "issuer": "facebook.com",
              "issuerUserId": "MTIzNDU="
          }
      ]
      
  • 输出声明:

    • identityProvidersCollection: [ "facebook.com", "google.com" ]

RemoveAlternativeSecurityIdByIdentityProvider

alternativeSecurityIdCollection 声明中删除 AlternativeSecurityId。 查看此声明转换的实时演示

元素 TransformationClaimType 数据类型 说明
InputClaim identityProvider 字符串 包含要从集合中删除的标识提供者名称的声明。
InputClaim collection alternativeSecurityIdCollection 声明转换使用的声明。 声明转换从集合中删除 identityProvider。
OutputClaim collection alternativeSecurityIdCollection 调用此声明转换后生成的声明。 从集合中删除 identityProvider 后的新集合。

RemoveAlternativeSecurityIdByIdentityProvider 的示例

以下示例将某个社交标识与现有帐户取消关联。 取消链接社交标识:

  1. AAD-UserReadUsingAlternativeSecurityIdAAD-UserReadUsingObjectId 技术配置文件中,输出用户的 alternativeSecurityIds 声明。
  2. 要求用户选择要从此用户关联的标识提供者列表中删除哪个社交帐户。
  3. 调用一个声明转换技术配置文件,该技术配置文件调用使用标识提供者名称删除了所选社交标识的 RemoveAlternativeSecurityIdByIdentityProvider 声明转换。
  4. alternativeSecurityIds 声明保存到用户帐户。
<ClaimsTransformation Id="RemoveAlternativeSecurityIdByIdentityProvider" TransformationMethod="RemoveAlternativeSecurityIdByIdentityProvider">
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="secondIdentityProvider" TransformationClaimType="identityProvider" />
        <InputClaim ClaimTypeReferenceId="AlternativeSecurityIds" TransformationClaimType="collection" />
    </InputClaims>
    <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="AlternativeSecurityIds" TransformationClaimType="collection" />
    </OutputClaims>
</ClaimsTransformation>
</ClaimsTransformations>
  • 输入声明:
    • identityProvider: facebook.com
    • collection: [ { "issuer": "live.com", "issuerUserId": "MTA4MTQ2MDgyOTI3MDUyNTYzMjcw" }, { "issuer": "facebook.com", "issuerUserId": "MTIzNDU=" } ]
  • 输出声明:
    • collection: [ { "issuer": "live.com", "issuerUserId": "MTA4MTQ2MDgyOTI3MDUyNTYzMjcw" } ]

后续步骤