Ponto de extremidade UserInfo da plataforma de identidade da Microsoft

Como parte do padrão OIDC (OpenID Connect), o ponto de extremidade UserInfo retorna informações sobre um usuário autenticado.

Encontrar o ponto de extremidade de configuração conhecido

Você pode encontrar o ponto de extremidade UserInfo programaticamente lendo o campo userinfo_endpoint do documento de configuração OpenID em https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration. Não recomendamos codificar o ponto de extremidade UserInfo nos seus aplicativos. Em vez disso, use o documento de configuração do OIDC para localizar o ponto de extremidade no runtime.

O ponto de extremidade UserInfo normalmente é chamado automaticamente por bibliotecas compatíveis com OIDC para obter informações sobre o usuário. Na lista de declarações identificadas no padrão OIDC, a plataforma de identidade da Microsoft produz as declarações de nome, a declaração de assunto e o email, quando há disponibilidade e consentimento.

Considere usar um token de ID em vez disso

As informações em um token de ID são um superconjunto das informações disponíveis no ponto de extremidade UserInfo. Como você pode obter um token de ID ao mesmo tempo que obtém um token para chamar o ponto de extremidade UserInfo, sugerimos obter as informações do usuário do token em vez de chamar o ponto de extremidade UserInfo. Usar o token de ID em vez de chamar o ponto de extremidade UserInfo elimina até duas solicitações de rede, reduzindo a latência no seu aplicativo.

Se você precisar de mais detalhes sobre o usuário, como gerente ou cargo, chame a API /user do Microsoft Graph. Você pode também usar declarações opcionais para incluir informações adicionais do usuário em seus tokens de ID e de acesso.

Chamar o ponto de extremidade UserInfo

UserInfo é uma API de token de portador OAuth padrão hospedada pelo Microsoft Graph. Chame o ponto de extremidade UserInfo como faria com qualquer API do Microsoft Graph usando o token de acesso que o aplicativo recebeu quando ele solicitou acesso ao Microsoft Graph. O ponto de extremidade UserInfo retorna uma resposta JSON que contém declarações sobre o usuário.

Permissões

Use as permissões OIDC a seguir para chamar a API do UserInfo. A declaração openid é necessária, e os escopos profile e email garantem que informações adicionais sejam fornecidas na resposta.

Tipo de permissão Permissões
Delegada (conta corporativa ou de estudante) openid (obrigatório), profile, email
Delegada (conta pessoal da Microsoft) openid (obrigatório), profile, email
Aplicativo Não aplicável

Dica

Copie essa URL no navegador para obter um token de acesso para o ponto de extremidade UserInfo e um token de ID. Substitua a ID do cliente e o URI de redirecionamento por valores de um registro de aplicativo.

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=<yourClientID>&response_type=token+id_token&redirect_uri=<YourRedirectUri>&scope=user.read+openid+profile+email&response_mode=fragment&state=12345&nonce=678910

Você pode usar o token de acesso retornado na consulta na próxima seção.

O Microsoft Graph usa um padrão de emissão de token especial que pode afetar a capacidade do aplicativo de lê-lo ou validá-lo. Assim como com qualquer outro token do Microsoft Graph, o token recebido aqui pode não ser um JWT e o seu aplicativo deve considerá-lo opaco. Se você entrar em um conta Microsoft, ele será um formato de token criptografado. Nenhum desses fatores, no entanto, afeta a capacidade do seu aplicativo de usar o token de acesso em uma solicitação para o ponto de extremidade UserInfo.

Chamando a API

A API UserInfo é compatível com solicitações GET e POST.

GET or POST /oidc/userinfo HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6Il…

Resposta do UserInfo

{
    "sub": "OLu859SGc2Sr9ZsqbkG-QbeLgJlb41KcdiPoLYNpSFA",
    "name": "Mikah Ollenburg", // all names require the “profile” scope.
    "family_name": " Ollenburg",
    "given_name": "Mikah",
    "picture": "https://graph.microsoft.com/v1.0/me/photo/$value",
    "email": "mikoll@contoso.com" // requires the “email” scope.
}

As declarações mostradas na resposta são todas aquelas que o ponto de extremidade UserInfo pode retornar. Esses valores são os mesmos valores incluídos em um token de ID.

Observações e advertências sobre o ponto de extremidade UserInfo

Você não pode adicionar nem personalizar as informações retornadas pelo ponto de extremidade UserInfo.

Para personalizar as informações retornadas pela plataforma de identidade durante a autenticação e a autorização, use mapeamento de declarações e declarações opcionais para modificar a configuração do token de segurança.

Próximas etapas