Interpréter une demande de Microsoft Graph

Terminée

Cette procédure pas à pas explique comment une application web Java peut lire le profil de l'utilisateur connecté à partir de Microsoft Graph. La requête, Java fragment et la réponse ci-dessous sont des exemples illustrant des explications, et non un laboratoire ou une exigence pour envoyer une demande d’API réelle.

L’exemple de servlet de référence utilise le User.Read délégué. Sa aad.scopes propriété de configuration fournit cette valeur à Config.SCOPESlaquelle le code d’authentification demande lors de la connexion.

La liste des autorisations d’API de l’inscription d’application décrit les autorisations configurées. La capture d’écran suivante est un exemple de cette vue, et non une instruction pour modifier une inscription.

Capture d’écran de la page Autorisations d’API pour une inscription d’application.

Trois faits expliquent le contexte d’autorisation :

  • Le code demande des autorisations déléguées User.Read pour Microsoft Graph.
  • Le consentement peut provenir de l’utilisateur ou d’un administrateur autorisé, en fonction de la stratégie de locataire et des subventions existantes.
  • L’ajout d’une autorisation à l’inscription n’accorde pas lui-même son consentement ni modifie les étendues demandées par le code.

L’exemple demande cette autorisation lors de la connexion. Il n’existe donc pas d’hypothèse distincte selon laquelle chaque demande Graph affiche une invite de consentement.

Lire la requête HTTP

L’exemple HTTP suivant montre les parties essentielles d’une demande de profil. <graph-access-token> est un espace réservé explicatif, et non un jeton à obtenir ou coller dans un outil.

GET /v1.0/me HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer <graph-access-token>

La requête utilise HTTPS pour atteindre https://graph.microsoft.com/v1.0/me. /me identifie l’utilisateur connecté dans un contexte délégué. L’en-tête Authorization contient un jeton d’accès destiné à Microsoft Graph ; il ne contient pas le jeton d’identification de l’application, ni un code d’autorisation, ni un secret client.

User.Read est suffisant pour l’opération illustrée de lecture du profil de l’utilisateur connecté. Il n’autorise pas l’accès arbitraire aux informations d’autres utilisateurs. La référence de l’API « Get a user » décrit le point de terminaison et les autorisations.

Lire l’équivalent du KIT de développement logiciel (SDK) Java

L'CallGraphServletexemple historique gère son propre /call_graph itinéraire et utilise le sdk Microsoft Graph pour effectuer la requête d'API. Le fragment suivant illustre cet appel une fois l’acquisition du jeton réussie.

User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();

GraphHelper est un utilitaire défini dans l’exemple, et non une API intégrée à MSAL4J. Il crée un GraphServiceClient dont le fournisseur d’authentification fournit le jeton d’accès Graph de l’utilisateur connecté depuis le contexte authentifié de l’exemple. contextAdapter connecte la requête actuelle à ce contexte d’application.

Dans cette version du Kit de développement logiciel (SDK), me() sélectionne le point de terminaison connecté à l’utilisateur, buildRequest() crée la requête et get() l’envoie et désérialise la réponse dans un modèle Microsoft GraphUser. Le fragment omet le servlet, les importations, la gestion des sessions et le traitement des erreurs environnants ; il n’est pas une application complète.

Note

Ce fragment reflète la syntaxe du SDK Microsoft Graph pour Java 5.5.0 de l’exemple historique. Le Kit de développement logiciel (SDK) v6 modifie le modèle de requête, la construction du client, l’intégration d’authentification et l’accès au modèle. Le guide de mise à niveau Microsoft Graph Java SDK v6 explique ces différences. Une expression de requête v6 uniquement n’est pas compatible avec la dépendance v5 et le code d’assistance de l’exemple.

Interpréter une réponse à titre d’exemple

Un exemple de réponse raccourci peut contenir les champs de profil suivants. Les valeurs sont fictives et ne sont pas sorties que l’apprenant doit reproduire.

{
  "displayName": "Avery Rivera",
  "jobTitle": "Service specialist",
  "mail": "avery@example.com"
}

L’application peut utiliser ces champs pour présenter des informations de profil. Les valeurs réelles dépendent du profil d’annuaire de l’utilisateur, et les champs peuvent être absents ou null. Un champ de profil ne constitue pas une preuve d’emploi et ne remplace pas la stratégie d’autorisation de l’application.

La division globale des responsabilités est importante : Microsoft Entra ID émet un jeton sous les règles d’autorisation et de consentement applicables, MSAL4J acquiert ce jeton, et le SDK Graph ou un client HTTP l’utilise pour demander des données. Le simple fait de créer un client Graph ne confère pas d’accès.