Personalizar declarações com a política de mapeamento de declarações no Microsoft Graph

Você pode adicionar atributos de usuário extras aos tokens de acesso para ajudar seu aplicativo a tomar melhores decisões de autorização. Este artigo mostra como usar APIs do Microsoft Graph para criar e atribuir uma política de mapeamento de declarações, adicionar declarações personalizadas para acessar tokens e verificar a declaração personalizada no token.

Pré-requisitos

Para concluir este tutorial, você precisa:

  • Acesso a um cliente de API, como o Graph Explorer, conectado com uma conta do Microsoft Entra que tenha a função de Administrador de Aplicativos e conceda as seguintes permissões delegadas: Policy.Read.All, Policy.ReadWrite.ApplicationConfiguration e Application.ReadWrite.All.
  • Uma entidade de serviço ao cliente à qual atribuir a política de mapeamento de declarações.
  • Uma entidade de serviço de recurso que expõe APIs.

Criar uma política de mapeamento de declarações

Essa política adiciona a department declaração do objeto de usuário ao token.

Solicitação

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

Resposta

Registre a ID da resposta para usar posteriormente neste artigo.

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
}

Você também pode adicionar mais de um atributo à política. O exemplo a seguir adiciona as department declarações and companyname ao token.

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

Atribuir a política a uma entidade de serviço de recurso

A solicitação a seguir atribui a política de mapeamento de declarações a uma entidade de serviço. Uma resposta bem-sucedida retorna 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"
}

Habilitar declarações mapeadas no objeto de aplicativo de recurso

Atualize o objeto de aplicativo para aceitar declarações mapeadas e usar o token de acesso versão 2. Uma resposta bem-sucedida retorna 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
  }
}

Testar o token de acesso

Em um cliente de API que permite que você siga a plataforma de identidade da Microsoft e o fluxo de código de autorização do OAuth 2.0, obtenha um token de acesso. No parâmetro scope , inclua um dos escopos expostos pela entidade de serviço de recurso, como openid profile email scope-defined-by-your-api onde scope-defined-by-your-api pode estar api://00001111-aaaa-2222-bbbb-3333cccc4444/test.

Use jwt.ms para decodificar o token de acesso. A department declaração deve aparecer no token.

Limpe os recursos

Para cancelar a atribuição da política de mapeamento de declarações da entidade de serviço, use a solicitação a seguir. Uma resposta bem-sucedida retorna 204 No Content.

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