Tolka en Microsoft Graph begäran

Slutförd

Den här genomgången förklarar hur ett Java webbprogram kan läsa den inloggade användarens profil från Microsoft Graph. Begäran, Java fragmentet och svaret nedan är illustrativa exempel med förklaringar, inte ett labb eller ett krav på att skicka en riktig API-begäran.

Referensexemplet för servleten använder delegering User.Read. Dess konfigurationsegenskap aad.scopes tillhandahåller det värdet till Config.SCOPES, som autentiseringskoden begär under inloggningen.

Appregistreringens API-behörighetslista beskriver konfigurerade behörigheter. Följande skärmbild är ett exempel på den vyn, inte en instruktion för att ändra en registrering.

Skärmbild av sidan API-behörigheter för en programregistrering.

Tre fakta förklarar auktoriseringskontexten:

  • Kodbegäranden som delegerats User.Read för Microsoft Graph.
  • Medgivande kan komma från användaren eller en auktoriserad administratör, beroende på klientorganisationsprincip och befintliga bidrag.
  • Att lägga till en behörighet till registreringen beviljar inte självt medgivande eller ändrar kodens begärda omfång.

Exemplet begär den här behörigheten under inloggningen, så det finns inget separat antagande att varje Graph-begäran visar en medgivandeprompt.

Läs HTTP-begäran

Följande HTTP-exempel visar de viktigaste delarna i en profilbegäran. <graph-access-token> är en förklarande platshållare, inte en token för att hämta eller klistra in i ett verktyg.

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

Begäran använder HTTPS för att nå https://graph.microsoft.com/v1.0/me. /me identifierar den inloggade användaren i en delegerad kontext. Authorization rubriken innehåller en åtkomsttoken avsedd för Microsoft Graph; den innehåller inte programmets ID-token, någon auktoriseringskod eller någon klienthemlighet.

User.Read är tillräckligt för den illustrerade åtgärden att läsa den inloggade användarens profil. Den tillåter inte godtycklig åtkomst till andra användares information. API-referensen för Hämta en användare beskriver slutpunkten och behörigheterna.

Läs motsvarande Java-SDK

Det historiska kodexemplet CallGraphServlet hanterar sin egen /call_graph rutt och använder Microsoft Graph SDK:t för att skicka API-begäran. Följande fragment visar att anropet efter att token har hämtats har lyckats.

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

GraphHelper är en hjälp som definieras av exemplet, inte ett inbyggt MSAL4J-API. Den skapar en GraphServiceClient vars autentiseringsprovider tillhandahåller den inloggade användarens Graph-åtkomsttoken från exemplets autentiserade kontext. contextAdapter ansluter den aktuella begäran till programkontexten.

I den här SDK-versionen me() väljer du slutpunkten för inloggade användare, buildRequest() skapar begäran och get() skickar den och deserialiserar svaret till en Microsoft Graph User modell. Fragmentet utelämnar den omgivande servleten, importer, sessionshantering och felbearbetning. Det är inte ett komplett program.

Note

Det här fragmentet återspeglar det historiska exemplets Microsoft Graph SDK för Java 5.5.0-syntax. V6 SDK ändrar begärandemönstret, klientkonstruktion, autentiseringsintegrering och modellåtkomst. Uppgraderingsguiden för Microsoft Graph Java SDK v6 förklarar dessa skillnader. Ett v6-endast begärandeuttryck är inte kompatibelt med exemplets v5-beroende och hjälpkod.

Tolka ett illustrativt svar

Ett förkortat exempelsvar kan innehålla följande profilfält. Värdena är fiktiva och är inte utdata som eleven behöver återskapa.

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

Programmet kan använda dessa fält för att presentera profilinformation. Faktiska värden beror på användarens katalogprofil och fält kan vara frånvarande eller null. Ett profilfält är inte ett bevis på anställning och inte en ersättning för applikationens auktoriseringspolicy.

Den övergripande ansvarsfördelningen är viktig: Microsoft Entra ID utfärdar en token enligt tillämpliga behörighets- och medgivanderegler hämtar MSAL4J den token och Graph SDK eller en HTTP-klient använder den för att begära data. Att bara skapa en Graph-klient ger inte åtkomst.