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): do básico às soluções empresariais



A segurança de aplicações web é um aspecto crítico do desenvolvimento, e no ecossistema C# (.NET) existe um poderoso conjunto de ferramentas para implementar autenticação (verificação da identidade do usuário) e autorização (verificação de permissões de acesso). Neste artigo, abordaremos as principais abordagens: desde o ASP.NET Core Identity integrado até soluções flexíveis baseadas em JWT e OAuth 2.0.



1. ASP.NET Core Identity — sistema integrado de gerenciamento de usuários



ASP.NET Core Identity é um framework completo para registro, login, gerenciamento de funções e senhas. Ele fornece modelos prontos (User, Role), armazenamento (por padrão, Entity Framework + SQL Server) e middleware.



// Registro em Program.csbuilder.Services.AddDbContext<AppDbContext>(options =>    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

builder.Services.AddDefaultIdentity<IdentityUser>(options =>{ options.SignIn.RequireConfirmedAccount = true; options.Password.RequiredLength = 8;}).AddRoles<IdentityRole>().AddEntityFrameworkStores<AppDbContext>();

// Middlewareapp.UseAuthentication();app.UseAuthorization();


Exemplo de controlador com proteção:



[Authorize(Roles = "Admin")]public class AdminController : Controller{    public IActionResult Index() => View();}

// Obtendo o usuário atualvar user = await _userManager.GetUserAsync(User);var roles = await _userManager.GetRolesAsync(user);


2. JWT (JSON Web Token) — autenticação contínua para APIs e SPAs



JWT é um token compacto e seguro para URL que contém claims (declarações) sobre o usuário. É ideal para REST APIs, aplicativos móveis e Single Page Applications (React, Angular, Vue).



Instalação do pacote:

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer


Configuração em Program.cs:



builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)    .AddJwtBearer(options =>    {        options.TokenValidationParameters = new TokenValidationParameters        {            ValidateIssuer = true,            ValidIssuer = "https://pythonlib.ru",            ValidateAudience = true,            ValidAudience = "https://api.pythonlib.ru",            ValidateLifetime = true,            IssuerSigningKey = new SymmetricSecurityKey(                Encoding.UTF8.GetBytes("SuperSecretKey123!SuperSecretKey123!")),            ClockSkew = TimeSpan.Zero        };    });


Geração do token (por exemplo, no controlador de login):



var claims = new List<Claim>{    new Claim(ClaimTypes.Name, user.UserName),    new Claim(ClaimTypes.Role, "User"),    new Claim("custom_claim", "value")};

var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SuperSecretKey123!"));var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

var token = new JwtSecurityToken( issuer: "https://pythonlib.ru", audience: "https://api.pythonlib.ru", claims: claims, expires: DateTime.Now.AddHours(2), signingCredentials: creds);

return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) });


Protegendo o endpoint:

[Authorize][HttpGet("profile")]public IActionResult GetProfile(){    var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;    return Ok(new { Message = "Acesso permitido", UserId = userId });}


3. Autenticação por Cookie — clássica para aplicações MVC



Para aplicações server-side tradicionais (Razor Pages, MVC), é conveniente usar autenticação por cookie. O usuário recebe um cookie criptografado que é automatic

Recommendations