0Pricing
C# Academy · Leçon

Autorisation fondée sur les rôles

Restreignez les points de terminaison selon les rôles des utilisateurs.

Autorisation fondée sur les rôles est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.

Authentification et autorisation

Authentification répond à la question « qui êtes-vous ? ». Autorisation répond à la question « que pouvez-vous faire ? ».

Le modèle d’autorisation le plus simple dans ASP.NET Core est fondé sur les rôles : un utilisateur appartient à des rôles, et les points de terminaison exigent des rôles précis.

// User has roles: admin, editor
// Endpoint requires: admin

D’où viennent les rôles

Un rôle n’est qu’une revendication de type ClaimTypes.Role. Lorsque vous émettez un JWT, ajoutez une revendication de rôle pour chaque rôle détenu par l’utilisateur.

var claims = new List<Claim>
{
    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
    new Claim(ClaimTypes.Role, "admin"),
    new Claim(ClaimTypes.Role, "editor")
};

Le type de revendication de rôle

Pour que [Authorize(Roles=...)] et User.IsInRole fonctionnent, le gestionnaire doit savoir quel type de revendication représente un rôle.

Par défaut, la clé JWT role est associée à ClaimTypes.Role. Si vous utilisez une clé personnalisée, indiquez-le au validateur via RoleClaimType.

options.TokenValidationParameters = new TokenValidationParameters
{
    RoleClaimType = ClaimTypes.Role
};

Exiger un seul rôle

Appliquez [Authorize(Roles = "admin")] à un contrôleur ou à une action. Seuls les utilisateurs ayant le rôle admin peuvent y accéder.

[Authorize(Roles = "admin")]
[HttpDelete("users/{id}")]
public IActionResult DeleteUser(int id)
{
    // only admins reach here
    return NoContent();
}

Exiger l’un de plusieurs rôles

Une liste séparée par des virgules signifie OR : l’utilisateur doit posséder au moins un des rôles indiqués.

[Authorize(Roles = "admin,editor")]
[HttpPut("articles/{id}")]
public IActionResult Update(int id) => Ok();
// admins OR editors are allowed

Exiger plusieurs rôles (AND)

Pour exiger tous plusieurs rôles, empilez plusieurs attributs [Authorize]. Chacun d’eux doit réussir.

[Authorize(Roles = "employee")]
[Authorize(Roles = "manager")]
public IActionResult ApproveBudget() => Ok();
// must be BOTH employee AND manager

Vérification des rôles dans le code

Parfois, vous devez effectuer une vérification de rôle à l’intérieur du corps de la méthode, et pas seulement à l’entrée. Utilisez User.IsInRole.

public IActionResult GetReport()
{
    var data = BuildReport();
    if (User.IsInRole("admin"))
        data.IncludeSensitiveColumns();
    return Ok(data);
}

Équivalent avec les API minimales

Les API minimales utilisent .RequireAuthorization avec une politique intégrée ou, plus simplement, vous pouvez exiger un rôle au moyen d’une politique nommée.

app.MapDelete("/users/{id}", (int id) => Results.NoContent())
   .RequireAuthorization(p => p.RequireRole("admin"));

Les rôles dans une hiérarchie

ASP.NET Core n’intègre pas de hiérarchie de rôles. Si les administrateurs doivent implicitement disposer des droits des éditeurs, accordez les deux claims de rôle lors de la connexion ou modélisez cela avec des politiques (cours suivant).

// Grant both at login if admin >= editor
new Claim(ClaimTypes.Role, "admin");
new Claim(ClaimTypes.Role, "editor");

Quand les rôles ne suffisent plus

Les rôles offrent une granularité limitée. Lorsque les règles dépendent des données (par exemple, « seul le propriétaire peut modifier ») ou de permissions détaillées, les vérifications de rôles deviennent difficiles à gérer.

C’est là qu’interviennent l’autorisation fondée sur les claims et l’autorisation fondée sur les politiques.

// Hard to express with roles alone:
// "editors, but only for their own department"

Renvoyer 403 ou 401

Si l’utilisateur n’est pas authentifié, une vérification de rôle renvoie 401 Unauthorized. S’il est authentifié, mais ne possède pas le rôle requis, il reçoit 403 Forbidden.

// No/invalid token         -> 401 Unauthorized
// Valid token, wrong role   -> 403 Forbidden

Vérification rapide

Testez vos connaissances sur les rôles.

Récapitulatif

Vous avez appris l’autorisation fondée sur les rôles :

  • Les rôles sont des claims ClaimTypes.Role placés dans le jeton.
  • [Authorize(Roles = "a,b")] signifie OR : empiler les attributs signifie AND.
  • User.IsInRole vérifie les rôles dans le code.
  • Les rôles sont grossiers : les règles fondées sur les données nécessitent des modèles plus riches.

Ensuite : l’autorisation fondée sur les claims.

Questions Fréquemment Posées

La leçon « Autorisation fondée sur les rôles » est-elle gratuite ?

Oui — le texte complet de « Autorisation fondée sur les rôles » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Autorisation fondée sur les rôles » ?

Restreignez les points de terminaison selon les rôles des utilisateurs. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Autorisation fondée sur les rôles » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Autorisation fondée sur les rôles
  2. Autorisation fondée sur les revendications
  3. Autorisation fondée sur des politiques
  4. Exigences d’autorisation personnalisées
← Retour à C# Academy