在 Azure Active Directory B2C 中定義自訂屬性
開始 之前,請使用 [選擇原則類型 選取器] 來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先 定義的使用者流程 ,或透過完全可設定 的自訂原則 。 本文中每個方法所需的步驟都不同。
在使用 自訂原則 新增宣告和自訂使用者輸入一文中,您會瞭解如何使用內 建的使用者設定檔屬性 。 在本文中,您會在 Azure Active Directory B2C (Azure AD B2C) 目錄中啟用自訂屬性。 稍後,您可以在使用者流程 或 自訂原則 中 同時使用新屬性做為自訂宣告。
您的 Azure AD B2C 目錄隨附一 組內建的屬性 。 不過,您通常需要建立自己的屬性來管理您的特定案例,例如:
- 客戶面向的應用程式必須保存 loyaltyId 屬性。
- 識別提供者具有必須保存的唯一使用者識別碼 uniqueUserGUID 。
- 自訂使用者旅程圖需要保存使用者 狀態 migrationStatus ,才能讓其他邏輯運作。
擴充屬性、 自訂屬性 和 自訂宣告 等詞彙 會參考本文內容中的相同內容。 名稱會根據內容而有所不同,例如應用程式、物件或原則。
Azure AD B2C 可讓您擴充儲存在每個使用者帳戶上的屬性集。 您也可以使用 Microsoft Graph API 來讀取和寫入這些屬性。
必要條件
- 建立使用者流程 ,讓使用者可以註冊並登入您的應用程式。
- 註冊 Web 應用程式 。
- 完成開始使用 Active Directory B2C 中的自訂原則中的 步驟
- 註冊 Web 應用程式 。
建立自訂屬性
- 以 Azure AD B2C 租使用者的全域管理員身分登入 Azure 入口網站 。
- 如果您有多個租使用者的存取權,請選取 頂端功能表中的 [設定 ] 圖示,從 [目錄 + 訂 用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 選擇 Azure 入口網站左上角的 [所有服務 ],搜尋並選取 [Azure AD B2C ]。
- 選取 [ 使用者屬性 ],然後選取 [ 新增 ]。
- 提供自訂屬性的名稱(例如「ShoeSize」)
- 選擇資料類型 。 只有 String 、 Boolean 和 Int 可用。
- 選擇性地輸入 描述 以取得資訊用途。
- 選取 建立。
自訂屬性現在可在使用者屬性 清單中 取得,並可用於您的使用者流程。 自訂屬性只會在第一次用於任何使用者流程時建立,而不是當您將它新增至 User 屬性 清單 時。
在您的使用者流程中使用自訂屬性
- 在您的 Azure AD B2C 租使用者中,選取 [ 使用者流程 ]。
- 選取您的原則(例如「B2C_1_SignupSignin」)加以開啟。
- 選取 [使用者屬性 ],然後選取自訂屬性(例如「ShoeSize」 )。 選取 [儲存]。
- 選取 [應用程式宣告 ],然後選取自訂屬性。
- 選取 [儲存]。
使用使用者流程建立新使用者之後,您就可以在 使用者流程上使用 [執行使用者流程 ] 功能來驗證客戶體驗。 您現在應該會在註冊旅程期間收集的屬性清單中看到 ShoeSize ,並在傳回應用程式的權杖中看到它。
Azure AD B2C 擴充功能應用程式
延伸模組屬性只能在應用程式物件上註冊,即使它們可能包含使用者的資料也一樣。 擴充屬性會附加至名為 b2c-extensions-app
的應用程式。 請勿修改此應用程式,因為 Azure AD B2C 會使用它來儲存使用者資料。 您可以在 Azure AD B2C、應用程式註冊下找到此應用程式。
取得延伸模組應用程式的應用程式識別碼
- 登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取 頂端功能表中的 [設定 ] 圖示,從 [目錄 + 訂 用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 在左側功能表中,選取 [Azure AD B2C ]。 或者,選取 [所有服務 ],然後搜尋並選取 [Azure AD B2C ]。
- 選取 [應用程式註冊 ],然後選取 [ 所有應用程式 ]。
- 選取
b2c-extensions-app. Do not modify. Used by AADB2C for storing user data.
應用程式。 - 複製應用程式識別碼。 範例:
11111111-1111-1111-1111-111111111111
。
取得延伸模組應用程式的應用程式屬性
- 登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取 頂端功能表中的 [設定 ] 圖示,從 [目錄 + 訂 用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 在左側功能表中,選取 [Azure AD B2C ]。 或者,選取 [所有服務 ],然後搜尋並選取 [Azure AD B2C ]。
- 選取 [應用程式註冊 ],然後選取 [ 所有應用程式 ]。
- 選取 b2c-extensions-app。請勿修改。AADB2C 用來儲存使用者資料。 應用。
- 將下列識別碼複製到剪貼簿並加以儲存:
- 應用程式識別碼。 範例:
11111111-1111-1111-1111-111111111111
。 - 物件識別碼 。 範例:
22222222-2222-2222-2222-222222222222
。
- 應用程式識別碼。 範例:
修改您的自訂原則
若要在您的原則中啟用自訂屬性,請在 AAD-Common 技術設定檔中繼資料中 提供 應用程式識別碼 和應用程式 物件識別碼 。 AAD-Common * 技術設定檔位於基礎 Microsoft Entra ID 技術設定檔中,並提供 Microsoft Entra 使用者管理的支援。 其他 Microsoft Entra ID 技術設定檔包括 AAD-Common 以使用其設定。 覆寫延伸模組檔案中的 AAD-Common 技術設定檔。
開啟原則的延伸模組檔案。 例如:
SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
。尋找 ClaimsProviders 元素。 將新的 ClaimsProvider 新增至 ClaimsProviders 元素。
在開頭
<Item Key="ClientId">
和結尾</Item>
元素之間插入您先前記錄的應用程式識別碼 。在開頭
<Item Key="ApplicationObjectId">
和結尾</Item>
元素之間插入您先前記錄的 Application ObjectID 。<!-- <ClaimsProviders> --> <ClaimsProvider> <DisplayName>Azure Active Directory</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="AAD-Common"> <Metadata> <!--Insert b2c-extensions-app application ID here, for example: 11111111-1111-1111-1111-111111111111--> <Item Key="ClientId"></Item> <!--Insert b2c-extensions-app application ObjectId here, for example: 22222222-2222-2222-2222-222222222222--> <Item Key="ApplicationObjectId"></Item> </Metadata> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider> <!-- </ClaimsProviders> -->
上傳您的自訂原則
- 登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取 頂端功能表中的 [設定 ] 圖示,從 [目錄 + 訂 用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 選擇 Azure 入口網站左上角的 [所有服務 ],然後搜尋並選取 [應用程式註冊 ]。
- 選取 [ 身分識別體驗架構 ]。
- 選取 [ 上傳自訂原則 ],然後上傳您變更的 TrustFrameworkExtensions.xml 原則檔案。
注意
Microsoft Entra ID 技術設定檔第一次將宣告保存至目錄時,它會檢查自訂屬性是否存在。 如果沒有,它會建立自訂屬性。
透過 Azure 入口網站 建立自訂屬性
內建和自訂原則之間會共用相同的擴充屬性。 當您透過入口網站體驗新增自訂屬性時,這些屬性會使用 存在於每個 B2C 租使用者中的 b2c-extensions-app 來註冊。
您可以在自訂原則中使用這些屬性之前或之後,使用入口網站 UI 來建立這些屬性。 當您在入口網站中建立屬性 loyaltyId 時,必須參考它,如下所示:
名稱 | 用於 |
---|---|
extension_loyaltyId |
自訂原則 |
extension_<b2c-extensions-app-guid>_loyaltyId |
Microsoft Graph 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 Graph API 中的自訂屬性(目錄延伸模組)是使用慣例 extension_{appId-without-hyphens}_{extensionProperty-name}
來命名,其中 {appId-without-hyphens}
是 appId 的移除版本 (在 Azure AD B2C 入口網站上稱為用戶端識別碼),且 b2c-extensions-app
只有 0-9 和 A-Z 字元。 例如,如果 應用程式的 appId b2c-extensions-app
是 25883231-668a-43a7-80b2-5685c3f874bc
,而屬性名稱為 loyaltyId
,則自訂屬性會命名為 extension_25883231668a43a780b25685c3f874bc_loyaltyId
。
瞭解如何 使用 Microsoft Graph API 管理 Azure AD B2C 租 使用者中的擴充屬性。
移除擴充屬性
不同于內建屬性,可以移除自訂屬性。 也可以移除擴充屬性的值。
重要
在您移除自訂屬性之前,請針對目錄中的每個帳戶,將擴充屬性值設定為 null
。 如此一來,您就會明確移除擴充屬性的值。 然後,繼續移除擴充屬性本身。 您可以使用 Microsoft Graph API 來查詢自訂屬性。
使用下列步驟,從租使用者中的使用者流程中移除自訂屬性:
- 以 Azure AD B2C 租使用者的全域管理員身分登入 Azure 入口網站 。
- 請確定您使用的是包含 Azure AD B2C 租使用者的目錄:
- 在入口網站工具列中選取 [ 目錄 + 訂用帳戶 ] 圖示。
- 在入口 網站設定 |[目錄 + 訂用帳戶 ] 頁面,在 [目錄名稱] 列表中尋找您的 Azure AD B2C 目錄,然後選取 [ 切換]
- 選擇 Azure 入口網站 左上角的 [所有服務],搜尋並選取 [Azure AD B2C]。
- 選取 [使用者屬性],然後選取您要刪除的屬性。
- 選取 [刪除],然後選取 [是] 予以確認。
使用 Microsoft Graph API 來管理自定義屬性。
下一步
瞭解如何 使用自定義原則新增宣告和自定義用戶輸入。 此範例使用內建宣告 『city』。 若要使用自定義屬性,請以您自己的自定義屬性取代 『city』。