Microsoft Graph : principes de base de l’authentification et de l’autorisation
Pour appeler Microsoft Graph, votre application doit se procurer un jeton d’accès auprès de la plateforme d’identités Microsoft. Le jeton d’accès contient des informations sur votre application et les autorisations dont elle dispose pour accéder aux ressources et aux API disponibles via Microsoft Graph. Pour obtenir un jeton d’accès, votre application doit être inscrite sur la plateforme d’identités Microsoft et être autorisée par un utilisateur ou un administrateur à accéder aux ressources Microsoft Graph dont elle a besoin.
Cet article fournit une vue d’ensemble de la plateforme d’identités Microsoft, des jetons d’accès et de la façon dont votre application peut obtenir des jetons d’accès. Pour plus d’informations sur la plateforme d’identités Microsoft, consultez Qu’est-ce que la plateforme d’identités Microsoft ?. Si vous savez comment intégrer une application à la Plateforme d’identités Microsoft pour développeurs pour obtenir des jetons, consultez les informations et les exemples spécifiques à Microsoft Graph dans la section Étapes suivantes .
Inscrire votre application sur la Plateforme d’identités Microsoft
Pour pouvoir se procurer un jeton auprès de la Plateforme d’identités Microsoft, votre application doit d’abord être inscrite sur le portail Azure. L’inscription intègre votre application à la Plateforme d’identités Microsoft et établit les informations qu’elle utilise pour obtenir des jetons, notamment :
- ID de l’application : identifiant unique attribué par la Plateforme d’identités Microsoft.
- URI/URL de redirection : un ou plusieurs points de terminaison sur lesquels votre application recevra les réponses de la Plateforme d’identités Microsoft. (Pour les applications natives et mobiles, il s’agit l’URI est attribué par la Plateforme d’identités Microsoft.)
- Clé secrète client : mot de passe ou paire clé publique/clé privée que votre application utilise pour l’authentification auprès de la Plateforme d’identités Microsoft pour développeurs. (Non nécessaire pour les applications natives ou mobiles).
Les propriétés configurées lors de l’inscription sont utilisées dans la demande. Par exemple, dans la demande de jeton suivante : client_id est l’ID de l’application, redirect_uri est l’un des URI de redirection enregistrés par votre application et client_secret est la clé secrète client.
// Line breaks for legibility only
POST /common/oauth2/v2.0/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&scope=user.read%20mail.read
&code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&grant_type=authorization_code
&client_secret=JqQX2PNo9bpM0uEihUPzyrh // NOTE: Only required for web apps
Autorisations de Microsoft Graph
Microsoft Graph présente des autorisations précises qui contrôlent l’accès des applications aux ressources, comme les utilisateurs, les groupes et les courriers. En tant que développeur, vous décidez des autorisations Microsoft Graph à demander pour votre application. Lorsqu’un utilisateur se connecte à votre application, celui-ci (ou un administrateur, selon le cas) a la possibilité de consentir à ces autorisations. Si l’utilisateur y consent, votre application a accès aux ressources et aux API qu’elle a demandées. Pour les applications auxquelles les utilisateurs n’ont pas à se connecter, les autorisations peuvent être préalablement consenties par un administrateur lorsque l’application est installée.
Meilleures pratiques de demande d’autorisations
Notes
Il est préférable de demander les autorisations les moins privilégiés dont votre application a besoin pour accéder aux données et fonctionner correctement. La demande d’autorisations autres que les privilèges nécessaires est une pratique de sécurité médiocre, qui peut empêcher les utilisateurs de donner leur consentement et d’affecter l’utilisation de votre application.
Autorisation déléguée et autorisation d’application
Microsoft Graph comprend deux types d’autorisations.
Les autorisations déléguées sont utilisées par les applications qui ont un utilisateur connecté. Pour ces applications, l’utilisateur ou un administrateur consent aux autorisations demandées par l’application, et l’application peut agir en tant qu’utilisateur connecté lors des appels à Microsoft Graph. Certaines autorisations déléguées peuvent être consenties par des utilisateurs non administrateurs, mais certaines autorisations avec des privilèges plus élevés nécessitent le consentement de l’administrateur.
Les autorisations de l’application sont utilisées par les applications qui s’exécutent sans utilisateur connecté. Par exemple, les applications qui s’exécutent en tant que démons ou services d’arrière-plan. Les autorisations de l’application peuvent uniquement être consenties par un administrateur.
Les autorisations effectives sont les autorisations que votre application aura lorsqu’elle effectue des requêtes à Microsoft Graph. Les autorisations effectives sont déterminées par une combinaison des autorisations Microsoft Graph que vous avez accordées à l’application, ainsi que des privilèges et de l’utilisateur ou de l’application appelante. Au sein des organisations, la stratégie ou l’appartenance à un ou plusieurs rôles déterminent les privilèges de l’utilisateur connecté ou d’une application. Il est important de comprendre la différence entre une autorisation déléguée et une autorisation de l’application dont bénéficie votre application, ainsi que ses autorisations effectives lorsqu’elle appelle Microsoft Graph.
Autorisations effectives dans les scénarios d’autorisation déléguée ou d’autorisation de l’application uniquement
Pour les autorisations déléguées, les autorisations effectives de votre application correspondent à l’intersection la moins privilégiée des autorisations déléguées accordées à l’application (par consentement) et des privilèges de l’utilisateur actuellement connecté. Votre application ne peut jamais avoir plus de privilèges que l’utilisateur connecté.
Supposons que votre application dispose de l’autorisation déléguée User.ReadWrite.All et appelle l’API Update user. Cette autorisation accorde nominalement à votre application l’autorisation de lire et de mettre à jour le profil de chacun des utilisateurs d’une organisation. Toutefois, en raison des autorisations effectives, les restrictions suivantes s’appliquent aux privilèges de l’utilisateur connecté :
- Si l’utilisateur connecté est un administrateur global, votre application peut mettre à jour le profil de chaque utilisateur de l’organisation.
- Si l’utilisateur connecté n’a pas un rôle d’administrateur, votre application peut mettre à jour uniquement le profil de l’utilisateur connecté. Il ne met pas à jour les profils des autres utilisateurs de l’organisation, car l’utilisateur connecté ne dispose pas de ces privilèges.
Pour les autorisations d’application, les autorisations effectives de votre application correspondent au niveau de privilèges total impliqué par l’autorisation. Par exemple, une application qui possède l’autorisation d’application User.ReadWrite.All peut mettre à jour le profil de chaque utilisateur de l’organisation.
Comparaison de l’autorisation déléguée et de l’autorisation d’application
Autorisations déléguées | Autorisations de l’application | |
---|---|---|
Scénarios de type d’application | Application Web/ Mobile/ mono-page (SPA) | Web / Daemon |
Contexte d’accès | Obtenir l’accès au nom d’un utilisateur | Obtenir l’accès en tant que service |
Qui peut consentir | Seul l’administrateur peut donner son consentement | |
Autres noms | ||
Résultat du consentement | oauth2PermissionGrants | appRoleAssignments |
Pour obtenir la liste complète des autorisations déléguées et des autorisations d’application de Microsoft Graph, ainsi que des autorisations nécessitant le consentement de l’administrateur, consultez la rubrique Référence des autorisations.
Jetons d’accès
Les jetons d’accès qui sont émis par la Plateforme d’identités Microsoft contiennent des informations (revendications) que les API web sécurisées par la Plateforme d’identités Microsoft, comme Microsoft Graph, utilisent pour valider l’appelant et s’assurer que celui-ci dispose des autorisations nécessaires pour effectuer l’opération demandée. L’appelant doit traiter les jetons d’accès comme des chaînes opaques, car le contenu du jeton est destiné à l’API uniquement. Lorsque vous appelez Microsoft Graph, protégez toujours les jetons d’accès en les transmettant sur un canal sécurisé qui utilise le protocole TLS (Transport Layer Security).
L’exemple suivant montre un jeton d’accès à la Plateforme d’identités Microsoft pour développeur :
EwAoA8l6BAAU7p9QDpi/D7xJLwsTgCg3TskyTaQAAXu71AU9f4aS4rOK5xoO/SU5HZKSXtCsDe0Pj7uSc5Ug008qTI+a9M1tBeKoTs7tHzhJNSKgk7pm5e8d3oGWXX5shyOG3cKSqgfwuNDnmmPDNDivwmi9kmKqWIC9OQRf8InpYXH7NdUYNwN+jljffvNTewdZz42VPrvqoMH7hSxiG7A1h8leOv4F3Ek/XbrnbEErTDLWrV6Lc3JHQMs0bYUyTBg5dThwCiuZ1evaT6BlMMLuSCVxdBGzXTBcvGwihFzZbyNoX+52DS5x+RbIEvd6KWOpQ6Ni+1GAawHDdNUiQTQFXRxLSHfc9fh7hE4qcD7PqHGsykYj7A0XqHCjbKKgWSkcAg==
Pour appeler Microsoft Graph, vous devez joindre le jeton d’accès sous la forme d’un jeton du porteur à l’en-tête d’autorisation dans une requête HTTP. Par exemple, l’appel suivant renvoie les informations de profil de l’utilisateur connecté (le jeton d’accès a été tronqué pour une meilleure lisibilité) :
GET https://graph.microsoft.com/v1.0/me/ HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer EwAoA8l6BAAU ... 7PqHGsykYj7A0XqHCjbKKgWSkcAg==
Les jetons d’accès sont un type de jetons de sécurité fournis par la plateforme d’identités Microsoft. Ils ont une courte durée de vie mais une durée de vie par défaut variable. Pour plus d’informations sur les jetons d’accès et la façon dont les clients utilisent les jetons d’accès, consultez Jetons d’accès.
Obtenir un jeton d’accès
Comme la plupart des développeurs, vous utiliserez probablement des bibliothèques d’authentification pour gérer vos interactions de jetons avec la Plateforme d’identités Microsoft. Les bibliothèques d’authentification extraient du développeur de nombreuses informations relatives au protocole, telles que la validation, la gestion des cookies, la mise en cache des jetons et le maintien de connexions sécurisées, et vous permettent de concentrer votre développement sur les fonctionnalités de votre application. Microsoft publie des bibliothèques clientes et des intergiciels de serveur à code source ouvert.
Pour le point de terminaison de la Plateforme d’identités Microsoft :
- Les bibliothèques clientes MSAL sont disponibles pour .NET, JavaScript, Android et Objective-C. Toutes les plates-formes sont présentées en mode d’aperçu pris en charge par la production et, dans le cas de modifications de dernière minute, Microsoft garantit un chemin d’accès pour la mise à niveau.
- Les intergiciels serveur de Microsoft sont disponibles pour .NET Core et ASP.NET (OWIN OpenID Connect et OAuth), ainsi que pour Node.js (Plateforme d’identités Microsoft, Passport.js).
- La Plateforme d’identités Microsoft est compatible avec de nombreuses bibliothèques d’authentification tierces.
Pour obtenir la liste complète des bibliothèques clientes Microsoft, des intergiciels serveur Microsoft et des bibliothèques tierces compatibles, consultez Bibliothèques d’authentification de la Plateforme d’identités Microsoft.
Vous n’avez pas besoin d’utiliser une bibliothèque d’authentification pour obtenir un jeton d’accès. Pour en savoir plus sur l’utilisation directe des points de terminaison de la Plateforme d’identités Microsoft sans l’aide d’une bibliothèque d’authentification, consultez l’article Authentification sur la Plateforme d’identités Microsoft.
Étapes suivantes
- Pour commencer à utiliser l’authentification et autoriser votre application à accéder aux ressources, consultez Prise en main : choisir un scénario d’application.
- Pour consulter les autorisations que vous pouvez utiliser avec Microsoft Graph, reportez-vous à la rubrique Autorisations.
- Si vous êtes un fournisseur de solutions cloud Microsoft intéressé par l’accès à des données client gérées par des partenaires via Microsoft Graph, reportez-vous à la rubrique Gérer l’accès à l’application (CSP).
Si vous êtes prêt à vous immerger dans le code, vous pouvez utiliser les ressources suivantes pour vous aider à implémenter l’authentification et l’autorisation avec la Plateforme d’identités Microsoft dans votre application.
Exemples et formation Microsoft Graph
Pour vous permettre de démarrer facilement, nous avons créé une série de modules de formation et d’autres ressources qui expliquent comment s’authentifier et utiliser l’API sur différentes plateformes.
- Utilisez la page Mise en route pour accéder aux bibliothèques, aux exemples, au contenu de formation et autres ressources relatives à votre plateforme favorite.
- Pour démarrer rapidement à l’aide d’un exemple préconfiguré pour votre plateforme, consultez Démarrage rapide de Microsoft Graph.
- Consultez nos exemples Microsoft Graph sur GitHub.
Exemples et documentation relatifs à la Plateforme d’identités Microsoft
La documentation relative à la Plateforme d’identités Microsoft contient des articles et des exemples qui se concentrent spécifiquement sur l’authentification et l’autorisation avec la Plateforme d’identités Microsoft.
- Consultez la documentation sur les points de terminaison de la Plateforme d’identités Microsoft pour découvrir comment inscrire une application auprès de la Plateforme d’identités Microsoft.
- Pour commencer, consultez la documentation relative aux points de terminaison de la Plateforme d’identités Microsoft. Cet article contient des liens vers des présentations, de la documentation relative aux protocoles et des articles de prise en main pour différentes plates-formes qui sont toutes classées selon le type d’application que vous développez.
- Pour obtenir des exemples d’utilisation de la plateforme d’identités Microsoft pour sécuriser différents types d’application, consultez l’article Exemples de code de la plateforme d’identités Microsoft (point de terminaison v2.0).
- Pour obtenir des exemples répertoriés par bibliothèque d’authentification client ou serveur, consultez Bibliothèques d’authentification de la Plateforme d’identités Microsoft.
- Parcourez les exemples de la Plateforme d’identités Microsoft par plateforme dans la galerie Azure Code.
Voir aussi
Commentaires
Envoyer et afficher des commentaires pour