OAuth 2.0 e autorização JWT em C#: guia prático

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

Introdução: por que OAuth 2.0 e JWT são necessários em aplicações modernas?

\n

No desenvolvimento web moderno, a segurança de dados e o gerenciamento de acesso estão em primeiro plano. Todos os dias, milhões de usuários acessam aplicações através do Google, Facebook ou sistemas corporativos, sem transmitir suas senhas diretamente. É aqui que entram em cena os protocolos OAuth 2.0 e a tecnologia JWT (JSON Web Tokens).

\n

OAuth 2.0 é o padrão da indústria para delegação de acesso. Ele permite que aplicações obtenham acesso limitado aos recursos do usuário sem revelar suas credenciais. JWT, por sua vez, é um formato de token compacto e autossuficiente que contém todas as informações necessárias para verificação de autenticação e autorização.

\n

Neste artigo, vamos analisar na prática como implementar autorização OAuth 2.0 e JWT em C# usando ASP.NET Core. Você aprenderá como configurar um servidor de autorização, gerar tokens e proteger seus endpoints de API. Todos os exemplos de código estão prontos para uso em projetos reais.

\n\n

1. Configuração do servidor de autorização com IdentityServer4

\n

Para implementar OAuth 2.0, usaremos a biblioteca popular IdentityServer4 — um framework para ASP.NET Core que implementa os protocolos OpenID Connect e OAuth 2.0. Vamos começar criando um servidor de autorização mínimo.

\n\n

Passo 1: Instalação de pacotes e criação do projeto

\n

Crie um novo projeto ASP.NET Core Web Application (template vazio) e instale os pacotes NuGet necessários:

\n
dotnet add package IdentityServer4\ndotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
\n\n

Passo 2: Configuração de clientes e recursos

\n

Defina usuários de teste, clientes e recursos protegidos. Crie a classe Config.cs:

\n
public static class Config\n{\n    public static IEnumerable<IdentityResource> IdentityResources =>\n        new[] { new IdentityResources.OpenId(), new IdentityResources.Profile() };\n\n    public static IEnumerable<ApiScope> ApiScopes =>\n        new[] { new ApiScope("api1", "My API") };\n\n    public static IEnumerable<Client> Clients =>\n        new[]\n        {\n            new Client\n            {\n                ClientId = "client",\n                AllowedGrantTypes = GrantTypes.ClientCredentials,\n                ClientSecrets = { new Secret("secret".Sha256()) },\n                AllowedScopes = { "api1" }\n            }\n        };\n}
\n\n

Passo 3: Registro de serviços no Startup.cs

\n

Configure o IdentityServer no método ConfigureServices:

\n
public void ConfigureServices(IServiceCollection services)\n{\n    services.AddIdentityServer()\n        .AddInMemoryIdentityResources(Config.IdentityResources)\n        .AddInMemoryApiScopes(Config.ApiScopes)\n        .AddInMemoryClients(Config.Clients)\n        .AddTestUsers(TestUsers.Users);\n\n    services.AddAuthentication()\n        .AddJwtBearer("Bearer", options =>\n        {\n            options.Authority = "https://localhost:5001";\n            options.TokenValidationParameters = new TokenValidationParameters\n            {\n                ValidateAudience = false\n            };\n        });\n}
\n

No método Configure, adicione a chamada app.UseIdentityServer().

\n\n

2. Implementação de tokens JWT: geração e validação

\n

O token JWT consiste em três partes: cabeçalho (header), payload (payload) e assinatura (signature). No .NET, a geração e verificação de JWT são feitas usando mecanismos embutidos.

\n\n

Geração manual de token JWT

\n

Às vezes, é necessário criar um token manualmente, por exemplo, para testes. Use o seguinte código:

\n
using System.IdentityModel.Tokens.Jwt;\nusing Microsoft.IdentityModel.Tokens;\nusing System.Security.Claims;\nusing System.Text;\n\npublic string GenerateJwtToken(string userI                

Blogs

Book Recommendations