Compartilhar via


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

Pode adicionar atributos de utilizador adicionais aos tokens de acesso para ajudar a sua aplicação a tomar melhores decisões de autorização. Este artigo mostra como utilizar as APIs do Microsoft Graph para criar e atribuir uma política de mapeamento de afirmações, adicionar afirmações personalizadas a tokens de acesso e verificar a afirmação personalizada no token.

Pré-requisitos

Para concluir este tutorial, precisa de:

  • Acesso a um cliente de API, como o Graph Explorer, com sessão iniciada com uma conta Microsoft Entra que tem a função de Administrador de Aplicações e concede as seguintes permissões delegadas: Policy.Read.All, Policy.ReadWrite.ApplicationConfiguration e Application.ReadWrite.All.
  • Um principal de serviço de cliente ao qual atribuir a política de mapeamento de afirmações.
  • Um principal de serviço de recursos que expõe APIs.

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

Esta política adiciona a department afirmação do objeto de utilizador 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

Registe o ID da resposta a utilizar mais à frente 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
}

Também pode adicionar mais do que um atributo à política. O exemplo seguinte adiciona as department afirmações e 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 um principal de serviço de recursos

O pedido seguinte atribui a política de mapeamento de afirmações a um principal de serviço. Uma resposta com êxito devolve 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"
}

Ativar afirmações mapeadas no objeto da aplicação de recursos

Atualize o objeto da aplicação para aceitar afirmações mapeadas e utilizar o token de acesso versão 2. Uma resposta com êxito devolve 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

Num cliente de API que lhe permite seguir o fluxo de código de autorização plataforma de identidade da Microsoft e OAuth 2.0, obtenha um token de acesso. No parâmetro de âmbito , inclua um dos âmbitos expostos pelo principal de serviço de recursos, como, por openid profile email scope-defined-by-your-api exemplo, onde scope-defined-by-your-api pode ser api://00001111-aaaa-2222-bbbb-3333cccc4444/test.

Utilize jwt.ms para descodificar o token de acesso. A department afirmação deve aparecer no token.

Limpe os recursos

Para anular a atribuição da política de mapeamento de afirmações do principal de serviço, utilize o seguinte pedido. Uma resposta com êxito devolve 204 No Content.

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