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.

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

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

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