Types d’applications et flux d’authentification de la plateforme d’identités Microsoft
Article
La plateforme d’identités Microsoft prend en charge l’authentification pour différents types d’architectures d’applications modernes. Toutes les architectures sont basées sur les protocoles standard OAuth 2.0 et OpenID Connect. Les bibliothèques d’authentification de la plateforme d’identités Microsoft permettent aux applications d’authentifier les identités et d’acquérir des jetons afin d’accéder aux API protégées.
Cet article décrit les flux d’authentification et les scénarios d’application dans lesquels ils sont utilisés :
Catégories d’applications
Les jetons de sécurité peuvent être obtenus à partir de plusieurs types d’applications, notamment :
les applications web
Applications mobiles
Applications de bureau
API Web
Les jetons peuvent également être obtenus par les applications qui sont exécutées sur des appareils qui n’ont pas de navigateur ou qui s’exécutent sur IoT.
Les sections suivantes décrivent les catégories d’applications.
Ressources protégées et applications clientes
Les scénarios d’authentification impliquent deux activités :
Protection d’une API web ou d’une application web : l’une des tâches les plus complexes dans la protection de ces ressources est la validation du jeton de sécurité. Sur certaines plateformes, Microsoft propose des bibliothèques d’intergiciels (middleware).
Avec utilisateurs ou sans utilisateurs
La plupart des scénarios d’authentification acquièrent des jetons pour le compte d’utilisateurs connectés.
Toutefois, il existe également des applications démon. Dans ces scénarios, les applications acquièrent des jetons pour elles-mêmes, sans intervention de l’utilisateur.
Applications clientes monopages, publiques et confidentielles
Les jetons de sécurité peuvent être acquis par plusieurs types d’applications. On peut diviser ces applications en trois catégories. Chacune est utilisée avec différents objets et bibliothèques.
Applications monopages : Également appelées « applications SPA », il s’agit d’applications web dans lesquelles les jetons sont acquis par une application JavaScript ou TypeScript qui s’exécute dans le navigateur. De nombreuses applications modernes ont un front-end d’application monopage écrit principalement en JavaScript. L’application utilise souvent un framework comme Angular, React ou Vue. MSAL.js est la seule bibliothèque d’authentification Microsoft prenant en charge les applications monopages.
Applications clientes publiques : Les applications qui appartiennent à cette catégorie, comme les types d’applications qui suivent, connectent toujours les utilisateurs :
Applications de bureau qui appellent des API web pour le compte d’utilisateurs connectés
Applications mobiles
Applications s’exécutant sur des appareils qui n’ont pas de navigateur, comme ceux qui s’exécutent sur IoT
Applications clientes confidentielles : Les applications appartenant à cette catégorie sont les suivantes :
Applications web qui appellent une API web
API web qui appellent une API web
Applications démon, même implémentées en tant que service de console tel qu’un démon Linux ou un service Windows
Audience de connexion
les flux d’authentification disponibles diffèrent en fonction de l’audience de connexion. Certains flux sont disponibles uniquement pour les comptes professionnels ou scolaires. D’autres sont disponibles pour les comptes professionnels ou scolaires, et pour les comptes Microsoft personnels.
La plateforme d’identités Microsoft prend en charge l’authentification pour les architectures d’application suivantes :
Applications monopages
les applications web
API Web
Applications mobiles
Applications natives
Applications démon
Applications côté serveur
Les applications utilisent les différents flux d’authentification pour connecter les utilisateurs et obtenir des jetons pour appeler des API protégées.
Application monopage
De nombreuses applications web modernes sont créées en tant qu’applications monopages côté client. Ces applications utilisent JavaScript ou un framework comme Angular, Vue ou React. Ces applications s’exécutent dans un navigateur web.
Les applications monopages se différencient des applications web traditionnelles côté serveur au niveau des caractéristiques d’authentification. Avec la plateforme d’identités Microsoft, les applications monopages peuvent connecter des utilisateurs et obtenir des jetons pour accéder à des services back-end ou à des API web. La plateforme d’identités Microsoft propose deux types d’autorisation pour les applications JavaScript :
MSAL.js (2.x)
MSAL.js (1.x)
Application web qui connecte un utilisateur
Pour protéger une application web qui connecte un utilisateur :
Si vous développez en .NET, vous utilisez ASP.NET ou ASP.NET Core avec le middleware OpenID Connect ASP.NET. La protection d’une ressource implique la validation du jeton de sécurité, qui est effectuée par les extensions IdentityModel pour .NET, et non par les bibliothèques MSAL.
Si vous développez en Node.js, vous utilisez MSAL Node.
Application web qui connecte un utilisateur et appelle une API web pour le compte de l’utilisateur
Pour appeler une API web à partir d’une application web pour le compte d’un utilisateur, utilisez le flux de code d’autorisation et stockez les jetons acquis dans le cache de jetons. Le cas échéant, MSAL actualise les jetons et le contrôleur acquiert en mode silencieux des jetons à partir du cache.
Application de bureau qui appelle une API web pour le compte d’un utilisateur connecté
Pour qu’une application de bureau puisse appeler une API web qui connecte des utilisateurs, utilisez les méthodes d’acquisition de jetons interactives des bibliothèques MSAL. Avec ces méthodes interactives, vous pouvez contrôler l’expérience de l’interface utilisateur de connexion. MSAL utilise un navigateur web pour cette interaction.
Il existe une autre possibilité pour les applications hébergées sur Windows qui s’exécutent sur des ordinateurs joints à un domaine Windows ou par Microsoft Entra ID. Ces applications peuvent acquérir un jeton en mode silencieux à l’aide de l’authentification Windows intégrée.
Les applications qui s’exécutent sur un appareil sans navigateur peuvent toujours appeler une API pour le compte d’un utilisateur. Pour s’authentifier, l’utilisateur doit se connecter sur un autre appareil doté d’un navigateur web. Ce scénario nécessite que vous utilisiez le flux de code d’appareil.
Notez que le flux Nom d’utilisateur/Mot de passe est disponible dans les applications clientes publiques, même si nous ne recommandons pas son utilisation. Ce flux est toujours nécessaire dans certains scénarios comme DevOps.
L’utilisation du flux Nom d’utilisateur/Mot de passe contraint vos applications. Par exemple, les applications ne peuvent pas connecter un utilisateur qui doit utiliser l’authentification multifacteur ou l’outil d’accès conditionnel dans Microsoft Entra ID. Vos applications ne bénéficient pas non plus de l’authentification unique. L’authentification à l’aide du flux Nom d’utilisateur/Mot de passe va à l’encontre des principes de l’authentification moderne et n’est fournie que pour des raisons d’héritage.
Dans les applications de bureau, si vous souhaitez que le cache de jetons soit conservé, vous pouvez personnaliser la sérialisation du cache de jetons. En implémentant une double sérialisation du cache de jetons, vous pouvez utiliser des caches de jetons à compatibilité descendante et ascendante.
Application mobile qui appelle une API web pour le compte d’un utilisateur interactif
Comme l’application de bureau, l’application mobile appelle les méthodes d’acquisition de jeton interactives MSAL afin d’acquérir un jeton pour appeler une API web.
MSAL iOS et MSAL Android utilisent le navigateur web du système par défaut. Toutefois, vous pouvez leur donner pour instruction d’utiliser l’affichage web incorporé. Il existe des spécificités qui dépendent de la plateforme mobile : Plateforme Windows universelle (UWP), iOS ou Android.
Certains scénarios, comme ceux qui impliquent un accès conditionnel lié à l’identité d’appareil ou à l’inscription de l’appareil, nécessitent l’installation d’un répartiteur sur l’appareil. Le portail d’entreprise Microsoft sur Android et Microsoft Authenticator sur Android et iOS sont des exemples de répartiteurs.
Une application mobile qui utilise MSAL iOS ou MSAL Android peut se voir appliquer des politiques de protection des applications. Par exemple, les stratégies peuvent empêcher un utilisateur de copier du texte protégé. L’application mobile est gérée par Intune et reconnue par Intune en tant qu’application gérée. Pour plus d’informations, consultez l’article Présentation du Microsoft Intune App SDK.
Le SDK d’application Intune est distinct des bibliothèques MSAL et interagit avec Microsoft Entra ID de façon autonome.
API web protégée
Vous pouvez utiliser le point de terminaison de la plateforme d’identités Microsoft pour sécuriser des services web, comme l’API RESTful de votre application. Une API web protégée est appelée à l’aide d’un jeton d’accès. Le jeton aide à sécuriser les données de l’API et authentifie les requêtes entrantes. L’appelant d’une API web ajoute un jeton d’accès dans l’en-tête d’autorisation d’une requête HTTP.
Si vous souhaitez protéger votre API web ASP.NET ou ASP.NET Core, validez le jeton d’accès. Pour cette validation, vous utilisez le middleware JWT ASP.NET. La validation est effectuée par la bibliothèque d’extensions IdentityModel pour .NET, non par MSAL.NET.
API web qui appelle une autre API web pour le compte d’un utilisateur
Si vous souhaitez que votre API web protégée puisse appeler une autre API web pour le compte d’un utilisateur, votre application doit acquérir un jeton pour l’API web en aval. De tels appels sont parfois qualifiés d’appels de service à service. Les API web qui appellent d’autres API web doivent fournir une sérialisation de cache personnalisée.
Application démon qui appelle une API web dans le nom du démon
Les applications qui contiennent des processus de longue durée ou qui fonctionnent sans interaction utilisateur doivent également disposer d’un moyen d’accès aux API web sécurisées. Ces applications peuvent s’authentifier et obtenir des jetons à l’aide de leur identité d’application. L’application prouve son identité à l’aide d’un certificat ou d’une clé secrète client.
Vous pouvez écrire des applications démon qui acquièrent un jeton pour l’application appelante à l’aide des méthodes d’acquisition des informations d’identification du client MSAL. Ces méthodes exigent une clé secrète client que vous ajoutez à l’inscription de l’application dans Microsoft Entra ID. L’application partage ensuite le secret avec le démon appelé. Parmi ces secrets, citons par exemple les mots de passe d’application, l’assertion de certificat ou l’assertion du client.
Scénarios et flux d’authentification pris en charge
Vous pouvez utiliser les flux d’authentification pour implémenter les scénarios d’applications qui exigent des jetons. Il n’existe pas de mappage un-à-un entre des scénarios d’applications et des flux d’authentification.
Comptes professionnels ou scolaires et comptes personnels
Scénarios avec les plateformes et langages pris en charge
Les bibliothèques d’authentification Microsoft prennent en charge plusieurs plateformes :
.NET
.NET Framework
Java
JavaScript
macOS
Android natif
iOS natif
Node.js
Python
Windows 10/UWP
Vous pouvez également utiliser différents langages pour générer vos applications.
Dans la colonne Windows du tableau suivant, chaque fois que .NET est mentionné, .NET Framework est également possible. Ce dernier est omis pour éviter d’encombrer la table.
Expliquez les fonctionnalités de Microsoft Entra ID pour moderniser des solutions d’identité, implémenter des solutions hybrides et une gouvernance des identités.