Se você trabalha com APIs REST, especialmente em ambientes modernos com autenticação e autorização, com certeza já se deparou com o termo JWT. Mas afinal, o que é isso?
JWT – JSON Web Token

O JWT (JSON Web Token) é um padrão aberto baseado em JSON (RFC 7519) é um formato de token compacto e seguro usado para transmitir informações entre duas partes, geralmente um cliente e um servidor, de forma que essas informações possam ser verificadas e confiáveis.
Ele é muito utilizado para implementar autenticação e autorização em aplicações web e mobile. Quando um usuário faz login, por exemplo, o servidor gera um JWT e o devolve para o cliente. Esse token pode ser enviado em requisições subsequentes, normalmente via cabeçalho HTTP, permitindo que o servidor identifique o usuário sem a necessidade de manter sessões.
Estrutura de um JWT
Um JWT é composto por três partes, separadas por pontos (.
), formando uma string como essa:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkNvZGU0RGVscGhpIiwiaWF0IjoxNTE2MjM5MDIyfQ. hFyIIP6gXt38XVhukyhpPRXFUUWCmL8jeyfem2Yc51I

Vamos entender cada uma delas:
1. Header (Cabeçalho)
Contém informações sobre o tipo de token e o algoritmo de assinatura usado (Essa parte é codificada em Base64URL):
{
"alg": "HS256",
"typ": "JWT"
}
2. Payload (Corpo do token)
É onde está a carga útil, representada por um objeto JSON que contém os claims, ou seja, as informações que você deseja transmitir.
Exemplo:
{
"sub": "1234567890",
"iat": 1516239022,
"name": "Code4Delphi",
"meu-claim": "Usuario-Master"
}
Existem três tipos de claims: privadas, públicas e reservadas. As claims reservados não têm utilização obrigatória, mas, em algumas situações, são recomendadas. Veja a lista de claims reservadas no JWT:
Claim | Tipo | Descrição |
---|---|---|
iss | String | Issuer – Quem emitiu o token |
sub | String | Subject – Quem é o dono do token (ex: ID do usuário) |
aud | String ou array | Audience – Destinatário do token (ex: nome da aplicação ou API) |
exp | Numérico (timestamp) | Expiration Time – Data/hora de expiração do token |
nbf | Numérico (timestamp) | Not Before – O token não é válido antes deste horário |
iat | Numérico (timestamp) | Issued At – Quando o token foi emitido |
jti | String | JWT ID – Identificador único do token (pode ser usado para evitar reuso/replay attacks) |
⚠️ Importante: o payload também é codificado em Base64URL porém ele não é criptografado, apenas codificado. Nunca coloque informações sensíveis aqui.
3. Signature (Assinatura)
Essa parte garante a integridade do token. É criada usando o header e o payload juntos, além de uma chave secreta. Com isso, é possível verificar se o token foi alterado.
Por exemplo, com o algoritmo HMAC SHA256:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
seu-segredo-de-256-bits
)
💡 Dica: testando e explorando JWTs no jwt.io
Se você quer entender melhor como um JWT funciona na prática, vale a pena visitar o site https://jwt.io. Ele permite analisar tokens em tempo real, mostrando a decodificação do header, payload e assinatura, além de permitir a validação com chave secreta. É uma excelente ferramenta para aprendizado, testes e depuração — principalmente quando você está começando a trabalhar com JWTs ou quer entender se o token gerado pelo seu backend está formatado corretamente.
Usando JWT com Delphi e TMS XData
Se você desenvolve APIs REST com Delphi, o TMS XData já oferece suporte integrado ao uso de JWT como mecanismo de autenticação. Isso permite que você implemente segurança nas suas APIs de forma moderna e alinhada com os padrões de mercado.
🔐 Como funciona no XData
No XData, o uso de JWT pode ser facilmente habilitado através de um middleware de autenticação. O fluxo básico é:
- O cliente faz login e envia usuário e senha (ou outro método de autenticação).
- Se as credenciais forem válidas, o servidor gera um JWT assinado e o envia de volta.
- Esse token é armazenado no cliente (por exemplo, em memória ou local storage).
- A cada requisição à API, o cliente envia o token no cabeçalho HTTP Authorization:
Authorization: Bearer seu-token-jwt - O middleware do XData valida a assinatura do token e, se tudo estiver certo, a requisição é aceita.
- Mais detalhes podem ser encontrados na documentação oficial neste link
▶️ Quer ver isso na prática?
Temos um vídeo no nosso canal do YouTube mostrando o passo a passo de como gerar e utilizar um JWT em Delphi, com exemplos claros e diretos ao ponto.
👉 Assista aqui: https://www.youtube.com/@code4delphi
Por hoje é só, leitores!
Não se esqueça de se cadastrar aqui no blog para receber notificações sempre que um novo conteúdo for publicado.
Nos vemos em breve no próximo post! 👋