OAuth 2.0 e autorização JWT em C#: Guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course
```html

Introdução ao OAuth 2.0 e JWT em C#



Aplicações web modernas e APIs exigem um sistema de autorização robusto. Dois dos padrões mais populares — OAuth 2.0 (protocolo de delegação de acesso) e JWT (JSON Web Token, formato de token) — tornaram-se a base da segurança no ecossistema .NET. Neste artigo, vamos analisar como implementar autorização OAuth 2.0 e JWT em C# no ASP.NET Core, criar um exemplo de servidor de autorização e proteger uma API.



Independentemente de você estar criando uma aplicação monolítica ou uma arquitetura de microsserviços, compreender esses mecanismos é criticamente importante. O OAuth 2.0 define papéis (cliente, servidor de autorização, servidor de recursos), enquanto o JWT serve como uma forma compacta e autossuficiente de transmitir dados do usuário.



Fundamentos do OAuth 2.0: fluxos e papéis



O que é OAuth 2.0?

OAuth 2.0 é um protocolo de autorização que permite que aplicações de terceiros obtenham acesso limitado aos recursos do usuário sem transmitir suas credenciais. Em vez de login e senha, são usados tokens de acesso (access tokens).



Papéis principais no OAuth 2.0

  • Resource Owner — o usuário proprietário dos dados.
  • Client — a aplicação que solicita o acesso.
  • Authorization Server — o servidor que emite os tokens após a autenticação.
  • Resource Server — a API que protege os recursos e verifica os tokens.


Fluxos populares (grant types)

  • Authorization Code — para aplicações server-side (o mais seguro).
  • Client Credentials — para comunicação entre servidores (sem usuário).
  • Implicit — obsoleto, não recomendado.
  • Refresh Token — para obter um novo access token sem reinserir a senha.


JWT (JSON Web Token): estrutura e princípio de funcionamento



Do que é composto o JWT?

JWT é uma string composta por três partes, separadas por pontos:

header.payload.signature


  • Header — tipo do token e algoritmo de assinatura (ex.: HS256 ou RS256).
  • Payload — dados (claims): identificador do usuário, papéis, prazo de validade, etc.
  • Signature — assinatura que verifica se o token não foi alterado.


Vantagens do JWT para C#

  • Autossuficiência — todos os dados do usuário estão dentro do token.
  • Verificação fácil no lado do servidor de recursos sem consultar o banco de dados.
  • Suporte no .NET através da biblioteca Microsoft.AspNetCore.Authentication.JwtBearer.


Implementação de OAuth 2.0 + JWT em C# no ASP.NET Core



1. Configuração do servidor de autorização (emissão de JWT)

Vamos criar um servidor mínimo que aceita login/senha e retorna um JWT. Para simplificar, usaremos uma chave simétrica (HS256).



// Program.cs — servidor de autorizaçãousing Microsoft.AspNetCore.Authentication.JwtBearer;using Microsoft.IdentityModel.Tokens;using System.IdentityModel.Tokens.Jwt;using System.Security.Claims;using System.Text;

var builder = WebApplication.CreateBuilder(args);builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = "MyAuthServer", ValidAudience = "MyApiClient", IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SuperSecretKey123!@#$%")) }; });

builder.Services.AddAuthorization();var app = builder.Build();

app.MapPost(
```

Blogs

Book Recommendations