Microsoft Graph カスタム クレーム ポリシーを使用してクレームをカスタマイズする (プレビュー)

要求とは、そのユーザーに発行するトークンの中にあるユーザーに関する ID プロバイダーが提示した情報を指します。 テナント管理者は、自身のテナントの特定のアプリケーションに対するトークンに組み込むクレームをカスタマイズできます。 クレームのカスタマイズでは、SAML、OAuth、OpenID Connect のプロトコルを使用したアプリケーションのクレームの構成がサポートされています。 クレームのカスタマイズを使用すると、次のことを実行できます。

  • トークンに含める要求を選択する。
  • まだ存在しない種類のクレームを作成します。
  • 特定の要求で出力されたデータのソースを選択または変更する。

この攻略ガイドでは、カスタム クレーム ポリシーの使用方法を理解するのに役立ついくつかの一般的なシナリオを取り上げます。

前提条件

Microsoft Entra ID でのクレームのカスタマイズ

Microsoft Entra ID では、アプリケーションで Microsoft Graph/PowerShell を使用してクレームをカスタマイズするための次の 2 つの方法がサポートされています。

次の例では、サービス プリンシパルのポリシーの作成、更新、置き換えを行います。 カスタム クレーム ポリシーは常に、サービス プリンシパル オブジェクトにリンクされます。 アプリケーションまたはサービス プリンシパルのカスタム クレーム ポリシーを作成する前に、前提条件の一部としてエンタープライズ アプリケーションが構成されていることを確認してください。

ブラウザーで Microsoft Graph エクスプローラーを開き、少なくともアプリケーション管理者として Microsoft Graph エクスプローラーにサインインし、次のいずれかのシナリオを選択します。

カスタム クレーム ポリシーを作成した後、カスタマイズされたクレームがトークンに含まれていることを確認するようにアプリケーションを構成する必要があります。 詳細については、「セキュリティに関する考慮事項」を参照してください。

トークンから基本要求を除外する

この例では、リンクされたサービス プリンシパルに対して発行されたトークンから基本クレーム セットを削除するカスタム クレーム ポリシーを作成します。

  1. Microsoft Graph エクスプローラーで、サービス プリンシパル API を使用するためにカスタム クレーム ポリシーを構成するアプリケーションを識別します。

  2. 次の API を実行してカスタム クレーム ポリシーを作成します。 このポリシーは、サービス プリンシパルにリンクされ、トークンから基本クレームを除外します。

    PUT https://graph.microsoft.com/beta/servicePrincipals/<servicePrincipal-id>/claimsPolicy
    

    要求本文:

    {
        "includeBasicClaimSet": false
    }
    
  3. 新しいポリシーを表示するには、次のコマンドを実行します

    GET https://graph.microsoft.com/beta/servicePrincipals/<servicePrincipal-id>/claimsPolicy
    

    応答:

    HTTP/1.1 200 OK
    Content-type: application/json
    
    {
        "@odata.context": "…",
        "id": "aaaaaaaa-bbbb-cccc-1111-222222222222.",
        "includeBasicClaimSet": false,
        "includeApplicationIdInIssuer": false,
        "audienceOverride": null,
        "groupFilter": null,
        "claims": []
    }
    

トークンに要求として EmployeeIDTenantCountry を含める

この例では、トークンに EmployeeIDTenantCountry を追加するクレームのカスタマイズを作成します。 この例では、トークンに基本クレーム セットも含めます。

  1. Microsoft Graph エクスプローラーで、サービス プリンシパル API を使用するためにカスタム クレーム ポリシーを構成するアプリケーションを識別します。

  2. 次の API を実行してカスタム クレーム ポリシーを作成します。 このポリシーは、サービス プリンシパルにリンクされ、トークンに EmployeeID クレームと TenantCountry クレームを追加します。

    PUT https://graph.microsoft.com/beta/servicePrincipals/<servicePrincipal-id>/claimsPolicy
    

    要求本文:

    {
        "includeBasicClaimSet": true,
        "claims": [
            {
                "@odata.type": "#microsoft.graph.customClaim",
                "name": "employeeId",
                "namespace": null,
                "tokenFormat": [
                    "jwt"
                ],
                "samlAttributeNameFormat": null,
                "configurations": [
                    {
                        "condition": null,
                        "attribute": {
                            "@odata.type": "#microsoft.graph.sourcedAttribute",
                            "id": " employeeid",
                            "source": "user",
                            "isExtensionAttribute": false
                        },
                        "transformations": []
                    }
                ]
            },
            {
                "@odata.type": "#microsoft.graph.customClaim",
                "name": "country",
                "namespace": null,
                "tokenFormat": [
                    "jwt"
                ],
                "samlAttributeNameFormat": null,
                "configurations": [
                    {
                        "condition": null,
                        "attribute": {
                            "@odata.type": "#microsoft.graph.sourcedAttribute",
                            "id": " tenantcountry",
                            "source": "user",
                            "isExtensionAttribute": false
                        },
                        "transformations": []
                    }
                ]
            }
        ]
    }
    
  3. 新しいポリシーを表示するには、次のコマンドを実行します。

    GET https://graph.microsoft.com/beta/servicePrincipals/<servicePrincipal-id>/claimsPolicy
    

    応答:

    {
        "@odata.context": "…",
        "id": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "includeBasicClaimSet": true,
        "includeApplicationIdInIssuer": false,
        "audienceOverride": null,
        "groupFilter": null,
        "claims": [...]
    }
    

トークンで要求変換を使用する

この例では、リンクされたサービス プリンシパルに対して発行された JWT に、カスタム クレーム "JoinedData" を出力するようにポリシーを更新します。 この要求には、ユーザー オブジェクトの extensionattribute1 属性に格納されたデータと "-ext" を結合して作成された値が追加されます。 この例では、トークンで基本要求セットを除外します。

  1. Microsoft Graph エクスプローラーで、サービス プリンシパル API を使用するためにカスタム クレーム ポリシーを構成するアプリケーションを識別します。

  2. 次の API を実行してカスタム クレーム ポリシーを作成します。 このポリシーは、カスタム クレーム JoinedData をトークンに出力します。

    PATCH https://graph.microsoft.com/beta/servicePrincipals/<servicePrincipal-id>/claimsPolicy
    

    要求本文:

    {
        "includeBasicClaimSet": true,
        "claims": 
        [
            {
                "@odata.type": "#microsoft.graph.customClaim",
                "name": "JoinedData",
                "namespace": null,
                "tokenFormat": [
                    "jwt"
                ],
                "samlAttributeNameFormat": null,
                "configurations": 
                [
                    {
                        "condition": null,
                        "attribute": null,
                        "transformations": 
                        [
                            {
                                "@odata.type": "#microsoft.graph.joinTransformation",
                                "separator": "-",
                                "input": 
                                {
                                    "treatAsMultiValue": false,
                                    "attribute": 
                                    {
                                        "@odata.type": "#microsoft.graph.sourcedAttribute",
                                        "id": "extensionattribute1",
                                        "source": "user",
                                        "isExtensionAttribute": false
                                    }
                                },
                                "input2": 
                                {
                                    "treatAsMultiValue": false,
                                    "attribute": 
                                    {
                                        "@odata.type":"#microsoft.graph.valueBasedAttribute",
                                        "value": "ext"
                                     }
                                }
                            }
                        ]
                    }
                ]
            }
        ]
    }
    

    Note

    カスタム クレーム ポリシーは、厳密に型指定されたポリシーであり、各変換では異なる @odata.type 値が使用されます。

  3. 新しいポリシーを表示し、ポリシーの ObjectId を取得するには、次のコマンドを実行します。

    GET https://graph.microsoft.com/beta/servicePrincipals/<servicePrincipal-id>/claimsPolicy
    

    応答:

    {
        "@odata.context": "…",
        "id": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "includeBasicClaimSet": true,
        "includeApplicationIdInIssuer": false,
        "audienceOverride": null,
        "groupFilter": null,
        "claims": [...]
    }