O que é um endpoint de userinfo?
No OpenID Connect (OIDC) , um endpoint de userinfo é um endpoint do Provedor OpenID (OP) que oferece informações do usuário para clientes . O endpoint de userinfo é geralmente um endpoint suplementar ao Token de ID (ID token) e permite que os clientes recuperem informações adicionais do usuário que não estão incluídas no ID token.
O endpoint de userinfo é definido na especificação OpenID Connect Core e é tipicamente acessado por clientes após terem obtido um ID token.
Como funciona um endpoint de userinfo?
Quando um cliente faz uma solicitação ao endpoint de userinfo, ele precisa incluir o access token obtido da Solicitação de token (Token request) e usar os métodos HTTP GET
ou POST
. O endpoint de userinfo valida o access token e retorna as informações do usuário na resposta.
Aqui está um exemplo não normativo de uma solicitação de userinfo:
GET /userinfo HTTP/1.1
Host: openid-provider.example.com
Authorization: Bearer some-access-token
O caminho exato do endpoint de userinfo pode variar em diferentes OpenID Providers. Você pode consultar a Descoberta do OpenID Connect (OIDC) do provedor para encontrar a URL do endpoint de userinfo. Se o access token for válido, o endpoint de userinfo responde com as informações do usuário:
HTTP/1.1 200 OK
Content-Type: application/json
{
"sub": "user123",
"name": "Alice",
"email": "[email protected]",
"birthdate": "1990-01-01",
"address": {
"street": "1234 Elm St",
"city": "Springfield",
"country": "US"
}
}
A resposta pode conter vários atributos do usuário, como name
, email
, birthdate
e address
; e tipicamente, contém mais claims do que o Token de ID (ID token) . Os atributos reais retornados dependem da configuração do Provedor OpenID (OP) e do consentimento do usuário. Consulte a documentação do seu OpenID Provider para os atributos específicos disponíveis.
Assinatura e criptografia
A resposta do userinfo pode ser assinada e/ou criptografada para garantir sua integridade e confidencialidade. Se uma ou ambas as proteções forem aplicadas, a resposta do endpoint de userinfo será um JSON Web Token (JWT) em vez de um objeto JSON simples.