社交帳戶宣告轉換

在 Azure Active Directory B2C(Azure AD B2C)中,社交帳戶身分識別會儲存在 alternativeSecurityIds alternativeSecurityIdCollection 宣告類型的屬性中。 alternativeSecurityIdCollection 中的每個項目都會指定簽發者(例如 facebook.com 等識別提供者名稱),以及 issuerUserId,這是簽發者的唯一用戶標識符。

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

本文提供在 Azure AD B2C 中使用身分識別體驗架構架構的社交帳戶宣告轉換範例。 如需詳細資訊,請參閱 ClaimsTransformations。

AddItemToAlternativeSecurityIdCollection

AlternativeSecurityId將加入至alternativeSecurityIdCollection宣告。 查看 此宣告轉換的實時示範 。

元素 TransformationClaimType 資料類型 備註
InputClaim 元素 字串 要加入至輸出宣告的宣告。
InputClaim collection alternativeSecurityIdCollection 如果原則中有可用的宣告轉換,則為宣告轉換所使用的宣告。 如果提供,宣告轉換會在集合結尾加入 item 。
OutputClaim collection alternativeSecurityIdCollection 叫用這個宣告轉換之後所產生的宣告。 新的集合,其中包含來自輸入 collection 和 item的專案。

AddItemToAlternativeSecurityIdCollection 的範例

下列範例會連結具有現有帳戶的新社交身分識別。 若要連結新的社交身分識別:

  1. 在和 AAD-UserReadUsingObjectId 技術配置檔中AAD-UserReadUsingAlternativeSecurityId,輸出使用者的alternativeSecurityIds宣告。
  2. 要求使用者以未與此使用者相關聯的其中一個識別提供者登入。
  3. 使用 CreateAlternativeSecurityId 宣告轉換,建立名為 的新 alternativeSecurityId 宣告類型AlternativeSecurityId2
  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

建立使用者alternativeSecurityId屬性的JSON表示法,該屬性可用於呼叫 Microsoft Entra ID。 查看 此宣告轉換的實時示範 。 如需詳細資訊,請參閱 AlternativeSecurityId 架構。

元素 TransformationClaimType 資料類型 備註
InputClaim key 字串 指定社交識別提供者所使用之唯一用戶標識碼的宣告。
InputClaim identityProvider 字串 指定社交賬戶識別提供者名稱的宣告,例如 facebook.com。
OutputClaim alternativeSecurityId 字串 叫用宣告轉換之後所產生的宣告。 包含社交帳戶使用者身分識別的相關信息。 簽發 者 是宣告的值 identityProvider 。 issuerUserId 是base64格式的key宣告值。

CreateAlternativeSecurityId 的範例

使用此宣告轉換來產生 alternativeSecurityId 宣告。 它供所有社交辨識提供者技術設定檔使用,例如 Facebook-OAUTH。 下列宣告轉換會接收使用者帳戶標識碼和識別提供者名稱。 此技術配置文件的輸出是 JSON 字串格式,可用於 Microsoft Entra 目錄服務。

<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>
  • 輸入宣告:
    • 機碼:12334
    • identityProvider:Facebook.com
  • 輸出宣告:
    • alternativeSecurityId: { “issuer”: “facebook.com”, “issuerUserId”: “MTA4MTQ2MDgyOTI3MDUyNTYzMjcw”}

GetIdentityProvidersFromAlternativeSecurityIdCollectionTransformation

將 alternativeSecurityIdCollection 宣告中的簽發者清單傳回新的 stringCollection 宣告。 查看 此宣告轉換的實時示範 。

元素 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-UserReadUsingObjectId 技術配置檔中AAD-UserReadUsingAlternativeSecurityId,輸出使用者的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” } ]

下一步