次の方法で共有


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

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください

開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 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 テナントの外部 ID ユーザー フロー属性管理者以上として Azure portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure portal の左上隅にある [ すべてのサービス ] を選択し、 Azure AD B2C を検索して選択します。
  4. [ユーザー属性] を選択し、[追加] を選択します。
  5. カスタム属性 の名前 を指定します (例: 「ShoeSize」)。
  6. データタイプを選択します。 StringBoolean、および Int のみ使用できます。
  7. 必要に応じて、情報提供のために [説明 ] を入力します。
  8. を選択してを作成します。

カスタム属性が ユーザー属性 の一覧で使用可能になり、ユーザー フローで使用できるようになりました。 カスタム属性は、ユーザー フローで初めて使用されるときにのみ作成され、 ユーザー属性の一覧に追加するときには作成されません。

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

  1. Azure AD B2C テナントで、[ ユーザー フロー] を選択します。
  2. ポリシー ("B2C_1_SignupSignin" など) を選択して開きます。
  3. [ユーザー属性] を選択し、カスタム属性 ("ShoeSize" など) を選択します。 保存 を選択します。
  4. [ アプリケーション要求 ] を選択し、カスタム属性を選択します。
  5. 保存 を選択します。

ユーザー フローを使用して新しいユーザーを作成したら、ユーザー フロー の [ユーザー フローの実行 ] 機能を使用して、カスタマー エクスペリエンスを確認できます。 サインアップの過程で収集された属性のリストに ShoeSize が表示され、アプリケーションに返送されるトークンにも 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] をコピーします。 例: 00001111-aaaa-2222-bbbb-3333cccc4444

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

  1. Azure portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. 左側のメニューで、 Azure AD B2C を選択します。 または、[ すべてのサービス ] を選択し、 Azure AD B2C を検索して選択します。
  4. アプリの登録 を選択し、すべてのアプリケーション を選択します。
  5. b2c-extensions-app を選択します。変更しないでください。AADB2C がユーザーデータを格納するために使用されます。アプリケーション。
  6. 次の識別子をクリップボードにコピーして保存します。
    • アプリケーション ID。 例: 00001111-aaaa-2222-bbbb-3333cccc4444
    • オブジェクト ID。 例: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb

カスタムポリシーを変更する

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

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

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

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

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

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

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

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

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

名前 で使用されます
extension_loyaltyId カスタム ポリシー
extension_<b2c-extensions-app-guid>_loyaltyId マイクロソフト グラフ 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}b2c-extensions-app の不要な部分を取り除いたものであり、0 から 9 と A から Z の文字のみを含んでいます(Azure AD B2C ポータルではクライアント ID と呼ばれます)。 たとえば、 アプリケーションの b2c-extensions-app11112222-bbbb-3333-cccc-4444dddd5555 で、属性名が loyaltyId の場合、カスタム属性の名前は extension_25883231668a43a780b25685c3f874bc_loyaltyId になります。

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

拡張属性の削除

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

重要

カスタム属性を削除する前に、ディレクトリ内のアカウントごとに、extension 属性の値を null に設定します。 これにより、拡張属性の値を明示的に削除します。 次に、拡張属性自体の削除を続けます。 カスタム属性は、Microsoft Graph API を使用してクエリを実行できます。

次の手順を使用して、テナント内のユーザー フローからカスタム属性を削除します。

  1. Azure AD B2C テナントの外部 ID ユーザー フロー属性管理者以上として Azure portal にサインインします。
  2. Azure AD B2C テナントを含むディレクトリを使用していることを確認します。
    1. ポータル ツールバーの [Directories + subscriptions](ディレクトリ + サブスクリプション) アイコンを選択します。
    2. ポータル設定 |[ディレクトリ + サブスクリプション] ページで、 [ディレクトリ名] の一覧で Azure AD B2C ディレクトリを見つけて、 [切り替え] を選択します
  3. Azure portal の左上隅にある [ すべてのサービス ] を選択し、 Azure AD B2C を検索して選択します。
  4. [ユーザー属性] を選択し、削除する属性を選択します。
  5. [削除] を選択してから、 [はい] を選択して確定します。

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

次のステップ

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