共用方式為


在 Azure Active Directory B2C 中定義自定義屬性

這很重要

自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解

開始之前,請使用此頁面頂端的 [選擇原則類型] 選取器,選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先定義的使用者流程,或透過完全可設定的自訂原則。 此文章中所需的步驟隨各方法而異。

使用自定義原則新增宣告和自定義使用者輸入 一文中,您會瞭解如何使用內建 的使用者配置檔屬性。 在本文中,您會在 Azure Active Directory B2C (Azure AD B2C) 目錄中啟用自定義屬性。 稍後,您可以在 使用者流程自定義原則 中同時使用新屬性做為自定義宣告。

您的 Azure AD B2C 目錄隨附一 組內建的屬性。 不過,您通常需要建立自己的屬性來管理您的特定案例,例如:

  • 客戶面向的應用程式必須保存 loyaltyId 屬性。
  • 識別提供者具有必須保存的唯一用戶標識碼 uniqueUserGUID
  • 自定義使用者旅程圖需要保存用戶狀態 migrationStatus,才能讓其他邏輯運作。

在本文中, 擴充屬性自定義屬性自定義宣告這些術語指的是同一事物。 名稱會根據內容而有所不同,例如應用程式、對象或原則。

Azure AD B2C 可讓您擴充儲存在每個用戶帳戶上的屬性集。 您也可以使用 Microsoft Graph API 來讀取和寫入這些屬性。

先決條件

建立自訂屬性

  1. 至少以 Azure AD B2C 租戶的 外部 ID 使用者流程屬性管理員 身分登入 Azure 入口網站
  2. 如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。
  3. 選擇 Azure 入口網站左上角 的 [所有服務 ],搜尋並選取 [Azure AD B2C]。
  4. 選取 [用戶屬性],然後選取 [ 新增]。
  5. 提供自訂 屬性的名稱( 例如“ShoeSize”)
  6. 選擇 數據類型。 只有 StringBooleanInt 可用。
  7. 可以選擇性地輸入 描述 作為參考資訊。
  8. 選取 ,創建

自訂屬性現在可在 使用者屬性 清單中取得,並可用於您的使用者流程。 自定義屬性只會在第一次用於任何使用者流程時建立,而不是當您將它新增至 User屬性清單時。

在您的使用者流程中使用自訂屬性

  1. 在您的 Azure AD B2C 租戶中,選取 使用者流程
  2. 選擇您的政策(例如「B2C_1_SignupSignin」)來打開。
  3. 選取 [用戶屬性 ],然後選取自定義屬性(例如“ShoeSize” )。 選取 [儲存]。
  4. 選取 [應用程式宣告 ],然後選取自定義屬性。
  5. 選取 [儲存]。

使用使用者流程建立新用戶之後,您就可以在使用者流程上使用 [ 執行使用者流程 ] 功能來驗證客戶體驗。 您現在應該會在註冊旅程期間收集的屬性清單中看到ShoeSize,並且在傳回至您的應用程式的令牌中看到該屬性。

Azure AD B2C 擴充功能應用程式

延伸模組屬性只能在應用程式對象上註冊,即使它們可能包含用戶的數據也一樣。 擴充屬性會附加至名為 b2c-extensions-app的應用程式。 請勿修改此應用程式,因為 Azure AD B2C 會使用它來儲存用戶數據。 您可以在 Azure AD B2C、應用程式註冊下找到此應用程式。

取得延伸模組應用程式的應用程式識別碼

  1. 登入 Azure 入口網站
  2. 如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。
  3. 在左側功能表中,選取 [Azure AD B2C]。 或者,選取 [所有服務 ],然後搜尋並選取 [Azure AD B2C]。
  4. 選取 [應用程式註冊],然後選取 [所有應用程式]。
  5. 選取b2c-extensions-app. Do not modify. Used by AADB2C for storing user data.應用程式。
  6. 複製應用程式識別碼。 範例: 00001111-aaaa-2222-bbbb-3333cccc4444.

取得延伸模組應用程式的應用程式屬性

  1. 登入 Azure 入口網站
  2. 如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。
  3. 在左側功能表中,選取 [Azure AD B2C]。 或者,選取 [所有服務 ],然後搜尋並選取 [Azure AD B2C]。
  4. 選取 [應用程式註冊],然後選取 [所有應用程式]。
  5. 選取 b2c-extensions-app 應用。請勿修改。AADB2C 用來儲存用戶數據。
  6. 將下列識別碼複製到剪貼簿並加以儲存:
    • 應用程式識別碼。 範例: 00001111-aaaa-2222-bbbb-3333cccc4444.
    • 物件標識碼。 範例: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb.

修改您的自定義原則

若要在您的原則中啟用自定義屬性,請在 AAD-Common 技術設定檔元數據中提供應用程式識別碼和應用程式物件識別碼AAD-Common* 技術配置檔位於基底Microsoft Entra ID 技術配置檔中,並提供Microsoft Entra 使用者管理的支援。 其他Microsoft Entra ID 技術配置檔包括 AAD-Common 以使用其設定。 覆寫延伸模組檔案中的 AAD-Common 技術配置檔。

  1. 開啟您政策的延伸檔案。 例如: SocialAndLocalAccounts/TrustFrameworkExtensions.xml

  2. 尋找 ClaimsProviders 元素。 將一個新的 ClaimsProvider 新增到 ClaimsProviders 元素中。

  3. 在開頭和結尾<Item Key="ClientId">元素之間插入您先前記錄</Item>

  4. 在開頭和結尾<Item Key="ApplicationObjectId">元素之間插入您先前記錄的 </Item>

    <!-- 
    <ClaimsProviders> -->
      <ClaimsProvider>
        <DisplayName>Azure Active Directory</DisplayName>
        <TechnicalProfiles>
          <TechnicalProfile Id="AAD-Common">
            <Metadata>
              <!--Insert b2c-extensions-app application ID here, for example: 00001111-aaaa-2222-bbbb-3333cccc4444-->  
              <Item Key="ClientId"></Item>
              <!--Insert b2c-extensions-app application ObjectId here, for example: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb-->
              <Item Key="ApplicationObjectId"></Item>
            </Metadata>
          </TechnicalProfile>
        </TechnicalProfiles> 
      </ClaimsProvider>
    <!-- 
    </ClaimsProviders> -->
    

上傳您的自定義原則

  1. 登入 Azure 入口網站
  2. 如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。
  3. 選擇 Azure 入口網站左上角 的 [所有服務 ],然後搜尋並選取 [ 應用程式註冊]。
  4. 選取 [ 身分識別體驗架構]。
  5. 選取 [上傳自定義原則],然後上傳您變更 TrustFrameworkExtensions.xml 原則檔案。

備註

在Microsoft Entra ID 技術配置檔第一次將宣告保存至目錄時,它會檢查自定義屬性是否存在。 如果沒有,它會建立自定義屬性。

透過 Azure 入口網站建立自訂屬性

內建和自定義原則之間會共用相同的擴充屬性。 當您透過入口網站體驗新增自定義屬性時,這些屬性會使用存在於每個 B2C 租戶中的 b2c-extensions-app 來註冊。

您可以在自定義原則中使用這些屬性之前或之後,使用入口網站 UI 來建立這些屬性。 當您在平台中建立屬性 loyaltyId 時,您必須如下所示地引用它:

名稱 用於
extension_loyaltyId 自訂原則
extension_<b2c-extensions-app-guid>_loyaltyId Microsoft圖形 API

備註

在自定義原則中使用自定義屬性時,您必須在宣告類型標識符前面加上 extension_ ,才能在 Azure AD B2C 目錄中進行正確的數據對應。

下列範例示範如何在 Azure AD B2C 自定義原則宣告定義中使用自定義屬性。

<BuildingBlocks>
  <ClaimsSchema>
    <ClaimType Id="extension_loyaltyId">
      <DisplayName>Loyalty Identification</DisplayName>
      <DataType>string</DataType>
      <UserHelpText>Your loyalty number from your membership card</UserHelpText>
      <UserInputType>TextBox</UserInputType>
    </ClaimType>
  </ClaimsSchema>
</BuildingBlocks>

下列範例示範在技術配置檔、輸入、輸出和保存宣告中使用 Azure AD B2C 自定義原則中的自定義屬性。

<InputClaims>
  <InputClaim ClaimTypeReferenceId="extension_loyaltyId"  />
</InputClaims>
<PersistedClaims>
  <PersistedClaim ClaimTypeReferenceId="extension_loyaltyId" />
</PersistedClaims>
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="extension_loyaltyId" />
</OutputClaims>

透過 Microsoft Graph 管理擴充屬性

您可以使用 Microsoft Graph 來建立和管理自定義屬性,然後設定使用者的值。 擴展屬性也稱為目錄擴展或 Microsoft Entra 擴展。

Microsoft圖形 API 中的自定義屬性(目錄延伸模組)會使用慣例 extension_{appId-without-hyphens}_{extensionProperty-name} 來命名,其中 {appId-without-hyphens}appId 的移除版本(在 Azure AD B2C 入口網站上稱為用戶端識別符),且 b2c-extensions-app 只有 0-9 和 A-Z 字元。 例如,如果應用程式的 appIdb2c-extensions-app11112222-bbbb-3333-cccc-4444dddd5555 ,而屬性名稱為 loyaltyId,則自訂屬性會命名為 extension_25883231668a43a780b25685c3f874bc_loyaltyId

瞭解如何使用 Microsoft Graph API 來管理 Azure AD B2C 租使用者中的擴充屬性

拿掉擴充屬性

不同於內建屬性,可以移除自定義屬性。 也可以移除擴充屬性的值。

這很重要

在您移除自訂屬性之前,請針對目錄中的每個帳戶,將擴充屬性值設定為 null。 如此一來,您就會明確移除擴充屬性的值。 然後,繼續移除擴充屬性本身。 您可以使用圖形 API Microsoft查詢自訂屬性。

使用下列步驟,從您的租戶中的使用者流程中刪除自訂屬性:

  1. 至少以 Azure AD B2C 租戶的 外部 ID 使用者流程屬性管理員 身分登入 Azure 入口網站
  2. 確定您使用的是包含您 Azure AD B2C 租用戶的目錄:
    1. 選取入口網站工具列中的 [目錄 + 訂用帳戶] 圖示。
    2. 入口網站設定 |[目錄 + 訂用帳戶 ] 頁面,在 [目錄名稱] 列表中尋找您的 Azure AD B2C 目錄,然後選取 [ 切換]
  3. 選擇 Azure 入口網站左上角 的 [所有服務 ],搜尋並選取 [Azure AD B2C]。
  4. 選取 [使用者屬性],然後選取您要刪除的屬性。
  5. 選取 [刪除],然後選取 [是] 予以確認。

使用 Microsoft Graph API 來管理自定義屬性。

後續步驟

瞭解如何 使用自定義原則新增宣告和自定義用戶輸入。 此範例使用內建宣告 『city』。 若要使用自定義屬性,請以您自己的自定義屬性取代 『city』。