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 Portal の右上隅でディレクトリを切り替えて、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. [保存] を選択します。

新しく作成したカスタム属性を使用するユーザー フローを使用して新しいユーザーを作成したら、Microsoft Graph Explorer でオブジェクトのクエリを実行できます。 または、ユーザー フローに対して [ユーザー フローを実行します] 機能を使用して、カスタマー エクスペリエンスを確認できます。 これで、ShoeSize がサインアップ中に収集される属性の一覧や、アプリケーションに送り返されるトークンに表示されるようになります。

Azure AD B2C 拡張アプリ

拡張属性は、ユーザーに関するデータを保持できる場合でも、アプリケーション オブジェクトにしか登録できません。 拡張属性は、b2c-extensions-app というアプリケーションに関連付けられます。 Azure AD B2C は、ユーザー データを保存するためにこのアプリケーションを使用します。このため、このアプリケーションは変更しないでください。 このアプリケーションは、Azure AD B2C (アプリの登録) から確認できます。

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

  1. Azure portal にサインインします。
  2. ご自分の Azure AD B2C テナントが含まれるディレクトリを必ず使用してください。 ポータル ツールバーの [Directories + subscriptions]\(ディレクトリ + サブスクリプション\) アイコンを選択します。
  3. [ポータルの設定] | [Directories + subscriptions]\(ディレクトリ + サブスクリプション\) ページで Azure AD B2C ディレクトリを [ディレクトリ名] リストで見つけ、 [Switch] を選択します。
  4. 左側のメニューで、 [Azure AD B2C] を選択します。 または、 [すべてのサービス] を選択し、 [Azure AD B2C] を検索して選択します。
  5. [アプリの登録] を選択してから、 [すべてのアプリケーション] を選択します。
  6. b2c-extensions-app. Do not modify. Used by AADB2C for storing user data. アプリケーションを選択します。
  7. [アプリケーション ID] をコピーします。 例: 11111111-1111-1111-1111-111111111111.

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

  1. Azure portal にサインインします。
  2. ご自分の Azure AD B2C テナントが含まれるディレクトリを必ず使用してください。 ポータル ツールバーの [Directories + subscriptions]\(ディレクトリ + サブスクリプション\) アイコンを選択します。
  3. [ポータルの設定] | [Directories + subscriptions]\(ディレクトリ + サブスクリプション\) ページで Azure AD B2C ディレクトリを [ディレクトリ名] リストで見つけ、 [Switch] を選択します。
  4. 左側のメニューで、 [Azure AD B2C] を選択します。 または、 [すべてのサービス] を選択し、 [Azure AD B2C] を検索して選択します。
  5. [アプリの登録] を選択してから、 [すべてのアプリケーション] を選択します。
  6. b2c-extensions-app. Do not modify. Used by AADB2C for storing user data. アプリケーションを選択します。
  7. 次の識別子をクリップボードにコピーして保存します。
    • アプリケーション ID。 例: 11111111-1111-1111-1111-111111111111.
    • オブジェクト ID。 例: 22222222-2222-2222-2222-222222222222.

カスタム ポリシーの変更

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

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

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

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

  4. 記録しておいたアプリケーション オブジェクト ID を、開始 と終了 </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 B2C AD テナントを含むディレクトリを使用していることを確認します。 ポータル ツールバーの [Directories + subscriptions]\(ディレクトリ + サブスクリプション\) アイコンを選択します。
  3. [ポータルの設定] | [Directories + subscriptions]\(ディレクトリ + サブスクリプション\) ページで Azure AD B2C ディレクトリを [ディレクトリ名] リストで見つけ、 [Switch] を選択します。
  4. Azure portal の左上隅にある [すべてのサービス] を選択し、 [アプリの登録] を検索して選択します。
  5. [Identity Experience Framework] を選択します。
  6. [カスタム ポリシーのアップロード] を選択し、変更した TrustFrameworkExtensions.xml ポリシー ファイルをアップロードします。

注意

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

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

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

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

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

次の例は、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>

MS Graph API でのカスタム属性の使用

Microsoft Graph API では、拡張属性を使用したユーザーの作成と更新がサポートされています。 Graph API の拡張属性には、extension_ApplicationClientID_attributename の規則を使用して名前が付けられます。ここで ApplicationClientIDb2c-extensions-app アプリケーションのextension_ApplicationClientID_attributename です。 拡張属性名で表されるように、アプリケーション (クライアント) ID にはハイフンが含まれないことに注意してください。 次に例を示します。

"extension_831374b3bd5041bfaa54263ec9e050fc_loyaltyId": "212342" 

拡張属性を削除する

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

重要

拡張機能やカスタム属性を削除する前に、ディレクトリ内の各アカウントに対して、拡張属性の値を null に設定します。 この方法で拡張属性の値を明示的に削除します。 続いて拡張属性自体を削除します。 拡張機能とカスタム属性は MS 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. [削除] を選択してから、 [はい] を選択して確定します。

カスタム属性を削除するには、MS Graph API を使用して Delete コマンドを使用します。

次の手順

カスタム ポリシーを使用した要求の追加とユーザー入力のカスタマイズに関するガイドラインに従ってください。 このサンプルでは、組み込みの要求の "city" を使用します。 カスタム属性を使用するには、"city" を独自のカスタム属性に置き換えます。