Autorização baseada em políticas
Defina políticas de autorização reutilizáveis.
Autorização baseada em políticas é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 4 aulas no total.
O modelo de políticas
Em ASP.NET Core, toda verificação de autorização acaba sendo executada por meio de uma política. Atributos de função e de declaração são atalhos que criam políticas nos bastidores.
Definir políticas nomeadas centraliza suas regras e mantém os controladores limpos.
[Authorize(Policy = "CanManageOrders")]AddAuthorization
Registre as políticas no contêiner de serviços com AddAuthorization. Cada política recebe um nome exclusivo.
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("CanManageOrders", policy =>
policy.RequireRole("admin", "sales"));
});RequireAuthenticatedUser
O requisito mais básico é simplesmente que o usuário esteja conectado. RequireAuthenticatedUser rejeita chamadas anônimas.
options.AddPolicy("SignedIn", policy =>
policy.RequireAuthenticatedUser());Compondo requisitos
Um construtor de políticas encadeia vários requisitos; a política só é aprovada se todos forem satisfeitos.
options.AddPolicy("SeniorEditor", policy =>
policy
.RequireAuthenticatedUser()
.RequireRole("editor")
.RequireClaim("seniority", "senior"));A política padrão
Um [Authorize] sem argumentos usa a política padrão, que, por padrão, exige apenas um usuário autenticado. Você pode substituí-la.
options.DefaultPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireClaim("email_verified", "true")
.Build();A política de fallback
A política de fallback aplica-se a pontos de extremidade que não têm nenhum atributo de autorização — uma maneira poderosa de proteger tudo por padrão.
options.FallbackPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
// Now every endpoint requires auth unless marked [AllowAnonymous]Optando por não aplicar com AllowAnonymous
Quando uma política de fallback bloqueia tudo, use [AllowAnonymous] para expor pontos de extremidade públicos, como login ou verificações de integridade.
[AllowAnonymous]
[HttpGet("health")]
public IActionResult Health() => Ok("healthy");Aplicando políticas a pontos de extremidade
Faça referência a uma política pelo nome em atributos ou extensões de APIs mínimas.
// Controller
[Authorize(Policy = "SeniorEditor")]
public IActionResult Publish() => Ok();
// Minimal API
app.MapPost("/publish", () => Results.Ok())
.RequireAuthorization("SeniorEditor");Agrupando pontos de extremidade
Aplique uma política a um grupo inteiro de rotas para que todos os pontos de extremidade dentro dele a herdem.
var admin = app.MapGroup("/admin")
.RequireAuthorization("CanManageOrders");
admin.MapGet("/stats", () => Results.Ok());
admin.MapDelete("/{id}", (int id) => Results.NoContent());Requisitos por baixo dos panos
Cada chamada Require* adiciona um IAuthorizationRequirement à política. Um manipulador correspondente avalia cada requisito. Para os recursos integrados, isso é automático; regras personalizadas precisam de um manipulador personalizado (na próxima lição).
// RequireRole("admin") adds a RolesAuthorizationRequirement
// RequireClaim(...) adds a ClaimsAuthorizationRequirementOnde definir as políticas
Mantenha todas as definições de políticas em um único método de extensão para que sejam fáceis de localizar e testar.
public static IServiceCollection AddAppPolicies(
this IServiceCollection services)
{
services.AddAuthorization(o =>
{
o.AddPolicy("SignedIn", p => p.RequireAuthenticatedUser());
o.AddPolicy("CanManageOrders", p => p.RequireRole("admin"));
});
return services;
}Verificação rápida
Teste seu entendimento sobre as políticas padrão e de fallback.
Recapitulação
Você aprendeu sobre autorização baseada em políticas:
AddPolicydefine regras nomeadas e reutilizáveis.RequireAuthenticatedUser,RequireRoleeRequireClaimsão combinados com semântica AND.- DefaultPolicy sustenta um
[Authorize]sem argumentos; FallbackPolicy protege pontos de extremidade sem marcação. [AllowAnonymous]permite não aplicar a política.
Próximo tópico: requisitos e manipuladores de autorização personalizados.
Perguntas Frequentes
A aula “Autorização baseada em políticas” é grátis?
Sim — o texto completo de “Autorização baseada em políticas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 4 aulas no total.
O que vou aprender em “Autorização baseada em políticas”?
Defina políticas de autorização reutilizáveis. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C# Academy?
Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Autorização baseada em políticas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C# Academy?
Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Autorização baseada em funções
- Autorização baseada em declarações
- Autorização baseada em políticas
- Requisitos personalizados de autorização