Настройка утверждений с помощью политики сопоставления утверждений в Microsoft Graph

Вы можете добавить дополнительные атрибуты пользователя для маркеров доступа, чтобы помочь приложению принимать более качественные решения об авторизации. В этой статье показано, как использовать API Microsoft Graph для создания и назначения политики сопоставления утверждений, добавления настраиваемых утверждений в маркеры доступа и проверки пользовательского утверждения в маркере.

Предварительные условия

Чтобы завершить работу с этим руководством, вам потребуется:

  • Доступ к клиенту API, например Graph Обозреватель, вход с помощью учетной записи Microsoft Entra с ролью администратора приложения и предоставление следующих делегированных разрешений: Policy.Read.All, Policy.ReadWrite.ApplicationConfiguration и Application.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"
}

Отклик

Запишите идентификатор из ответа, который будет использоваться далее в этой статье.

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
  }
}

Тестирование маркера доступа

В клиенте API, который позволяет следовать потоку кода авторизации платформа удостоверений Майкрософт и OAuth 2.0, получите маркер доступа. В параметре область добавьте одну из областей, предоставляемых субъектом-службой ресурсов, например openid profile email scope-defined-by-your-api , где scope-defined-by-your-api может быть api://00001111-aaaa-2222-bbbb-3333cccc4444/test.

Используйте 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