次の方法で共有


Microsoft Graph で要求マッピング ポリシーを使用して要求をカスタマイズする

トークンにアクセスするための追加のユーザー属性を追加して、アプリが承認の決定を改善するのに役立ちます。 この記事では、Microsoft Graph API を使用して要求マッピング ポリシーを作成して割り当て、トークンにアクセスするためのカスタム要求を追加し、トークン内のカスタム要求を確認する方法について説明します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • Graph エクスプローラー などの API クライアントへのアクセス。アプリケーション管理者ロールを持つMicrosoft Entra アカウントでサインインし、次の委任されたアクセス許可を付与します: Policy.Read.AllPolicy.ReadWrite.ApplicationConfigurationApplication.ReadWrite.All
  • 要求マッピング ポリシーを割り当てるクライアント サービス プリンシパル。
  • API を公開するリソース サービス プリンシパル。

要求マッピング ポリシーを作成する

このポリシーは、ユーザー オブジェクトからトークンに department 要求を追加します。

要求

POST https://graph.microsoft.com/beta/policies/claimsMappingPolicies
Content-type: application/json

{
 "definition": [
   "{\"ClaimsMappingPolicy\":{\"Version\":1,\"IncludeBasicClaimSet\":\"true\",\"ClaimsSchema\":[{\"Source\":\"user\",\"ID\":\"department\",\"JwtClaimType\":\"department\"}]}}"
 ],
 "displayName": "ExtraClaimsTest"
}

応答

この記事の後半で使用する応答の ID を記録します。

HTTP/1.1 201 Created
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#policies/claimsMappingPolicies/$entity",
  "id": "06d5d20d-2955-45f8-a15d-cf2f434b8116",
  "deletedDateTime": null,
  "definition": [
      "{\"ClaimsMappingPolicy\":{\"Version\":1,\"IncludeBasicClaimSet\":\"true\",\"ClaimsSchema\":[{\"Source\":\"user\",\"ID\":\"department\",\"JwtClaimType\":\"department\"}]}}"
  ],
  "displayName": "ExtraClaimsTest",
  "isOrganizationDefault": false
}

ポリシーに複数の属性を追加することもできます。 次の例では、 department 要求と companyname 要求の両方をトークンに追加します。

{
  "definition": [
        "{\"ClaimsMappingPolicy\":{\"Version\":1,\"IncludeBasicClaimSet\":\"true\",\"ClaimsSchema\":[{\"Source\":\"user\",\"ID\":\"department\",\"JwtClaimType\":\"department\"},{\"Source\":\"user\",\"ID\":\"companyname\",\"JwtClaimType\":\"companyname\"}]}}"
    ],
 "displayName": "ExtraClaimsTest"
}

リソース サービス プリンシパルにポリシーを割り当てる

次の要求は、要求マッピング ポリシーをサービス プリンシパルに割り当てます。 応答が成功すると、 204 No Contentが返されます。

POST https://graph.microsoft.com/v1.0/servicePrincipals/3bdbbc1a-5e94-4c2b-895f-231d8af4beee/claimsMappingPolicies/$ref
Content-type: application/json

{
 "@odata.id": "https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/06d5d20d-2955-45f8-a15d-cf2f434b8116"
}

リソース アプリケーション オブジェクトでマップされた要求を有効にする

マップされた要求を受け入れ、アクセス トークン バージョン 2 を使用するようにアプリケーション オブジェクトを更新します。 応答が成功すると、 204 No Contentが返されます。

PATCH https://graph.microsoft.com/v1.0/applications/3dfbe85f-2d14-4660-b1a2-cb9c633ceebb
Content-type: application/json

{
  "api": {
    "acceptMappedClaims": true,
    "requestedAccessTokenVersion": 2
  }
}

アクセス トークンをテストする

Microsoft ID プラットフォームと OAuth 2.0 承認コード フローに従うことを許可する API クライアントで、アクセス トークンを取得します。 scope パラメーターには、リソース サービス プリンシパルによって公開されるスコープの 1 つ (scope-defined-by-your-apiapi://00001111-aaaa-2222-bbbb-3333cccc4444/testされる可能性があるopenid profile email scope-defined-by-your-apiなど) を含めます。

jwt.ms を使用してアクセス トークンをデコードします。 department要求はトークンに表示されます。

リソースをクリーンアップする

サービス プリンシパルから要求マッピング ポリシーの割り当てを解除するには、次の要求を使用します。 応答が成功すると、 204 No Contentが返されます。

DELETE https://graph.microsoft.com/v1.0/servicePrincipals/3bdbbc1a-5e94-4c2b-895f-231d8af4beee/claimsMappingPolicies//06d5d20d-2955-45f8-a15d-cf2f434b8116/$ref