.net 6 Custom Authorize Attribute

4 min read Jun 03, 2024
.net 6 Custom Authorize Attribute

Attribut d'autorisation personnalisés dans .NET 6

L'authentification et l'autorisation sont des aspects essentiels de la sécurité dans les applications web. Dans .NET 6, les attributs d'autorisation personnalisés vous permettent de contrôler l'accès aux ressources de manière plus fine et flexible. Cet article vous guidera à travers la création et l'utilisation d'attributs d'autorisation personnalisés pour sécuriser votre application .NET 6.

Comprendre les Attributs d'Autorisation

Les attributs d'autorisation sont des attributs de classe qui spécifient les exigences d'autorisation pour une méthode ou un contrôleur. En utilisant des attributs d'autorisation, vous pouvez définir qui est autorisé à accéder à une ressource spécifique.

.NET 6 fournit un ensemble d'attributs d'autorisation intégrés tels que [Authorize], [AllowAnonymous], et [Authorize(Roles = "Admin")]. Cependant, pour des scénarios plus complexes, vous pouvez créer vos propres attributs d'autorisation personnalisés.

Créer un Attribut d'Autorisation Personnalisé

  1. Créer une classe qui hérite de AuthorizationAttribute:
public class MyCustomAuthorizationAttribute : AuthorizationAttribute
{
    // Propriétés et méthodes personnalisées
}
  1. Définir les exigences d'autorisation dans la méthode HandleRequirementAsync:
public class MyCustomAuthorizationAttribute : AuthorizationAttribute
{
    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, 
        DefaultAuthorizationServiceOptions options)
    {
        // Vérifiez les conditions d'autorisation
        if (context.User.IsInRole("Admin")) 
        {
            context.Succeed(this); // Accès autorisé
        }
        else
        {
            // Accès refusé
        }

        return Task.CompletedTask;
    }
}

Dans l'exemple ci-dessus, l'attribut MyCustomAuthorizationAttribute exige que l'utilisateur soit dans le rôle "Admin" pour accéder à la ressource. Vous pouvez ajouter des conditions d'autorisation supplémentaires, telles que la vérification de la revendication utilisateur ou la consultation d'une base de données.

Utiliser l'Attribut d'Autorisation Personnalisé

Une fois que votre attribut d'autorisation personnalisé est créé, vous pouvez l'appliquer à un contrôleur ou à une méthode en utilisant la syntaxe d'attribut :

[MyCustomAuthorizationAttribute]
public class MyController : ControllerBase
{
    // Méthodes
}

Exemple Complet

using Microsoft.AspNetCore.Authorization;
using System.Threading.Tasks;

// Attribut d'autorisation personnalisé
public class MyCustomAuthorizationAttribute : AuthorizationAttribute
{
    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, 
        DefaultAuthorizationServiceOptions options)
    {
        if (context.User.IsInRole("Admin"))
        {
            context.Succeed(this);
        }

        return Task.CompletedTask;
    }
}

// Contrôleur utilisant l'attribut personnalisé
[MyCustomAuthorizationAttribute]
public class MyController : ControllerBase
{
    public IActionResult Index()
    {
        // Code
        return View();
    }
}

Conclusion

Les attributs d'autorisation personnalisés dans .NET 6 offrent un contrôle granulaire sur l'accès aux ressources de votre application. En créant et en utilisant des attributs personnalisés, vous pouvez mettre en œuvre des stratégies d'autorisation complexes et assurer la sécurité de votre application.