.net Core Policy Based Authorization Example

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

Autorisation basée sur les stratégies dans ASP.NET Core : un exemple pratique

L'autorisation basée sur les stratégies dans ASP.NET Core est une approche flexible et puissante pour contrôler l'accès aux ressources de votre application. Au lieu de gérer les autorisations au niveau de l'action ou du contrôleur, vous pouvez définir des stratégies d'autorisation qui encapsulent des règles et des exigences spécifiques.

Exemple de stratégie d'autorisation

Imaginons une application web qui permet à ses utilisateurs d'accéder à des données sensibles. Nous souhaitons mettre en place une stratégie d'autorisation pour contrôler qui peut accéder à ces données.

using Microsoft.AspNetCore.Authorization;

namespace MyApplication.Authorization
{
    public class AdminRequirement : IAuthorizationRequirement
    {
    }
}

Ce code définit une nouvelle exigence d'autorisation appelée AdminRequirement. Cette exigence est utilisée pour spécifier que l'utilisateur doit avoir le rôle "Administrateur" pour accéder à la ressource.

La classe de gestion de stratégie

Maintenant, nous allons créer une classe de gestion de stratégie pour gérer l'exigence AdminRequirement.

using Microsoft.AspNetCore.Authorization;

namespace MyApplication.Authorization
{
    public class AdminAuthorizationHandler : AuthorizationHandler
    {
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AdminRequirement requirement)
        {
            if (context.User.IsInRole("Administrateur"))
            {
                context.Succeed(requirement);
            }

            return Task.CompletedTask;
        }
    }
}

Cette classe implémente l'interface AuthorizationHandler<TRequirement> et définit une méthode HandleRequirementAsync. Cette méthode est appelée lorsque la stratégie d'autorisation est évaluée. Dans ce cas, la méthode vérifie si l'utilisateur actuel est dans le rôle "Administrateur". Si oui, l'accès est autorisé et context.Succeed(requirement) est appelé.

Configuration de la stratégie

Enfin, nous devons configurer la stratégie d'autorisation dans le fichier Startup.cs.

using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection;

namespace MyApplication
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddAuthorization(options =>
            {
                options.AddPolicy("AdminPolicy", policy => 
                {
                    policy.Requirements.Add(new AdminRequirement());
                });
            });

            services.AddScoped();
        }

        // ...
    }
}

Ce code configure une nouvelle stratégie d'autorisation appelée "AdminPolicy" qui utilise l'exigence AdminRequirement.

Utilisation de la stratégie

Maintenant, nous pouvons utiliser la stratégie "AdminPolicy" pour contrôler l'accès à nos ressources. Par exemple, nous pouvons décorer un contrôleur ou une action avec l'attribut Authorize.

using Microsoft.AspNetCore.Mvc;

namespace MyApplication.Controllers
{
    [Authorize("AdminPolicy")]
    public class AdminController : Controller
    {
        // ...
    }
}

Ce code garantit que seules les personnes ayant le rôle "Administrateur" peuvent accéder aux actions dans le contrôleur AdminController.

Conclusion

L'autorisation basée sur les stratégies dans ASP.NET Core est une méthode puissante et flexible pour gérer l'accès aux ressources de votre application. En définissant des stratégies et des exigences spécifiques, vous pouvez contrôler l'accès de manière fine et sécurisée. L'exemple présenté dans cet article illustre comment utiliser des stratégies d'autorisation pour restreindre l'accès aux données sensibles à un groupe spécifique d'utilisateurs.

Related Post