OAuth 2.0 et OpenID Connect (OIDC) sur la plateforme d’identités Microsoft

Vous n’avez pas besoin d’apprendre OAuth ou OpenID Connect (OIDC) au niveau du protocole pour utiliser la plateforme d’identités Microsoft. Toutefois, vous rencontrerez ces termes et concepts (ainsi que d’autres) liés au protocole quand vous utiliserez la plateforme d’identité pour ajouter des fonctionnalités d’authentification à vos applications.

Lorsque vous travaillerez avec le portail Azure, notre documentation et nos bibliothèques d’authentification, la connaissance de quelques notions de base comme celles-ci pourra faciliter vos tâches d’intégration et de débogage.

Rôles dans OAuth 2.0

Quatre parties sont généralement impliquées dans un échange d’authentification et d’autorisation OAuth 2.0 et OpenID Connect. Ces échanges sont souvent appelés flux d’authentification ou flux d’auth.

Diagramme montrant les rôles OAuth 2.0

  • Serveur d’autorisation : la plateforme d’identités Microsoft elle-même est le serveur d’autorisation. Également appelé fournisseur d’identités ou IdP, il gère en toute sécurité les informations de l’utilisateur final, son accès et les relations d’approbation entre les parties dans le flux d’authentification. Le serveur d’autorisation émet les jetons de sécurité utilisés par vos applications et API pour accorder, refuser ou révoquer l’accès aux ressources (autorisation) une fois que l’utilisateur s’est connecté (authentifié).

  • Client : le client dans un échange OAuth est l’application qui demande l’accès à une ressource protégée. Le client peut être une application web exécutée sur un serveur, une application web monopage s’exécutant dans le navigateur web d’un utilisateur ou une API web qui appelle une autre API web. Vous verrez souvent le client appelé application cliente, application ou app.

  • Propriétaire de la ressource : le propriétaire de la ressource dans un flux d’authentification est généralement l’utilisateur de l’application ou l'utilisateur final dans la terminologie OAuth. L’utilisateur final « possède » la ressource protégée (ses données). votre application y accède en son nom. Le propriétaire de la ressource peut accorder ou refuser à votre application (le client) l’accès aux ressources dont il est propriétaire. Par exemple, votre application peut appeler l’API d’un système externe pour obtenir l’adresse e-mail d’un utilisateur à partir de son profil sur ce système. Ses données de profil sont une ressource que l’utilisateur final possède sur le système externe, et l’utilisateur final peut donner son consentement ou refuser la demande d’accès à ses données à votre application.

  • Serveur de ressources : le serveur de ressources héberge ou donne accès aux données d’un propriétaire de ressources. Le plus souvent, le serveur de ressources est une API web devant un magasin de données. Le serveur de ressources s’appuie sur le serveur d’autorisation pour effectuer l’authentification et utilise les informations des jetons du porteur émis par le serveur d’autorisation pour accorder ou refuser l’accès aux ressources.

Jetons

Les parties d’un flux d’authentification utilisent des jetons du porteur pour assurer, vérifier et authentifier un principal (utilisateur, hôte ou service) et octroyer ou refuser l’accès aux ressources protégées (autorisation). Les jetons du porteur dans la plateforme d’identités Microsoft sont formatés en tant que jetons web JSON (JWT).

Trois types de jetons du porteur sont utilisés par la plateforme d’identités Microsoft en tant que jetons de sécurité :

  • Jetons d’accès : les jetons d’accès sont émis par le serveur d’autorisation à l’application cliente. Le client transmet les jetons d’accès au serveur de ressources. Les jetons d’accès contiennent les autorisations octroyées par le client au serveur d’autorisation.

  • Jetons d’accès : les jetons d’accès sont émis par le serveur d’autorisation à l’application cliente. Les clients utilisent des jetons d’ID lors de la connexion des utilisateurs et pour obtenir des informations de base à leur sujet.

  • Jetons d’actualisation : le client utilise un jeton d’actualisation, ou RT, pour demander de nouveaux jetons d’accès et d’ID au serveur d’autorisation. Votre code doit traiter les jetons d’actualisation et leur contenu de chaîne comme opaque, car ils sont destinés à être utilisés uniquement par le serveur d’autorisation.

Inscription d'application

Votre application cliente a besoin d’un moyen d’approuver les jetons de sécurité qui lui sont émis par la plateforme d’identités Microsoft. La première étape pour établir cette approbation consiste à inscrire votre application auprès de la plateforme d’identité dans Azure Active Directory (Azure AD).

Lorsque vous inscrivez votre application dans Azure AD, la plateforme d’identités Microsoft lui attribue automatiquement des valeurs, tandis que d’autres sont attribuées en fonction du type de l’application.

Deux des paramètres d’inscription d’application les plus couramment référencés sont :

  • ID d’application (client) : également appelé ID d’application et ID client, cette valeur est attribuée à votre application par la plateforme d’identités Microsoft. L’ID client identifie de manière unique votre application dans la plateforme d’identité et est inclus dans les jetons de sécurité que la plateforme émet.
  • URI de redirection : le serveur d’autorisation utilise un URI de redirection pour diriger l'agent utilisateur du propriétaire de la ressource (navigateur web, application mobile) vers une autre destination après avoir terminé son interaction. Par exemple, une fois que l’utilisateur final s’est authentifié auprès du serveur d’autorisation. Tous les types de client utilisent des URI de redirection.

L’inscription de votre application contient également des informations sur les points de terminaison d’authentification et d’autorisation que vous allez utiliser dans votre code pour obtenir des jetons d’ID et d’accès.

Points de terminaison

La plateforme d’identités Microsoft offre des services d’authentification et d’autorisation à l’aide d’implémentations conformes aux normes d’OAuth 2.0 et OpenID Connect (OIDC) 1.0. Les serveurs d’autorisation conformes aux normes tels que la plateforme d’identités Microsoft fournissent un ensemble de points de terminaison HTTP utilisables par les parties dans un flux d’authentification pour exécuter le flux.

Les URI de point de terminaison de votre application sont générés pour vous lorsque vous inscrivez ou configurez votre application dans Azure AD. Les points de terminaison que vous utilisez dans le code de votre application dépendent du type de l’application et des identités (types de comptes) qu’elle doit prendre en charge.

Deux points de terminaison couramment utilisés sont le point de terminaison d’autorisation et le point de terminaison de jeton. Voici des exemples de points de terminaison authorize et token :

# Authorization endpoint - used by client to obtain authorization from the resource owner.
https://login.microsoftonline.com/<issuer>/oauth2/v2.0/authorize
# Token endpoint - used by client to exchange an authorization grant or refresh token for an access token.
https://login.microsoftonline.com/<issuer>/oauth2/v2.0/token

# NOTE: These are examples. Endpoint URI format may vary based on application type,
#       sign-in audience, and Azure cloud instance (global or national cloud).

#       The {issuer} value in the path of the request can be used to control who can sign into the application. 
#       The allowed values are **common** for both Microsoft accounts and work or school accounts, 
#       **organizations** for work or school accounts only, **consumers** for Microsoft accounts only, 
#       and **tenant identifiers** such as the tenant ID or domain name.

Pour rechercher les points de terminaison d’une application que vous avez inscrite, dans le portail Azure accédez à :

Azure Active Directory>Inscriptions d’applications><VOTRE-APPLICATION>>Points de terminaison

Étapes suivantes

Ensuite, découvrez les flux d’authentification OAuth 2.0 utilisés par chaque type d’application et les bibliothèques que vous pouvez utiliser dans vos applications pour les exécuter :

Nous vous déconseillons vivement de créer votre propre bibliothèque ou vos propres appels HTTP bruts pour exécuter des flux d’authentification. Une bibliothèque d’authentification Microsoft est plus sûre et plus simple d’utilisation. Toutefois, si votre scénario vous empêche d’utiliser nos bibliothèques, ou si vous souhaitez en savoir plus sur l’implémentation de la plateforme d’identités, nous avons une référence de protocole :