.net Core Authorization Policy Requirements

4 min read Jun 03, 2024
.net Core Authorization Policy Requirements

Contrôle d'accès basé sur les politiques dans ASP.NET Core

Le contrôle d'accès basé sur les politiques (PAB) est une fonctionnalité puissante d'ASP.NET Core qui vous permet de contrôler l'accès aux ressources en fonction des exigences définies dans des politiques. Les politiques peuvent être basées sur des rôles d'utilisateur, des revendications ou d'autres critères personnalisés.

Qu'est-ce qu'une politique d'autorisation ?

Une politique d'autorisation est un ensemble de règles qui définissent les conditions nécessaires pour autoriser un utilisateur à accéder à une ressource. Ces règles peuvent être simples ou complexes, en fonction des besoins de votre application.

Comment créer une politique d'autorisation ?

Pour créer une politique d'autorisation dans ASP.NET Core, vous pouvez utiliser la classe AuthorizationPolicyBuilder dans votre code de configuration. Voici un exemple de création d'une politique nommée "Administrateur" qui autorise uniquement les utilisateurs ayant le rôle "Administrateur":

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("Administrateur", policy => policy.RequireRole("Administrateur"));
    });
}

Comment appliquer une politique d'autorisation ?

Vous pouvez appliquer une politique d'autorisation à un contrôleur, une action ou un autre élément de votre application ASP.NET Core en utilisant l'attribut Authorize. Par exemple, pour autoriser uniquement les utilisateurs avec le rôle "Administrateur" à accéder à l'action "Index" du contrôleur "Home":

[Authorize(Policy = "Administrateur")]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        // Code de l'action
    }
}

Utiliser des revendications pour la définition de politiques

Vous pouvez utiliser des revendications pour définir des règles plus spécifiques pour vos politiques d'autorisation. Par exemple, vous pouvez créer une politique qui autorise uniquement les utilisateurs avec une revendication "Department" ayant la valeur "Sales":

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("Ventes", policy => policy.RequireClaim("Department", "Sales"));
    });
}

Exigences personnalisées

Vous pouvez également définir des exigences personnalisées pour vos politiques d'autorisation. Cela vous permet de créer des règles d'accès basées sur des critères spécifiques à votre application. Voici un exemple d'une exigence personnalisée qui vérifie si l'utilisateur est âgé de plus de 18 ans:

public class AgeRequirement : IAuthorizationRequirement
{
    public int AgeMinimum { get; }

    public AgeRequirement(int ageMinimum)
    {
        AgeMinimum = ageMinimum;
    }
}
public class AgeHandler : AuthorizationHandler
{
    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AgeRequirement requirement)
    {
        if (context.User.HasClaim(c => c.Type == "Age" && int.Parse(c.Value) >= requirement.AgeMinimum))
        {
            context.Succeed(requirement);
        }

        return Task.CompletedTask;
    }
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("Adulte", policy => policy.Requirements.Add(new AgeRequirement(18)));
    });

    services.AddSingleton();
}

Conclusion

Les politiques d'autorisation sont un outil essentiel pour sécuriser votre application ASP.NET Core. En utilisant PAB, vous pouvez facilement définir et appliquer des règles d'accès basées sur des rôles, des revendications ou d'autres critères personnalisés.

Related Post