Implémenter un contrôle d’accès en fonction du rôle
Le contrôle d’accès en fonction du rôle (RBAC) permet aux utilisateurs ou aux groupes d’avoir des autorisations spécifiques pour accéder aux ressources et les gérer. En règle générale, l’implémentation de RBAC pour protéger une ressource inclut la protection d’une application web, d’une application monopage (SPA) ou d’une API. Il peut s’agir de l’ensemble de l’application ou de l’API, ou de zones, fonctionnalités ou méthodes d’API spécifiques. Pour plus d'informations sur les bases des autorisations, consultez Notions de base des autorisations.
Comme indiqué dans Contrôle d’accès en fonction du rôle pour les développeurs d’applications, il existe trois moyens d’implémenter le RBAC à l’aide de la plateforme d’identités Microsoft :
- Rôles d’application : utilisation de la fonctionnalité Rôles d’application dans une inscription d’application en association avec la logique au sein de l’application pour interpréter les attributions de rôles d’application entrantes.
- Groupes : utilisation d’affectations de groupe d’une identité entrante à l’aide de la logique au sein de l’application pour interpréter les affectations de groupe.
- Magasin de données personnalisé : récupérer et interpréter les attributions de rôles à l’aide de la logique au sein de l’application.
Il est recommandé d’utiliser la fonctionnalité Rôles d’application, car elle est plus facile à implémenter. Cette approche est prise en charge directement par les kits de développement logiciel (SDK) utilisés pour la création d’application à l’aide de la plateforme d’identités Microsoft. Pour obtenir davantage d’informations sur le choix d’une approche, consultez Choix de l’approche.
Définir des rôles d’application
La première étape pour l’implémentation du RBAC pour votre application consiste à définir les rôles d’application et à lui attribuer des utilisateurs ou des groupes. Ce processus est décrit dans Procédure : Ajouter des rôles d’application dans votre application et les recevoir dans le jeton. Après avoir défini les rôles d’application et attribué des utilisateurs ou des groupes à ces derniers, accédez aux attributions de rôles dans les jetons entrant dans l’application et agissez-en conséquence.
Implémenter RBAC dans ASP.NET Core
ASP.NET Core prend en charge l’ajout de RBAC à une application web ASP.NET Core ou une API web. L’ajout du contrôle d’accès en fonction du rôle (RBAC) permet de faciliter l’implémentation à l’aide des vérifications de rôle avec l’attribut ASP.NET Core Authorize. Il est également possible d’utiliser la prise en charge d’ASP.NET Core pour la vérification des rôles basée sur des stratégies.
Application web ASP.NET Core MVC
L’implémentation du RBAC dans une application web ASP.NET Core MVC est simple. Elle implique essentiellement l’utilisation de l’attribut Authorize pour spécifier les rôles qui doivent être autorisés à accéder à des contrôles ou des actions spécifiques dans les contrôleurs. Suivez ces étapes pour implémenter le RBAC dans une application ASP.NET Core MVC :
Créez une inscription d’application avec des rôles et des attributions d’application, comme indiqué dans Définition de rôles d’application ci-dessus.
Effectuez l’une des étapes suivantes :
Créez un projet d’application web ASP.NET Core MVC à l’aide de la commande de CLI dotnet. Spécifiez l'indicateur
--auth
avec soitSingleOrg
pour l'authentification à locataire unique, soitMultiOrg
pour l'authentification à locataire multiple, l'indicateur--client-id
avec le client s'il provient de l'enregistrement de l'application et l'indicateur--tenant-id
avec le locataire s'il provient du locataire Microsoft Entra :dotnet new mvc --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID>
Ajoutez les bibliothèques the Microsoft.Identity.Web et Microsoft.Identity.Web.UI à un projet ASP.NET Core MVC existant :
dotnet add package Microsoft.Identity.Web dotnet add package Microsoft.Identity.Web.UI
Suivez les instructions spécifiées dans Guide de démarrage rapide : Ajouter la connexion avec Microsoft à une application web ASP.NET Core pour ajouter l’authentification à l’application.
Ajoutez les vérifications de rôles sur les actions des contrôleurs comme décrit dans Ajout de vérifications de rôles.
Testez l’application en tentant d’accéder à l’un des itinéraires MVC protégés.
API web ASP.NET Core
L’implémentation du RBAC dans une API web ASP.NET Core implique essentiellement l’utilisation de l’attribut Authorize pour spécifier les rôles qui doivent être autorisés à accéder à des contrôles ou des actions spécifiques dans les contrôleurs. Suivez ces étapes pour implémenter le RBAC dans l’API web ASP.NET Core :
Créez une inscription d’application avec des rôles et des attributions d’application, comme indiqué dans Définition de rôles d’application ci-dessus.
Effectuez l’une des étapes suivantes :
Créez un projet d’API web ASP.NET Core MVC à l’aide de la commande de CLI dotnet. Spécifiez l'indicateur
--auth
avec soitSingleOrg
pour l'authentification à locataire unique, soitMultiOrg
pour l'authentification à locataire multiple, l'indicateur--client-id
avec le client s'il provient de l'enregistrement de l'application et l'indicateur--tenant-id
avec le locataire s'il provient du locataire Microsoft Entra :dotnet new webapi --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID>
Ajoutez les bibliothèques Microsoft.Identity.Web et Swashbuckle.AspNetCore à un projet d’API web ASP.NET Core existant :
dotnet add package Microsoft.Identity.Web dotnet add package Swashbuckle.AspNetCore
Suivez les instructions spécifiées dans Guide de démarrage rapide : Ajouter la connexion avec Microsoft à une application web ASP.NET Core pour ajouter l’authentification à l’application.
Ajoutez les vérifications de rôles sur les actions des contrôleurs comme décrit dans Ajout de vérifications de rôles.
Appelez l’API depuis une application cliente. Pour obtenir un exemple complet, consultez Application monopage Angular appelant une API web ASP.NET Core et utilisant les Rôles d’application pour implémenter le contrôle d’accès en fonction du rôle.
Implémenter RBAC dans d’autres plateformes
Angular SPA
La mise en œuvre de RBAC dans un SPA angulaire implique l'utilisation de la bibliothèque d'authentification Microsoft pour Angular pour autoriser l'accès aux routes angulaires contenues dans l'application. Un exemple est fourni dans les exemples MSAL Angular v3.
Remarque
Les implémentations de RBAC côté client doivent être associées au RBAC côté serveur pour empêcher les applications non autorisées d’accéder aux ressources sensibles.
Application Node.js avec Express
L’implémentation du RBAC dans une application Node.js avec Express implique l’utilisation de MSAL pour autoriser l’accès aux itinéraires Express contenus dans l’application. Cela est illustré dans l’exemple Permettre à votre application web Node.js de connecter des utilisateurs et d’appeler des API avec la plateforme d’identités Microsoft.
Étapes suivantes
- Apprenez-en davantage sur les autorisations et le consentement dans la plateforme d’identités Microsoft.
- Apprenez-en davantage sur le contrôle d’accès en fonction du rôle pour les développeurs d’applications.