Interpretowanie żądania Microsoft Graph
W tym przewodniku wyjaśniono, jak aplikacja internetowa Java może odczytywać profil zalogowanego użytkownika z Microsoft Graph. Poniższe żądanie, fragment kodu w języku Java i odpowiedź mają charakter poglądowy i zawierają wyjaśnienia; nie są ćwiczeniem laboratoryjnym ani wymogiem wysłania rzeczywistego żądania API.
Powiązanie konfiguracji, zakresów i zgody
Przykładowy serwlet referencyjny używa delegowania User.Read. Jego aad.scopes właściwość konfiguracji dostarcza tej wartości do Config.SCOPES, której kod uwierzytelniania żąda podczas logowania.
Lista uprawnień interfejsu API rejestracji aplikacji zawiera opis skonfigurowanych uprawnień. Poniższy zrzut ekranu to przykład tego widoku, a nie instrukcja zmiany rejestracji.
Trzy fakty wyjaśniają kontekst autoryzacji:
- Kod żąda uprawnień delegowanych
User.Readdla usługi Microsoft Graph. - Zgoda może pochodzić od użytkownika lub autoryzowanego administratora, w zależności od zasad dzierżawy i istniejących dotacji.
- Dodanie uprawnienia do rejestracji nie daje zgody ani nie zmienia żądanych zakresów kodu.
Przykład żąda tego uprawnienia podczas logowania, więc nie ma oddzielnego założenia, że każde żądanie programu Graph wyświetla monit o wyrażenie zgody.
Odczytywanie żądania HTTP
Poniższy przykład HTTP przedstawia podstawowe części żądania profilu.
<graph-access-token> jest objaśniającym symbolem zastępczym, a nie tokenem do uzyskania lub wklejenia do narzędzia.
GET /v1.0/me HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer <graph-access-token>
Żądanie używa protokołu HTTPS do nawiązania połączenia z usługą https://graph.microsoft.com/v1.0/me.
/me identyfikuje zalogowanego użytkownika w kontekście delegowanym. Nagłówek Authorization zawiera token dostępu przeznaczony do usługi Microsoft Graph; nie zawiera tokenu tożsamości aplikacji, kodu autoryzacyjnego ani klucza tajnego klienta.
User.Read jest wystarczająca do zilustrowanej operacji odczytywania profilu zalogowanego użytkownika. Nie autoryzuje on dowolnego dostępu do informacji innych użytkowników. W dokumentacji uzyskiwania interfejsu API użytkownika opisano punkt końcowy i uprawnienia.
Zapoznaj się z odpowiednikiem w pakiecie Java SDK
Historyczna przykładowa aplikacja CallGraphServlet obsługuje własną trasę /call_graph i używa zestawu SDK Microsoft Graph do wysłania żądania do interfejsu API. Poniższy fragment pokazuje, że wywołanie wykonane po uzyskaniu tokenu zakończyło się powodzeniem.
User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();
GraphHelper jest pomocnikiem zdefiniowanym w przykładzie, a nie wbudowanym interfejsem API biblioteki MSAL4J. Tworzy element GraphServiceClient, którego dostawca uwierzytelniania dostarcza token dostępu usługi Graph zalogowanego użytkownika z uwierzytelnionego kontekstu przykładu.
contextAdapter łączy bieżące żądanie z tym kontekstem aplikacji.
W tej wersji me() zestawu SDK wybiera punkt końcowy zalogowanego użytkownika, buildRequest() tworzy żądanie i wysyła je i get() deserializuje odpowiedź do modelu Microsoft GraphUser. Fragment pomija otaczający serwlet, import, obsługę sesji i przetwarzanie błędów; nie jest to kompletna aplikacja.
Note
Ten fragment odzwierciedla składnię zestawu SDK Microsoft Graph dla języka Java 5.5.0 z historycznego przykładu. Zestaw SDK w wersji 6 zmienia wzorzec żądania, konstrukcję klienta, integrację uwierzytelniania i dostęp do modelu. Przewodnik uaktualniania zestawu MICROSOFT GRAPH JAVA SDK w wersji 6 wyjaśnia te różnice. Wyrażenie żądania przeznaczone wyłącznie dla v6 nie jest zgodne z zależnością przykładu w wersji v5 i jego kodem pomocniczym.
Interpretowanie przykładowej odpowiedzi
Skrócona przykładowa odpowiedź może zawierać następujące pola profilu. Wartości są fikcyjne i nie są danymi wyjściowymi, których osoba ucząca się potrzebuje do odtworzenia.
{
"displayName": "Avery Rivera",
"jobTitle": "Service specialist",
"mail": "avery@example.com"
}
Aplikacja może używać tych pól do prezentowania informacji o profilu. Wartości rzeczywiste zależą od profilu katalogu użytkownika, a pola mogą być nieobecne lub mają wartość null. Pole profilu nie jest dowodem zatrudnienia ani zamiennikiem zasad autoryzacji aplikacji.
Ogólny podział obowiązków jest ważny: Microsoft Entra ID wystawia token zgodnie z odpowiednimi regułami uprawnień i zgody, biblioteka MSAL4J uzyskuje ten token, a zestaw GRAPH SDK lub klient HTTP używa go do żądania danych. Samo utworzenie klienta Graph nie daje dostępu.