Introdução: por que OAuth 2.0 e JWT são o padrão da autorização moderna?
No desenvolvimento web moderno, a transmissão segura de dados entre cliente e servidor é uma tarefa criticamente importante. Dois protocolos-chave que ajudam a resolver essa tarefa são OAuth 2.0 (protocolo aberto de autorização) e JWT (JSON Web Token).
O OAuth 2.0 permite que aplicativos obtenham acesso limitado aos recursos do usuário sem transmitir login e senha. O JWT, por sua vez, é um formato de token compacto e autossuficiente que contém todas as informações necessárias para identificar o usuário.
Neste artigo, vamos analisar como implementar OAuth 2.0 e autorização JWT em C# (.NET). Você aprenderá como configurar o middleware, gerar o token e proteger endpoints de API. O material é voltado para desenvolvedores iniciantes familiarizados com os fundamentos do ASP.NET Core.
1. Fundamentos do OAuth 2.0 e JWT
Antes de escrever código, vamos entender os conceitos-chave.
O que é OAuth 2.0?
OAuth 2.0 é um protocolo de autorização que permite que aplicativos de terceiros obtenham acesso aos recursos do usuário (por exemplo, dados do perfil) sem transmitir suas credenciais. Em vez disso, é usado um token de acesso (access token).
Principais papéis no OAuth 2.0:
- Resource Owner — o usuário proprietário dos recursos.
- Client — o aplicativo que solicita acesso.
- Authorization Server — o servidor que emite tokens após a autenticação do usuário.
- Resource Server — o servidor que fornece recursos protegidos (por exemplo, API).
O que é JWT?
JWT (JSON Web Token) é um formato de token composto por três partes separadas por pontos:
- Header — contém o tipo de token (JWT) e o algoritmo de assinatura (por exemplo, HS256).
- Payload — contém os dados (claims), como identificador do usuário, função, prazo de validade.
- Signature — assinatura que garante a integridade do token.
O token JWT se parece com isto: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
O JWT é autossuficiente: o servidor não precisa armazenar sessões no banco de dados, todas as informações já estão criptografadas no token.
2. Configuração do projeto ASP.NET Core para autorização JWT
Vamos criar um novo projeto ASP.NET Core Web API e configurar a autorização JWT.
Passo 1: Instalação dos pacotes NuGet
Para trabalhar com JWT, precisamos do pacote Microsoft.AspNetCore.Authentication.JwtBearer. Instale-o através do NuGet Package Manager ou do console:
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearerPasso 2: Configuração do appsettings.json
Adicione uma seção para armazenar os parâmetros JWT (chave secreta, emissor, audiência):
{ "Jwt": { "Key": "YourSuperSecretKey123!@#$%^&*()", "Issuer": "YourApp", "Audience": "YourAppUsers", "ExpireMinutes": 60 }}Passo 3: Configuração do Program.cs
No arquivo Program.cs (ou Startup.cs para versões antigas), adicionamos os serviços de autenticação e middleware:
using Microsoft.AspNetCore.Authentication.JwtBearer;using Microsoft.IdentityModel.Tokens;using System.Text;
var builder = WebApplication.CreateBuilder(args);
// Configuração da autenticação JWTbuilder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true,