Logo Logo
GitHub Designed by Logto

O que é a introspecção de token (token introspection)?

A introspecção de token (token introspection) é uma extensão do OAuth 2.0 definida no RFC 7662 que permite que clientes consultem o Servidor de autorização para validar tokens de acesso (access tokens) e recuperar metadados sobre eles. Esta extensão é útil quando:

  • O cliente deseja verificar a validade de um token de acesso (access token) em tempo real.
  • O token de acesso (access token) é opaco (não auto-contido) e requer que o servidor de autorização (authorization server) o valide.

Como funciona a introspecção de token (token introspection)?

Aqui está um exemplo não normativo de uma solicitação de introspecção de token:

POST /introspect HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/x-www-form-urlencoded

token=random-token-value
  &token_type_hint=access_token

O parâmetro token_type_hint é opcional e deve ser definido para o tipo de token que está sendo introspectado. Se o token de acesso (access token) for válido, o servidor de autorização (authorization server) responde com os metadados do token:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "active": true,
  "scope": "read write",
  "client_id": "client-id",
  "username": "johndoe",
  "token_type": "Bearer",
  "exp": 1634020800,
  "iat": 1634017200
}

Vale a pena notar que nem todos os servidores de autorização (authorization servers) suportam a introspecção de token (token introspection) e nem todos os tokens são introspectáveis. O Servidor de autorização pode limitar o uso da introspecção de token (token introspection) com base em vários fatores, por exemplo, alguns servidores de autorização (authorization servers) podem não suportar introspecção para JWTs .

Parâmetros chave em uma solicitação de introspecção de token

Aqui estão dois parâmetros chave em uma solicitação de introspecção de token:

  • token: O token a ser introspectado.
  • token_type_hint: O tipo de token que está sendo introspectado. Pode ser access_token ou refresh_token.

Veja também