Choisir une solution de gestion des identités

La plupart des applications web prennent en charge l’authentification pour s’assurer que les utilisateurs sont ceux qu’ils prétendent être. Un utilisateur peut être une personne ou une autre application. La gestion de l’accès garantit que les utilisateurs sont uniquement en mesure de voir et de modifier les informations qu’ils sont autorisés à voir et à modifier. Par exemple, un utilisateur final ne doit pas avoir accès à la section administrative d’un site web. Identity solutions de gestion sont conçues pour gérer les exigences des tâches liées à l’authentification et aux autorisations. Pour en savoir plus sur la gestion des identités, consultez Qu’est-ce que la gestion des identités et des accès ?. De nombreuses solutions de gestion des identités pour les applications web .NET sont disponibles, chacune avec différentes fonctionnalités et exigences à utiliser ou à installer. Cet article fournit des conseils sur la façon de choisir la solution appropriée.

Gestion des identités de base avec ASP.NET Core Identity

ASP.NET Core est fourni avec un fournisseur d’authentification intégré : ASP.NET Core Identity. Le fournisseur inclut les API, l’interface utilisateur et la configuration de la base de données back-end pour prendre en charge la gestion des identités utilisateur, le stockage des informations d’identification de l’utilisateur et l’octroi ou la révocation des autorisations. Les autres fonctionnalités prises en charge sont les suivantes :

Pour la plupart des scénarios, il peut s’agir du seul fournisseur nécessaire.

Pour en savoir plus :

Dans d’autres scénarios, un serveur ou un service qui gère l’authentification et l’identité peut être bénéfique.

Déterminer si un serveur OIDC est nécessaire

Les applications web nécessitent un moyen de mémoriser actions passées, car le web, par défaut, est sans état. Dans le cas contraire, les utilisateurs seraient obligés d’entrer leurs informations d’identification chaque fois qu’ils ont accédé à une nouvelle page. La solution courante pour la mémorisation de l’état est cookies, un mécanisme basé sur un navigateur pour le stockage des données. Le serveur web envoie le cookieinitial, puis le navigateur le stocke et le renvoie avec chaque requête. Cette opération est effectuée automatiquement sans avoir besoin que le développeur écrive du code. Cookies sont faciles à utiliser et intégrés dans le navigateur, mais sont conçus pour une utilisation dans un seul site web ou domaine web. La solution par défaut intégrée à ASP.NET Core utilise l’authentification basée sur cookie.

Les jetons sont des conteneurs avec des métadonnées qui sont transmises explicitement par le biais des en-têtes ou du corps des requêtes HTTP. L’avantage principal des jetons par rapport aux cookies est qu’ils ne sont pas liés à une application ou un domaine spécifique. Au lieu de cela, les jetons sont généralement signés avec chiffrement asymétrique. Par exemple, les serveurs OIDC émettent des jetons avec des informations sur l’identité à l’aide de l' JSON Web Token (JWT) format qui inclut la signature. Le chiffrement asymétrique utilise une combinaison d’une clé privée connue uniquement du signataire et d’une clé publique que tout le monde peut connaître. Les jetons peuvent également être chiffrés.

Le jeton signé ne peut pas être falsifié en raison de la clé privée. Clé publique :

  • Permet de valider le jeton pour s’assurer qu’il n’a pas été modifié.
  • Garantit qu’elle a été générée par l’entité qui contient la clé privée.

L’inconvénient principal de l’utilisation de jetons est qu’ils nécessitent un service (généralement un serveur OIDC) pour émettre et fournir une validation pour les jetons. Le service doit être installé, configuré et géré.

Une raison courante pour laquelle un serveur OIDC est requis est pour les applications qui exposent des API web consommées par d’autres applications. Pour les API web exposées, les interfaces utilisateur clientes telles que les applications monopage (SPA), les clients mobiles et les clients de bureau font partie de la même application. Les exemples spa incluent Angular, React et Blazor WebAssembly. Si les applications autres que votre application web ou les interfaces utilisateur clientes doivent effectuer un appel d’API sécurisé à votre application, vous souhaiterez probablement utiliser des jetons. Si vous disposez uniquement d’interfaces utilisateur clientes, ASP.NET Core Identity offre la possibilité d’acquérir un jeton pendant l’authentification. Jeton d’authentification émis par ASP.NET Core Identity:

  • Peut être utilisé par les clients mobiles et de bureau. Cookies sont préférés aux jetons pour la sécurité et la simplicité.
  • N’est pas adapté à la gestion de l’accès à partir d’applications tierces.

Une autre raison pour laquelle un serveur OIDC est requis est de partager des connexions avec d’autres applications. Communément appelée authentification unique, cette fonctionnalité permet aux utilisateurs de :

  • Connectez-vous une fois avec le formulaire d’une application web.
  • Utilisez les informations d’identification obtenues pour vous authentifier auprès d’autres applications sans avoir à vous reconnecter ou à choisir un autre mot de passe.

Un serveur OIDC est généralement préféré pour fournir une solution sécurisée et évolutive pour l’authentification unique.

Pour les applications qui ne partagent pas de connexions avec d’autres applications, le moyen le plus simple de sécuriser rapidement une application consiste à utiliser le fournisseur intégré ASP.NET Core Identity. Sinon, un serveur OIDC fourni par une solution de gestion des identités tierce est nécessaire. Les serveurs OIDC sont disponibles comme suit :

  • Produits que vous installez sur votre serveur, appelés auto-hôte.
  • Les conteneurs s’exécutent dans un hôte comme Docker.
  • Les services web que vous intégrez pour gérer l’identité.

Certaines solutions sont gratuites et open source, tandis que d’autres sont concédées sous licence commerciale. Consultez solutions de gestion des identités pour obtenir la liste des options disponibles. Il est possible que votre organisation utilise déjà un fournisseur d’identité. Dans ce cas, il peut être judicieux d’utiliser le fournisseur existant au lieu d’utiliser une autre solution. Toutes les principales solutions fournissent de la documentation permettant de configurer ASP.NET Core pour utiliser leur produit ou service.

Scénarios déconnectés

De nombreuses solutions, telles que Microsoft Entra ID, sont basées sur le cloud et nécessitent une connexion Internet pour fonctionner. Si votre environnement n’autorise pas la connectivité Internet, vous ne pourrez pas utiliser le service.

ASP.NET Core Identity fonctionne parfaitement dans les scénarios déconnectés, tels que :

  • L’application ne peut pas accéder à Internet.
  • L’application doit toujours fonctionner sur le réseau local même si Internet est déconnecté.

Si vous avez besoin d’un serveur OIDC complet pour un scénario déconnecté, choisissez l’une des options suivantes :

  • Solution qui vous permet d’installer et d’exécuter le service sur vos propres machines.
  • Exécutez le service d’authentification localement en tant que conteneur.

Décider où les données utilisateur telles que les connexions sont stockées

Un autre facteur important à prendre en compte est l’emplacement où les données de connexion de l’utilisateur sont stockées. De nombreux développeurs choisissent des services externes et cloud comme Microsoft Entra ID pour gérer l’identité. Un fournisseur de services cloud :

  • Prend en charge les responsabilités de stockage sécurisé des données.
  • conserve le logiciel à jour avec les derniers correctifs et versions de sécurité.
  • Conforme aux réglementations en matière de confidentialité.

D’autres préfèrent stocker des données sur leurs propres serveurs en raison de réglementations, de conformité, de stratégie ou d’autres raisons.

Si les données sont stockées sur vos serveurs, vous devrez probablement choisir une solution installable ou basée sur un conteneur.

Identity vs serveur OIDC

Utilisez le diagramme suivant pour vous aider à déterminer s’il faut utiliser le système ASP.NET Identity Core ou un serveur OIDC pour l’authentification et l’autorisation :

Identity management decision flow

Le tableau suivant répertorie certaines des choses à prendre en compte lors du choix de votre solution de gestion des identités.

Fonctionnalité Auto-hôte (infrastructure ou conteneur) Cloud
Intégration d’applications Les solutions locales implémentées en tant que bibliothèques ou infrastructures peuvent souvent être intégrées directement dans votre propre application. Les solutions basées sur des conteneurs nécessitent une remise entre votre application web et le service basé sur un conteneur. Les solutions cloud s’intègrent généralement à des points spécifiques dans votre flux de connexion et fournissent une configuration pour mettre à jour l’interface utilisateur pour qu’elle corresponde à votre thème, mais le niveau de personnalisation disponible est limité.
Configuration Les solutions auto-hôtes nécessitent la configuration du logiciel pour l’environnement en plus de configurer la façon dont vous souhaitez gérer les identités. Les solutions basées sur des conteneurs fournissent généralement une interface utilisateur web pour la configuration. Les solutions cloud fournissent généralement une interface utilisateur web pour la configuration.
Personnalisation Les solutions auto-hôtes sont généralement hautement personnalisables, y compris les modifications basées sur le code. Bien que les solutions conteneurisées offrent des options d’extensibilité, elles sont souvent plus limitées. Les services cloud autorisent la personnalisation, mais ils sont généralement limités aux modifications basées sur la configuration.
Maintenance Les produits installés nécessitent une ressource dédiée pour garantir que tous les correctifs de sécurité sont appliqués en temps opportun et pour gérer les mises à niveau. Le processus de mise à niveau et de correctif pour les conteneurs est généralement plus faible et implique simplement l’installation de l’image conteneur fournie. Le fournisseur de services gère sa solution cloud, y compris l’application de correctifs nécessaires et la gestion des mises à niveau.
Stockage des informations d’identification utilisateur Vous êtes responsable de la gouvernance des données et de la gestion des violations. Gestion des risques associés à la gestion des informations d’identification de l’utilisateur et conformité aux réglementations. est délégué au fournisseur de services.

Pour plus d’informations sur les options disponibles, consultez Identity solutions de gestion pour ASP.NET Core.

Étapes suivantes