Protocoles OAuth 2.0 et OpenID Connect sur la plateforme d’identité MicrosoftOAuth 2.0 and OpenID Connect protocols on Microsoft identity platform

Le point de terminaison de la plateforme d’identités Microsoft pour l’identité en tant que service implémente les fonctionnalités d’authentification et d’autorisation à l’aide des protocoles standard du secteur, OIDC (OpenID Connect) et OAuth 2.0, respectivement.The Microsoft identity platform endpoint for identity-as-a-service implements authentication and authorization with the industry standard protocols OpenID Connect (OIDC) and OAuth 2.0, respectively. Bien que ce service soit conforme aux normes, vous pouvez constater de subtiles différences entre deux implémentations différentes de ces protocoles.While the service is standards-compliant, there can be subtle differences between any two implementations of these protocols. Les informations fournies ici vous seront utiles si vous choisissez d’écrire votre code en envoyant et en traitant directement des requêtes HTTP ou si vous utilisez une bibliothèque open source tierce, plutôt qu’en utilisant l’une de nos bibliothèques open source.The information here will be useful if you choose to write your code by directly sending and handling HTTP requests or use a third-party open-source library, rather than using one of our open-source libraries.

Concepts de baseThe basics

Dans presque tous les flux OAuth 2.0 et OpenID Connect, quatre parties sont concernées par l’échange :In nearly all OAuth 2.0 and OpenID Connect flows, there are four parties involved in the exchange:

Diagramme montrant les rôles OAuth 2.0

  • Le Serveur d’autorisation est le point de terminaison de la plateforme d’identités Microsoft qui est chargé de garantir l’identité de l’utilisateur, l’octroi et la révocation de l’accès aux ressources ainsi que l’émission de jetons.The Authorization Server is the Microsoft identity platform endpoint and responsible for ensuring the user's identity, granting and revoking access to resources, and issuing tokens. Le serveur d’autorisation est également connu sous le nom du fournisseur d’identité. Il traite de manière sécurisée les informations de l’utilisateur, leur accès et les relations de confiance entre les parties d’un flux.The authorization server also known as the identity provider - it securely handles anything to do with the user's information, their access, and the trust relationships between parties in a flow.
  • Le Propriétaire de la ressource est généralement l’utilisateur final.The Resource Owner is typically the end user. Il s’agit de la partie qui détient les données et qui a le pouvoir d’autoriser les clients à accéder à ces données ou ressources.It's the party that owns the data and has the power to allow clients to access that data or resource.
  • Le Client OAuth est votre application, identifiée par son ID d’application.The OAuth Client is your app, identified by its application ID. Le client OAuth, qui est en général la partie avec laquelle l’utilisateur final interagit, demande des jetons provenant du serveur d’autorisation.The OAuth client is usually the party that the end user interacts with, and it requests tokens from the authorization server. Le client doit se voir octroyer une autorisation d’accès à la ressource par le propriétaire de cette dernière.The client must be granted permission to access the resource by the resource owner.
  • Le serveur de ressources héberge la ressource ou les données.The Resource Server is where the resource or data resides. Il approuve le serveur d’autorisation pour authentifier et autoriser de manière sûre le client OAuth et utilise les jetons d’accès du porteur pour garantir l’octroi de l’accès à une ressource.It trusts the Authorization Server to securely authenticate and authorize the OAuth Client, and uses Bearer access tokens to ensure that access to a resource can be granted.

Inscription d'applicationApp registration

Chaque application souhaitant accepter les comptes personnels ainsi que les comptes professionnels ou scolaires doit être inscrite via l’expérience Inscriptions d’applications dans le portail Azure avant de pouvoir connecter ces utilisateurs à l’aide d’OAuth 2.0 ou d’OpenID Connect.Every app that wants to accept both personal and work or school accounts must be registered through the App registrations experience in the Azure portal before it can sign these users in using OAuth 2.0 or OpenID Connect. Le processus d’inscription des applications collecte quelques valeurs et les affecte à votre application :The app registration process will collect and assign a few values to your app:

  • un ID d’application qui identifie de manière unique votre application ;An Application ID that uniquely identifies your app
  • un URI de redirection (facultatif) pouvant être utilisé pour diriger les réponses vers votre application ;A Redirect URI (optional) that can be used to direct responses back to your app
  • quelques valeurs spécifiques au scénario.A few other scenario-specific values.

Pour plus d’informations, découvrez comment inscrire une application.For more details, learn how to register an app.

Points de terminaisonEndpoints

Une fois inscrite, l’application communique avec la plateforme d’identités Microsoft en transmettant les requêtes au point de terminaison :Once registered, the app communicates with Microsoft identity platform by sending requests to the endpoint:

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token

Où le {tenant} peut prendre l’une de quatre valeurs différentes :Where the {tenant} can take one of four different values:

ValeurValue DescriptionDescription
common Permet aux utilisateurs avec des comptes Microsoft personnels et des comptes professionnels/scolaires Azure AD de se connecter à l’application.Allows users with both personal Microsoft accounts and work/school accounts from Azure AD to sign into the application.
organizations Permet uniquement aux utilisateurs avec des comptes professionnels/scolaires Azure AD de se connecter à l’application.Allows only users with work/school accounts from Azure AD to sign into the application.
consumers Permet uniquement aux utilisateurs avec des comptes personnels Microsoft (MSA) de se connecter à l’application.Allows only users with personal Microsoft accounts (MSA) to sign into the application.
8eaef023-2b34-4da1-9baa-8bc8c9d6a490 ou contoso.onmicrosoft.com8eaef023-2b34-4da1-9baa-8bc8c9d6a490 or contoso.onmicrosoft.com Permet uniquement aux utilisateurs avec des comptes professionnels/scolaires d’un client Azure AD spécifique de se connecter à l’application.Allows only users with work/school accounts from a particular Azure AD tenant to sign into the application. Le nom de domaine convivial du client Azure AD ou l’identificateur GUID du client peut être utilisé.Either the friendly domain name of the Azure AD tenant or the tenant's GUID identifier can be used.

Pour savoir comment interagir avec ces points de terminaison, choisissez un type particulier d’application dans la section Protocoles et suivez les liens.To learn how to interact with these endpoints, choose a particular app type in the Protocols section and follow the links for more info.

Conseil

N’importe quelle application inscrite dans Azure AD peut utiliser le point de terminaison de la plateforme d’identités Microsoft, même si elle n’utilise pas de compte personnel pour la connexion.Any app registered in Azure AD can use the Microsoft identity platform endpoint, even if they don't sign in personal accounts. De cette façon, vous pouvez migrer des applications existantes vers la plateforme d’identités Microsoft et MSAL sans recréer votre application.This way, you can migrate existing applications to Microsoft identity platform and MSAL without re-creating your application.

JetonsTokens

OAuth 2.0 et OpenID Connect utilisent massivement les jetons du porteur, généralement représentés par des jetons JWT (JSON Web Tokens).OAuth 2.0 and OpenID Connect make extensive use of bearer tokens, generally represented as JWTs (JSON Web Tokens). Un jeton porteur est un jeton de sécurité léger qui octroie l’accès à une ressource protégée au « porteur ».A bearer token is a lightweight security token that grants the “bearer” access to a protected resource. En ce sens, le « porteur » correspond à toute personne qui obtient une copie du jeton.In this sense, the “bearer” is anyone that gets a copy of the token. Bien qu’une partie doive d’abord s’authentifier auprès de la plateforme d’identités Microsoft pour recevoir le jeton porteur, si les mécanismes nécessaires à la sécurité du jeton lors de la transmission et du stockage ne sont pas en place, il peut être intercepté et utilisé par une partie non autorisée.Though a party must first authenticate with Microsoft identity platform to receive the bearer token, if the required steps are not taken to secure the token in transmission and storage, it can be intercepted and used by an unintended party. Bien que certains jetons de sécurité intègrent un mécanisme de protection contre l’utilisation par des parties non autorisées, les jetons porteurs n’en sont pas dotés et doivent donc être acheminés sur un canal sécurisé, par exemple à l’aide du protocole TLS (HTTPS).While some security tokens have a built-in mechanism for preventing unauthorized parties from using them, bearer tokens do not have this mechanism and must be transported in a secure channel such as transport layer security (HTTPS). Si un jeton porteur est transmis en clair, une partie malveillante peut utiliser une attaque d’intercepteur pour s’approprier le jeton et l’utiliser afin d’accéder sans autorisation à une ressource protégée.If a bearer token is transmitted in the clear, a malicious party can use a man-in-the-middle attack to acquire the token and use it for unauthorized access to a protected resource. Les mêmes principes de sécurité s’appliquent au stockage ou à la mise en cache des jetons porteurs pour une utilisation ultérieure.The same security principles apply when storing or caching bearer tokens for later use. Veillez systématiquement à ce que votre application transmette et stocke les jetons porteurs de manière sécurisée.Always ensure that your app transmits and stores bearer tokens in a secure manner. Pour en savoir plus sur les aspects de sécurité des jetons porteurs, consultez RFC 6750 Section 5.For more security considerations on bearer tokens, see RFC 6750 Section 5.

Il existe principalement 3 types de jeton utilisés dans OAuth 2.0/OIDC :There are primarily 3 types of tokens used in OAuth 2.0 / OIDC:

  • Jetons d’accès - Jetons qu’un serveur de ressources reçoit d’un client. Ils contiennent les autorisations accordées au client.Access tokens - tokens that a resource server receives from a client, containing permissions the client has been granted.
  • Jetons d’ID - Jetons qu’un client reçoit du serveur d’autorisation. Ils sont utilisés pour connecter un utilisateur et obtenir des informations de base à son sujet.ID tokens - tokens that a client receives from the authorization server, used to sign in a user and get basic information about them.
  • Jetons d’actualisation - Utilisés par un client pour obtenir de nouveaux jetons d’accès et jetons d’ID au fil du temps.Refresh tokens - used by a client to get new access and ID tokens over time. Il s’agit de chaînes opaques qui ne peuvent être comprises que par le serveur d’autorisation.These are opaque strings, and are only understandable by the authorization server.

ProtocolesProtocols

Si vous êtes prêt à voir des exemples de requêtes, commencez par consulter l’un des documents de protocole ci-dessous.If you're ready to see some example requests, get started with one of the below protocol documents. Chacun d’eux correspond à un scénario d’authentification particulier.Each one corresponds to a particular authentication scenario. Si vous avez besoin d’aide pour déterminer le flux qui vous convient, consultez les types d’applications que vous pouvez créer avec le point de terminaison de la plateforme d’identité Microsoft.If you need help with determining which is the right flow for you, check out the types of apps you can build with Microsoft identity platform.