Interpretujte požadavek Microsoft Graph
Tento návod vysvětluje, jak Java webová aplikace může číst profil přihlášeného uživatele z Microsoft Graph. Níže uvedený požadavek, Java fragment a odpověď jsou ilustrativní ukázky s vysvětlením, nikoli testovacím prostředím nebo požadavkem na odeslání skutečného požadavku rozhraní API.
Propojte konfiguraci, rozsahy oprávnění a souhlas
Referenční ukázka servletu používá delegované User.Read. Její vlastnost konfigurace aad.scopes poskytuje tuto hodnotu objektu Config.SCOPES, který ji autentizačnímu kódu poskytne při přihlášení.
Seznam oprávnění rozhraní API registrace aplikace popisuje nakonfigurovaná oprávnění. Následující snímek obrazovky je příkladem tohoto zobrazení, nikoli instrukce ke změně registrace.
Tři fakta vysvětlují kontext autorizace:
- Kód požaduje pro Microsoft Graph delegovaná oprávnění
User.Read. - Souhlas může pocházet od uživatele nebo autorizovaného správce v závislosti na zásadách tenanta a existujících grantech.
- Přidání oprávnění k registraci sama o sobě neuděluje souhlas ani nemění požadované obory kódu.
Ukázka požádá o toto oprávnění během přihlašování, takže neexistuje samostatný předpoklad, že každý požadavek Graphu zobrazí výzvu k vyjádření souhlasu.
Čtení požadavku HTTP
Následující ukázka HTTP ukazuje základní části požadavku profilu.
<graph-access-token> je vysvětlující zástupný symbol, nikoli token pro získání nebo vložení do nástroje.
GET /v1.0/me HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer <graph-access-token>
Požadavek používá protokol HTTPS pro přístup k https://graph.microsoft.com/v1.0/me.
/me identifikuje přihlášeného uživatele v delegovaném kontextu. Hlavička Authorization nese přístupový token určený pro Microsoft Graph; neobsahuje token ID aplikace, autorizační kód ani tajný klíč klienta.
User.Read je dostačující pro ilustrovanou operaci čtení profilu přihlášeného uživatele. Neautorizuje libovolný přístup k informacím ostatních uživatelů.
Referenční dokumentace k API Get a user popisuje endpoint a oprávnění.
Přečtěte si odpovídající článek pro Java SDK
Historická ukázka CallGraphServlet zpracovává vlastní /call_graph trasu a používá sadu Microsoft Graph SDK k vytvoření požadavku rozhraní API. Následující fragment ukazuje, že volání po získání tokenu proběhlo úspěšně.
User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();
GraphHelper je pomocná rutina definovaná ukázkou, nikoli integrovaným rozhraním MSAL4J API. Vytvoří objekt GraphServiceClient, jehož poskytovatel ověřování dodává přístupový token Graphu přihlášeného uživatele z ověřeného kontextu ukázky.
contextAdapter připojí aktuální požadavek k kontextu aplikace.
V této verzi me() sady SDK vybere koncový bod přihlášeného uživatele, buildRequest() vytvoří požadavek a odešle ji a get() deserializuje odpověď do modelu Microsoft GraphUser. Fragment vynechá okolní servlet, importy, zpracování relací a zpracování chyb; není to úplná aplikace.
Note
Tento fragment odráží syntaxi sady Microsoft Graph SDK pro Javu 5.5.0 z historické ukázky. Sada SDK v6 změní vzor požadavků, konstrukci klienta, integraci ověřování a přístup k modelu. Průvodce upgradem sady Microsoft Graph Java SDK v6 vysvětluje tyto rozdíly. Výraz požadavku určený pouze pro v6 není kompatibilní se závislostí ukázky na v5 a jejím pomocným kódem.
Interpretace ilustrativní odpovědi
Zkrácená ukázková odpověď může obsahovat následující pole profilu. Hodnoty jsou smyšlené a nepředstavují výstup, který má student reprodukovat.
{
"displayName": "Avery Rivera",
"jobTitle": "Service specialist",
"mail": "avery@example.com"
}
Aplikace může tato pole použít k prezentaci informací o profilu. Skutečné hodnoty závisí na profilu adresáře uživatele a pole mohou být chybějící nebo null. Pole profilu není dokladem o zaměstnání ani náhradou za zásady autorizace aplikace.
Celkové rozdělení odpovědností je důležité: Microsoft Entra ID vydá token v rámci příslušných pravidel oprávnění a souhlasu, MSAL4J ho získá a sada Graph SDK nebo klient HTTP ho použije k vyžádání dat. Pouhé vytvoření klienta Graphu neuděluje přístup.