OAuth vs JWT: protocolo ou formato de token?
OAuth 2.0 é um framework de autorização para acesso delegado; JWT é um formato de token. Eles resolvem problemas diferentes e são frequentemente usados juntos.
OAuth 2.0 define fluxos pelos quais um app obtém acesso delegado a recursos sem manipular senhas de usuário, emitindo access e refresh tokens. JWT é um formato de token compacto e assinado que pode carregar claims e ser verificado sem consulta a banco de dados. OAuth frequentemente emite JWTs como access tokens, mas você pode usar JWTs sem OAuth e OAuth com tokens opacos. Eles são complementares, não concorrentes.
| OAuth 2.0 | JWT | |
|---|---|---|
| O que é | Framework de autorização | Formato de token |
| Escopo | Fluxos de acesso delegado | Codifica claims |
| Verificação | Depende do tipo de token | Assinatura (stateless) |
| Usados juntos | Emite tokens | Pode ser o token |
| Melhor para | Acesso de terceiros | Claims stateless |
Como se relacionam
Use OAuth quando você precisa de autorização delegada - permitindo que usuários concedam a um app acesso aos seus dados em outro serviço (os fluxos de "Entrar com X" e de acesso a API). Use JWT quando você precisa de um token autocontido e verificável carregando identidade ou claims. Um provedor OAuth comumente retorna um JWT access token, então o enquadramento correto é "qual fluxo OAuth" mais "qual formato de token".
Em CI
Pipelines frequentemente trocam credenciais de cliente OAuth por tokens de curta duração para chamar APIs; armazene segredos no secret store do CI, nunca no código. Em runners gerenciados, mascare as saídas de token e use OIDC sempre que possível para evitar segredos de longa duração.
O veredito
Precisa de acesso delegado e fluxos padrão de login/autorização: OAuth 2.0. Precisa de um token stateless e verificável carregando claims: JWT. A configuração comum e correta são fluxos OAuth que emitem JWT access tokens - eles são camadas do mesmo sistema, não um ou outro.