Logo Logo
GitHub Designed by Logto

O que é um token de acesso (access token)?

Um token de acesso (access token) é uma credencial, tipicamente uma sequência de caracteres, usada para acessar recursos protegidos. No contexto de OAuth 2.0 e OpenID Connect (OIDC), servidores de autorização (authorization servers) podem emitir tokens de acesso para clientes (aplicações) após autenticação e autorização bem-sucedidas.

Embora os RFCs para OAuth 2.0 e OIDC não especifiquem os detalhes de implementação dos tokens de acesso, existem dois tipos comuns de tokens de acesso usados na prática:

  • Token opaco : Uma sequência aleatória que não tem significado (“opaco”) para o cliente. O cliente apresenta o token ao servidor de recursos, que valida o token com o servidor de autorização.
  • JSON Web Token (JWT) : Um token autônomo que contém claims (por exemplo, ID do usuário, tempo de expiração) com uma assinatura digital. O servidor de recursos pode validar o token sem fazer uma solicitação adicional ao servidor de autorização.

Como funciona um token de acesso (access token)?

De acordo com o tipo de token de acesso, o fluxo de uso de um token de acesso pode variar.

Aqui está um exemplo simplificado de uso de um token de acesso opaco:

Aqui está um exemplo simplificado de uso de um JWT:

A diferença entre os dois tipos de tokens de acesso é como o servidor de recursos valida o token:

  • O servidor de recursos deve fazer uma solicitação adicional ao servidor de autorização para validar um token opaco cada vez que recebe um token.
  • O servidor de recursos pode validar um JWT sem fazer uma solicitação adicional ao servidor de autorização porque o token contém todas as informações necessárias e o servidor de recursos pode armazenar em cache a chave pública do Conjunto de Chaves JSON Web (JWKS) do servidor de autorização.

Tokens de acesso são tipicamente de curta duração e têm um tempo de expiração (por exemplo, 1 hora). Os clientes devem solicitar um novo token de acesso quando o token atual expirar.

Qual tipo de token devo usar?

A escolha entre um token opaco e um JWT depende do caso de uso e dos requisitos de segurança da aplicação. Aqui está uma comparação dos dois tipos de tokens:

Token OpacoJWT
FormatoSequência aleatóriaObjetos JSON autônomos
DesempenhoRequer uma solicitação adicionalValidação mais rápida
AutônomoNãoSim
Tamanho do tokenMenorMaior
RevogaçãoInstantâneaRequer expiração do token ou interação com o servidor de autorização
ExtensibilidadeLimitadaClaims personalizados
StatelessNãoSim
SegurançaRequer validação do tokenRequer validação de assinatura
PadrãoNãoSim (RFC 7519)

Para mais informações sobre a escolha entre os dois tipos de tokens, veja Token opaco vs JWT .

Os papéis do servidor de autorização e do servidor de recursos

Na maioria dos casos, o Servidor de autorização tem as seguintes responsabilidades:

Você pode notar que o servidor de autorização não interpreta o significado do token de acesso. Por exemplo, o token de acesso pode conter um scope read:orders, mas o servidor de autorização não sabe o que o scope significa. O servidor de recursos é responsável por interpretar o token de acesso e aplicar o Controlo de acesso com base nos scopes do token. Ou seja, o Servidor de recursos geralmente tem as seguintes responsabilidades:

  • Valida os claims no token de acesso (por exemplo, tempo de expiração, indicador de recurso, scopes).
  • Aplica o controle de acesso com base nos claims do token (geralmente scopes).
  • Fornece os recursos protegidos se o token de acesso for válido.

Ciclo de vida do token de acesso

O ciclo de vida de um token de acesso geralmente envolve as seguintes etapas:

Veja também