OAuth 2.0
JWT
O JSON Web Token (JWT) é um padrão aberto (RFC 7519)JWT que define uma maneira compacta e autossuficiente para representar informações entre duas partes. Essas informações podem ser verificadas e confiáveis, tornando os JWTs ideais para transmitir dados entre sistemas. Na iugu, utilizamos o protocolo OAuth 2.0 (Open Authorization), para delegar autorização entre as aplicações e os JWTs são os tokens enviados e recebidos nesse processo de autorização, podendo ser um access_token, um id_token ou um refresh_token.
Estes tokens garantem a segurança e integridade das informações transmitidas entre as partes: o servidor de autorização, o servidor de recursos e o cliente.
O JWT é composto por três partes: o cabeçalho (header), a carga útil (payload) e a assinatura (signature). O cabeçalho geralmente especifica o tipo do token e o algoritmo de assinatura, enquanto a carga útil contém as informações do token, e a assinatura é utilizada para verificar a autenticidade do remetente.
Exemplo simples de JWT:
Cabeçalho (Header):
Tipo do Token (typ): JWT Algoritmo de Assinatura (alg): HMAC SHA256 Carga Útil (Payload):
Emissor (iss): “minha_app” Identificador do Usuário (sub): 123456 Tempo de Expiração (exp): 1641100000 (timestamp)
No OAuth 2.0, os access_token, id_token e refresh_token são tokens JWT obtidos por meio do processo que envolve as seguintes etapas:
-
Autenticação do Cliente (Client Authentication): O cliente autentica-se junto ao servidor de autorização para obter um token de acesso. Esta etapa envolve a criação e registro de sua aplicação e obtenção do client_credentials (client_id e client_secret) na área de trabalho do console Primeiros Passos.
-
Concessão de Autorização (Authorization Grant): O cliente recebe uma concessão de autorização, com base no fluxo do grant_type enviado (client_credentials / authorization_code), indicando que está autorizado a acessar recursos em nome do usuário.
-
Emissão do Token (Token Issuance): Com a concessão de autorização, o servidor de autorização emite um token JWT contendo informações como escopo, tempo de expiração e a audiência correta, que é a quem aquele token se destina e por quem pode ser usado.
-
Renovação de Autorização (Refresh Token Grant): No fluxo de autorização o servidor de autorização emite um token JWT com o
access token
, umid token
e umrefresh token
em sua carga útil. O Refresh token pode ser utilizado para renovar a autorização concedida uma vez que o JWT é stateless e por isso não pode ser revogado, sendo assim, possui uma duração mínima estabelecida que garante a sua revogação.
A duração do token bem como outras informações são chamadas de Claims. Cada claim possui uma função específica para determinar a validade do JWT emitido.