A Microsoft está mais aberta às novidades do mundo open source, e isso se vê na comunidade .NET. Com a chegada do ASP.NET Core, termos como JWT e OAuth2 ficaram comuns nas conversas dos devs.
Não sabe o que são ou a diferença entre eles? Vamos entender isso agora com explicações simples e exemplos de código.
Entendendo as diferenças!
OAuth2 é um Framework
OAuth2 é um framework de segurança para Autenticação e Autorização. Pense nele como um livro de regras. Ele dita como usuários, clientes e recursos interagem. O cliente pede, o servidor decide se permite. Essa é a ideia.
Bearer
Bearer authentication é um método para autenticação HTTP, conhecido também como token authentication.
Authorization: Bearer <token>
JWT é um token seguro
O JSON Web Token (JWT) é o token usado com Bearer. Ele é definido pela RFC 7519. É compacto e seguro.
JWT carrega dados chamados claims, que dizem o que o usuário pode ou não fazer.
Cookie
O cookie é um velho conhecido dos navegadores. Ele armazena informações como chave-valor e tem validade. Ele é útil na autenticação, mas não substitui o JWT. Cada um tem sua função.
OAuth2 - Detalhes
OAuth2 entrega a responsabilidade da autenticação ao authorization server. O cliente faz seu pedido básico.
Trabalha com Users, Roles, Clients e Resources. Entenda isso antes de tentar controlar tudo.
JSON Web Tokens (JWT) - Detalhes
JWT + OAuth2 são a combinação comum em APIs modernas. Prático e funcional.
- Sem estado e bem estruturado.
- O cliente guarda as permissões do usuário.
- Assinado e, se necessário, encriptado.
- Escala bem em sistemas distribuídos.
- RESTful verdadeiro.
- Expira de forma automática.
- Funciona por conta própria.
Exemplo de JWT:
eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkJydW5vIiwiaWF0IjoxNTE2MjM5MDIyfQ.YDN0wJHLzyzmqdwycv4wgh-RMBwQR4C_0uehWmo_77ZrAB46YnPYmzJJ2Lb36GyyDXDwRP9Bt759hcVmUiGWEg
Header
Contém tipo do token (JWT) e algoritmo usado (ex: HS256).
Payload
Inclui claims: Reserved, Public, e Private, que são informações que o cliente envia ao servidor.
Reserved claims
iss
,exp
,sub
,aud
. Para saber mais: RFC7519 - Section 4.1
Public claims
- Criados por você para definir permissões.
Private claims
- Dados confidenciais entre serviços.
Signature
O Header e Payload são codificados em base64, e assinados com uma chave. Isso evita ataques.
JWT ou Cookies?
Cookies são úteis quando há um único servidor e navegador. JWTs são melhores para SPAs, APIs, e microservices.
Cookies são ligados ao servidor, JWTs não dependem dele.
Primeiramente: Segurança em primeiro lugar
Não reinvente a roda quando o assunto é segurança. Use frameworks que já existem.
Não crie um sistema de autenticação
Não crie seu próprio sistema de autenticação; deixe para os especialistas.
"Autenticação caseira é uma armadilha."
Por que usar um framework conhecido?
Frameworks testados e bem documentados são a escolha certa. Evite soluções improvisadas.
ASP.NET Core Identity
A solução da Microsoft para autenticação e autorização, que funciona com Facebook, Google e mais.
Não é um servidor de autenticação, mas faz bem o que se propõe.
Agora sobre o Keycloak:
Keycloak (Para controle total, mas atenção!)
Esta é uma plataforma open source da Red Hat que suporta vários protocolos de autenticação.
Tem muitas opções, mas pode ser complicado configurar.
Funcionalidades:
- Single Sign-On
- Suporta múltiplos protocolos
- Integração com LDAP e Active Directory
- Login com redes sociais
- Console de administração
- Multi-tenancy
Bom para quem precisa de um sistema robusto e não se importa com configurações complexas.
Duende IdentityServer (Quando precisa de controle e tem orçamento)
Framework open source que evoluiu do IdentityServer4. Implementa OAuth2 e OpenID Connect.
Funcionalidades:
- Authentication as a Service
- Single Sign-on / Sign-out
- Controle de acesso para APIs
- Suporte a extensões customizadas
Bom se você tem controle total e recursos para isso.
Busque outras técnicas de autenticação
Não dependa só de senhas. Use 2FA, SMS, e email.
Equilíbrio
Equilibre segurança e facilidade de uso. Segurança é essencial, mas não precisa complicar.
Escolha sabiamente entre JWT, OAuth2, Cookies e outros. Eles são ferramentas.
Tem perguntas? Vamos conversar!
Veja um exemplo de código
Veja este artigo com um exemplo usando IdentityServer4 e ASP.NET Core 2.1
Referências
Atualizado em 06/2025