0Pricing
C# Academy · Aula

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 ClaimsAuthorizationRequirement

Onde 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:

  • AddPolicy define regras nomeadas e reutilizáveis.
  • RequireAuthenticatedUser, RequireRole e RequireClaim sã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

  1. Autorização baseada em funções
  2. Autorização baseada em declarações
  3. Autorização baseada em políticas
  4. Requisitos personalizados de autorização
← Voltar para C# Academy