Comprendre les autorisations et le consentement dans Microsoft Graph
Pour développer une application client qui récupère les données Microsoft 365, vous devez comprendre le fonctionnement des autorisations et du consentement dans Microsoft Graph. Vous voulez faire les bons choix lorsqu’il s’agit de savoir à quelles données votre application peut et ne peut pas accéder. Par exemple, si vous souhaitez afficher les prochaines réunions d’un commercial connecté, il faut que votre application soit autorisée à accéder aux données de son calendrier depuis Microsoft 365.
Les applications demandent l’autorisation d’accéder à des ressources Microsoft 365 spécifiques via Microsoft Graph. Ces demandes peuvent être faites en amont (lorsque l’application est enregistrée) ou de manière dynamique (lorsque l’application est en cours d’exécution). Lorsqu’une application demande une autorisation, un utilisateur ou un administrateur doit consentir à cette autorisation avant que Microsoft Graph n’autorise les demandes.
Vous pouvez comprendre trois concepts principaux lorsque votre application doit interagir avec Microsoft Graph :
- Autorisations ou étendues Microsoft Graph
- Types d’autorisation
- Jetons d’accès
Autorisations ou étendues Microsoft Graph
Les autorisations Microsoft Graph contiennent des étendues qui contrôlent l’accès de votre application à des ressources spécifiques, comme les utilisateurs, le courrier et les fichiers. Les étendues contrôlent également les opérations qui peuvent être effectuées sur ces ressources. L’exemple de modèle suivant définit une autorisation pour une opération Microsoft Graph pour une ressource :
Resource-name.operation.constraint
Par exemple, User.Read.All octroie à une application l’autorisation de lire le profil de tous les utilisateurs dans un annuaire. Pour lire le profil d’un utilisateur connecté, l’autorisation requise est User.Read.
Types d’autorisation
Il existe deux types d’autorisations dans l’ID Microsoft Entra :
L’autorisation déléguée est utilisée lorsque votre application passe un appel Microsoft Graph au nom de l’utilisateur. L’utilisateur peut consentir à certaines étendues d’autorisation, comme User.Read. Mais certaines étendues d’autorisation sont de privilège élevé et nécessitent le consentement d’un administrateur. Un exemple d’étendue d’autorisation de privilège élevé est Channel.Delete.All, qui supprime les canaux de n’importe quelle équipe au nom de l’utilisateur connecté.
L’exemple le plus simple d’une étendue d’autorisation déléguée est User.Read, qui est nécessaire pour appeler le point de terminaison
/me
. Dans Microsoft Graph, tous les appels d’API avec/me
utilisent le contexte de l’utilisateur actuellement connecté.L’Autorisation d’application ne nécessite pas la présence d’un utilisateur connecté à l’application. Elle est souvent utilisée lorsqu’un utilisateur n’est pas présent (par exemple, dans un processus en arrière-plan) ou pour élever le niveau des autorisations. Un administrateur consent à l’autorisation à l’avance.
Un exemple d’étendue d’autorisation d’application est Calendars.ReadWrite, qui permet à l’application de créer, lire, mettre à jour et supprimer des événements de tous les calendriers sans utilisateur auquel un utilisateur s’est inscrit. Vous ne pouvez pas utiliser l’API
/me
pour une étendue d’autorisation d’application, car aucun utilisateur ne s’est connecté pour extraire ces informations.
Jetons d’accès
Une fois que votre application a demandé l’autorisation et qu’un utilisateur ou un administrateur a donné l’autorisation, l’application peut obtenir un jeton d’accès à partir de la plateforme d’identités Microsoft. Vous pouvez considérer le jeton d’accès comme un ticket de cinéma que vous donnez à un gardien pour prouver que vous avez payé pour voir le film. Votre application donne un jeton d’accès à Microsoft Graph pour prouver qu’elle est autorisée à accéder aux données Microsoft 365.
Microsoft Graph requiert un jeton d’accès valide dans l’en-tête HTTP de chaque demande. Elle est transmise dans l’en-tête Autorisation de chaque demande HTTP avec le mot « Porteur » et un espace avant elle. Comme pour un ticket de cinéma, le porteur peut utiliser le jeton d’accès. Autrement dit, quiconque possède le ticket peut entrer sans prouver son identité. Pour cette raison, Microsoft Graph nécessite le chiffrement HTTPS sur toutes les demandes. Et comme pour les tickets de cinéma, les jetons d’accès ne sont valables que pendant une courte période (en général, une heure).
Voici un exemple d’en-tête d’autorisation pour une demande Microsoft Graph :
GET https://graph.microsoft.com/v1.0/me/ HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer EwAoA8l6BAAU ... 7PqHGsykYj7A0XqHCjbKKgWSkcAg==