Autorização e Autenticação em C# (.NET) — 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

Autorização e Autenticação em C# (.NET)

No desenvolvimento web moderno na plataforma .NET, os tópicos de autenticação (verificação da identidade do usuário) e autorização (verificação de permissões de acesso) são fundamentais. As bibliotecas e mecanismos integrados do ASP.NET Core fornecem um conjunto de ferramentas poderoso e flexível para implementar essas tarefas. Neste artigo, abordaremos detalhadamente as principais abordagens, incluindo o uso de JWT (JSON Web Tokens), ASP.NET Core Identity e componentes middleware integrados.



Conceitos Principais

  • Autenticação (Authentication) — processo de verificar quem é o usuário (ex.: login + senha).
  • Autorização (Authorization) — processo de determinar o que o usuário pode fazer (funções, políticas, claims).
  • Identidade baseada em Claims (Claims-based identity) — abordagem onde as informações do usuário são armazenadas como um conjunto de declarações (claims).


ASP.NET Core Identity

ASP.NET Core Identity é um sistema completo de gerenciamento de usuários que inclui registro, login, redefinição de senha, autenticação de dois fatores e gerenciamento de funções. Ele utiliza Entity Framework Core para armazenar dados no banco.

Para conectar o Identity ao projeto, basta adicionar a chamada AddDefaultIdentity e configurar a string de conexão. Exemplo de configuração básica em Program.cs:

using Microsoft.AspNetCore.Identity;using Microsoft.EntityFrameworkCore;using YourApp.Data;

var builder = WebApplication.CreateBuilder(args);

// Adiciona o contexto do banco de dadosbuilder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

// Adiciona o Identitybuilder.Services.AddDefaultIdentity<IdentityUser>(options => { options.SignIn.RequireConfirmedAccount = false; options.Password.RequireDigit = true; options.Password.RequiredLength = 6;}).AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();

builder.Services.AddControllersWithViews();

var app = builder.Build();

app.UseAuthentication();app.UseAuthorization();

app.MapRazorPages();app.Run();

Após isso, você terá acesso às páginas padrão de registro e login, bem como métodos para verificar funções:

[Authorize(Roles = "Admin")]public IActionResult AdminPanel(){    return View();}


Autenticação JWT (JSON Web Tokens)

JWT é uma forma compacta e autossuficiente de transmitir informações entre partes como um objeto JSON. No .NET, JWT é frequentemente usado para criar APIs REST e aplicações SPA. A biblioteca principal é Microsoft.AspNetCore.Authentication.JwtBearer.

Configuração do JWT em Program.cs:

using Microsoft.AspNetCore.Authentication.JwtBearer;using Microsoft.IdentityModel.Tokens;using System.Text;

var builder = WebApplication.CreateBuilder(args);

var key = Encoding.ASCII.GetBytes("YourSuperSecretKeyThatIsAtLeast32CharactersLong!");

builder.Services.AddAuthentication(options =>{ options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;}).AddJwtBearer(options =>{ options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = "yourdomain.com", ValidAudience = "yourdomain.com", IssuerSigningKey = new SymmetricSecurityKey(key) };});

builder.Services.AddAuthorization();builder.Services.AddControllers();

var app = builder.Build();app.UseAuthentication();app.UseAuthorization();app.MapControllers();app.Run();

Exemplo

Recommendations