要求中のディレクトリ拡張属性

ディレクトリ拡張属性は、ユーザーなどのディレクトリ オブジェクトにさらに多くのデータを格納する方法を提供します。 アプリケーションに対する要求の出力に使用できるのは、ユーザー オブジェクトの拡張属性だけです。 この記事では、トークン要求でユーザー データをアプリケーションに送信するために、ディレクトリ拡張属性を使用する方法について説明します。

注意

Microsoft Graph には、Graph オブジェクトをカスタマイズするためのその他 3 つの拡張メカニズムが用意されています。 これらは、拡張属性 1 から 15、オープン拡張機能、およびスキーマ拡張機能です。 詳細については、Microsoft Graph のドキュメントを参照してください。 オープンとスキーマの拡張機能を使用して Microsoft Graph オブジェクトに格納されたデータは、トークン内の要求のソースとしては使用できません。

ディレクトリ拡張属性は常にテナント内のアプリケーションと関連付けられます。 ディレクトリ属性の名前には、その名前にアプリケーションの appId が含まれます。

ディレクトリ拡張属性の識別子の形式は、"Extension_xxxxxxxxx_AttributeName" です。extension_xxxxxxxxx_AttributeName ここで、"xxxxxxxxx" は、拡張子が定義されたアプリケーションの "appId" であり、文字 0 から 9 と A から Z のみが含まれます。xxxxxxxxx

ディレクトリ拡張を登録して使用する

次のいずれかの方法でディレクトリ拡張属性を登録します。

Microsoft Entra Connect からのデータを使用して要求を送信する

Microsoft Entra Connect を使用して作成および同期されるディレクトリ拡張属性は、Microsoft Entra Connect によって使用されるアプリケーション ID と常に関連付けられます。 これらの属性は、ポータルのエンタープライズ アプリケーションの構成で要求として構成することで、両方の要求のソースとして使用できます。 AD Connect を使用してディレクトリ拡張属性を作成すると、SAML SSO 要求構成に表示されます。

Graph または PowerShell を使用して要求を生成する

ディレクトリ拡張属性を Microsoft Graph または PowerShell を使用するように登録すると、アプリケーションはユーザーがサインインする時に、その属性内のデータを受信するように構成できます。 アプリケーション マニフェストで設定できるオプションの要求を使用して、アプリケーションに登録されているディレクトリ拡張のデータを受信するようにアプリケーションを構成できます。

その後、マルチテナント アプリケーションで、独自に使用するディレクトリ拡張属性を登録できます。 アプリケーションがテナントにプロビジョニングされると、関連付けられているディレクトリ拡張は、そのテナント内のユーザーが利用可能になり使用されます。 ディレクトリ拡張を使用すると、Microsoft Graph を使用してデータを格納および取得できます。 ディレクトリ拡張は、Microsoft Identity プラットフォームがアプリケーションに出力するトークン内の要求にマップすることもできます。

別のアプリケーションに登録されている拡張属性からのデータを使用して、アプリケーションから要求を送信する必要がある場合は、要求 マッピング ポリシーを使用して、拡張属性を要求にマッピングする必要があります。

ディレクトリ拡張属性を管理するための一般的なパターンは、必要なすべてのディレクトリ拡張のための専用のアプリケーションを登録することです。 この種類のアプリケーションを使用すると、すべての拡張機能の名前に同じ appID が含まれます。

たとえば、次のコードが示すのは、OAuth/OIDC トークンのディレクトリ拡張属性から 1 つの要求を生成するための要求マッピング ポリシーです。

{
    "ClaimsMappingPolicy": {
        "Version": 1,
        "IncludeBasicClaimSet": "false",
        "ClaimsSchema": [{
                "Source": "User",
                "ExtensionID": "extension_xxxxxxx_test",
                "JWTClaimType": "http://schemas.contoso.com/identity/claims/exampleclaim"
            },
        ]
    }
}

ここで、"xxxxxxx" は、拡張機能が登録されたアプリケーションの appID (またはクライアント ID) です。xxxxxxx

警告

上の例で示す通り、ディレクトリの拡張属性に対する要求 マッピング ポリシーを定義するときは、ClaimsSchema 配列の本体の中で ID プロパティの代わりに ExtensionID プロパティを使用します。

ヒント

オブジェクトにディレクトリ拡張属性を設定するときは、大文字と小文字の区別の整合性が重要です。 拡張属性名は、設定時には大文字と小文字が区別されませんが、トークン サービスがディレクトリから読み取るときは大文字と小文字が区別されます。 拡張属性がユーザー オブジェクトに "LegacyId" という名前で設定され、別のユーザー オブジェクトに "legacyid" という名前で設定された場合、この属性が要求に "LegacyId" という名前を使用してマッピングされると、最初のユーザーに対してはデータが正常に取得され、要求はトークンに含まれますが、2 番目のユーザーに対してはこれが行われません。

次のステップ