Guia de decodificação de tokens de autenticação: OAuth, SAML e tokens Bearer
No desenvolvimento web moderno, a autenticação raramente é tão simples quanto um nome de usuário e uma senha. Em vez disso, os sistemas trocam "tokens" — strings opacas ou semitransparentes que carregam dados de identidade e permissão. Ao depurar fluxos de autenticação ou realizar auditorias de segurança, ser capaz de decodificar e inspecionar esses tokens é uma habilidade crítica.
Este guia explora a estrutura técnica dos tokens de autenticação mais comuns e como decodificá-los.
1. O Token Bearer (JWT e além)
O Token Bearer (portador) é a forma mais comum de autenticar solicitações de API. Ele é normalmente enviado no cabeçalho Authorization:
Authorization: Bearer <token>
O que é um Token Bearer?
Um token Bearer é um token de segurança que concede acesso a quem o "carrega". É como uma chave física; o sistema não se importa com quem você é, apenas que você tenha a chave.
Decodificando Tokens Bearer
A maioria dos tokens Bearer modernos são JWTs (JSON Web Tokens). Um JWT consiste em três partes codificadas em Base64Url:
- Header (Cabeçalho): Metadados sobre o token (algoritmo, tipo).
- Payload (Carga útil): As "claims" ou reivindicações (ID do usuário, expiração, escopos).
- Signature (Assinatura): Prova criptográfica de que o token não foi adulterado.
Para decodificar um JWT manualmente, você pode dividir a string pelos pontos e usar um decodificador Base64Url nas duas primeiras partes. Para uma experiência mais visual, você pode usar um Decodificador JWT.
2. Decodificação de Tokens OAuth
O OAuth 2.0 usa vários tipos de tokens, mas o que você encontrará com mais frequência é o Access Token (token de acesso).
Tokens opacos vs. estruturados
- Tokens estruturados (JWT): Como descrito acima, estes podem ser decodificados localmente para ver os dados do usuário.
- Tokens opacos: São strings aleatórias (como
ghp_...para GitHub) que não têm significado para o cliente. Eles só podem ser "decodificados" pelo Servidor de Autorização que os emitiu, geralmente por meio de um ponto de extremidade de introspecção (Introspection Endpoint).
Como inspecionar um token OAuth
Se o token for um JWT, siga o processo padrão de decodificação de JWT. Se for opaco, você pode precisar consultar a documentação do provedor específico (Google, Microsoft, GitHub) para ver se eles fornecem uma ferramenta de depuração ou uma API para inspecionar os metadados do token (escopos, expiração, etc.).
3. Decodificador de Asserção SAML
SAML (Security Assertion Markup Language) é o irmão mais velho do JWT, baseado em XML. É amplamente utilizado em Single Sign-On (SSO) empresarial.
O fluxo SAML
Quando você faz login via SAML, o Provedor de Identidade (IdP) envia uma SAMLResponse para seu aplicativo, geralmente como um campo de formulário oculto.
Como decodificar uma asserção SAML
Uma asserção SAML é normalmente um documento XML codificado em Base64.
- Decodificação Base64: Converta a string de volta em XML bruto.
- Formatação (Pretty Print): Formate o XML para que seja legível.
- Inspecionar reivindicações: Procure por
<saml:AttributeStatement>para encontrar o e-mail do usuário, funções e outros atributos.
Como as asserções SAML são XML, elas são muito mais detalhadas do que os JWTs e geralmente incluem assinaturas digitais (<ds:Signature>) e, às vezes, criptografia.
4. Decodificador de autenticação básica (Basic Auth)
Embora mais antiga, a Basic Auth ainda é comum para APIs simples ou ferramentas internas.
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Decodificando Basic Auth
A string após Basic é uma string simples codificada em Base64 no formato usuario:senha.
Para decodificá-la:
- Pegue a string
dXNlcm5hbWU6cGFzc3dvcmQ=. - Decodifique em Base64 para obter
usuario:senha.
Tabela de resumo: Decodificação de tokens em um relance
| Tipo de Token | Prefixo de Cabeçalho | Formato | Método de decodificação |
|---|---|---|---|
| JWT | Bearer |
JSON / Base64Url | Decodificação Base64Url + Análise JSON |
| OAuth (Opaco) | Bearer |
String Aleatória | API de introspecção de token |
| SAML | N/A (Formulário) | XML / Base64 | Decodificação Base64 + Análise XML |
| Basic Auth | Basic |
String / Base64 | Decodificação Base64 |
Conclusão
Entender como decodificar tokens de autenticação é essencial para solucionar erros de "Não autorizado" e garantir que seu aplicativo esteja passando as permissões corretas. Esteja você lidando com um JWT moderno ou uma asserção SAML legada, o primeiro passo é sempre identificar a codificação (geralmente Base64) e o formato subjacente (JSON ou XML).
Precisa de uma maneira rápida de inspecionar um token? Use nosso Decodificador JWT para analisar seus tokens com segurança localmente em seu navegador.