Azure Active Directory B2C でカスタム属性を定義する

開始する前に[ポリシーの種類の選択] セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。

カスタム ポリシーを使用した要求の追加とユーザー入力のカスタマイズに関する記事では、組み込みのユーザー プロファイル属性を使用する方法について説明しています。 この記事では、Azure Active Directory B2C (Azure AD B2C) ディレクトリでカスタム属性を有効にします。 新しい属性は、後でカスタム要求として、ユーザー フローカスタム ポリシーで同時に使用することができます。

Azure AD B2C ディレクトリには、組み込みの属性セットが付属します。 ただし、次のような場合には、特定のシナリオを管理するために、独自の属性を作成する必要があります。

  • 顧客向けアプリケーションで、loyaltyId 属性を保持する必要がある。
  • ID プロバイダーが、保存する必要がある一意のユーザー識別子 (uniqueUserGUID) を保持している。
  • カスタム ユーザー体験で、他のロジックを運用するために必要な、ユーザーの状態 (migrationStatus) を保持する必要がある。

用語の拡張機能プロパティカスタム属性、およびカスタム要求では、この記事のコンテキストと同じ内容を参照します。 名前は、アプリケーション、オブジェクト、ポリシーなどのコンテキストによって異なります。

Azure AD B2C では、各ユーザー アカウントで保存される属性セットを拡張できます。 また、Microsoft Graph API を使用してこれらの属性を読み書きすることもできます。

前提条件

カスタム属性を作成する

  1. Azure AD B2C テナントの全体管理者として Azure Portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure Portal の左上隅の [すべてのサービス] を選択し、 [Azure AD B2C] を検索して選択します。
  4. [ユーザー属性][追加] の順に選択します。
  5. カスタム属性の [名前] ("ShoeSize" など) を指定します。
  6. [データ型] を選択します。 [文字列][ブール値] 、および [Int] (整数) のみを使用できます。
  7. オプションで、情報目的のために [説明] を入力します。
  8. [作成] を選択します

これで、このカスタム属性が [ユーザー属性] の一覧やユーザー フローで使用できるようになります。 カスタム属性が作成されるのは、いずれかのユーザー フローで初めて使用されるときのみであり、ユーザー属性の一覧に追加するときではありません。

ユーザー フローでカスタム属性を使用する

  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 (アプリの登録) から確認できます。

拡張機能アプリのアプリケーション ID を取得する

  1. Azure portal にサインインします。
  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. [アプリケーション ID] をコピーします。 例: 11111111-1111-1111-1111-111111111111.

拡張機能アプリのアプリケーション プロパティを取得する

  1. Azure portal にサインインします。
  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. 次の識別子をクリップボードにコピーして保存します。
    • アプリケーション ID。 例: 11111111-1111-1111-1111-111111111111.
    • オブジェクト ID。 例: 22222222-2222-2222-2222-222222222222.

カスタム ポリシーの変更

ポリシーでカスタム属性を有効にするには、AAD-Common 技術プロファイルのメタデータで、アプリケーション ID とアプリケーション オブジェクト ID を指定します。 AAD-Common* 技術プロファイルは、その基盤である Microsoft Entra ID 技術プロファイルに含まれており、Microsoft Entra ユーザー管理のためのサポートを提供するものです。 他の Microsoft Entra ID 技術プロファイルには、AAD-Common が含まれており、その構成が使われています。 拡張ファイルで、AAD-Common 技術プロファイルをオーバーライドしてください。

  1. お使いのポリシーの拡張ファイルを開きます。 たとえば、「 SocialAndLocalAccounts/TrustFrameworkExtensions.xml 」のように入力します。

  2. ClaimsProviders 要素を見つけます。 ClaimsProviders 要素に新しい ClaimsProvider を追加します。

  3. 記録しておいたアプリケーション ID を、開始 <Item Key="ClientId"> と終了 </Item> の要素間に挿入します。

  4. 記録しておいたアプリケーション オブジェクト ID を、開始 <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: 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> -->
    

カスタム ポリシーのアップロード

  1. Azure portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure portal の左上隅にある [すべてのサービス] を選択し、 [アプリの登録] を検索して選択します。
  4. [Identity Experience Framework] を選択します。
  5. [カスタム ポリシーのアップロード] を選択し、変更した TrustFrameworkExtensions.xml ポリシー ファイルをアップロードします。

Note

Microsoft Entra ID 技術プロファイルで要求がディレクトリに最初に保持される際には、カスタム属性が存在するかどうかがチェックされます。 そうでない場合は、カスタム属性を作成します。

Azure portal を使用してカスタム属性を作成する

組み込みポリシーとカスタム ポリシー間では、同じ拡張属性が共有されます。 ポータルのエクスペリエンスを使用してカスタム属性を追加すると、これらの属性が、すべての B2C テナントに存在する b2c-extensions-app を使用して登録されます。

これらの属性は、カスタム ポリシーで使用する前後に、ポータルの UI を使用してを作成できます。 ポータルで属性 loyaltyId を作成するときに、次のようにこの属性を参照する必要があります。

名前 使用される場所
extension_loyaltyId カスタム ポリシー
extension_<b2c-extensions-app-guid>_loyaltyId Microsoft Graph API

注意

カスタム ポリシーでカスタム属性を使用する場合、Azure AD B2C ディレクトリ内で正しいデータ マッピングを実行できるように、要求の種類 ID に extension_ のプレフィックスを付ける必要があります。

次の例は、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} は 0 から 9 と A から Z の文字のみの b2c-extensions-appappId (Azure AD B2C ポータルではクライアント ID と呼ばれます) のハイフンが削除されたバージョンです。 たとえば、b2c-extensions-app アプリケーションの appId25883231-668a-43a7-80b2-5685c3f874bc で、属性名が loyaltyId の場合、カスタム属性には extension_25883231668a43a780b25685c3f874bc_loyaltyId という名前が付けられます。

Microsoft Graph API を使用して、Azure AD B2C テナントで拡張属性を管理する方法について説明します。

拡張属性を削除する

組み込み属性とは異なり、カスタム属性は削除できます。 拡張属性の値も削除できます。

重要

カスタム属性を削除する前に、ディレクトリ内の各アカウントに対して、拡張属性の値を null に設定します。 この方法で拡張属性の値を明示的に削除します。 続いて拡張属性自体を削除します。 カスタム属性は、Microsoft Graph API を使用してクエリで問い合わせることができます。

テナントでユーザー フローからカスタム属性を削除するには、次の手順に従います。

  1. Azure AD B2C テナントの全体管理者として Azure Portal にサインインします。
  2. ご利用の Azure AD B2C テナントが含まれるディレクトリを必ず使用してください。
    1. ポータル ツールバーの [Directories + subscriptions](ディレクトリ + サブスクリプション) アイコンを選択します。
    2. [ポータルの設定] | [Directories + subscriptions](ディレクトリ + サブスクリプション) ページの [ディレクトリ名] の一覧で自分の Azure AD B2C ディレクトリを見つけて、 [切り替え] を選択します。
  3. Azure Portal の左上隅の [すべてのサービス] を選択し、 [Azure AD B2C] を検索して選択します。
  4. [ユーザー属性] を選択してから、削除する属性を選択します。
  5. [削除] を選択してから、 [はい] を選択して確定します。

Microsoft Graph API を使用してカスタム属性を管理します。

次のステップ

カスタム ポリシーを使用して要求を追加し、ユーザー入力をカスタマイズする方法を確認します。 このサンプルでは、組み込みの要求の "city" を使用します。 カスタム属性を使用するには、"city" を独自のカスタム属性に置き換えます。