Cvičení – autorizace přístupu k rozhraní Microsoft Graph API pomocí MSAL
V tomto cvičení nakonfigurujete aplikaci s oprávněními a použijete MSAL pro přístup k informacím profilu uživatele z rozhraní Microsoft Graph (MS Graph) API.
Přidání oprávnění Microsoft Graphu k registraci aplikace
Webové služby zabezpečené pomocí Microsoft Entra ID definují sadu oprávnění, která poskytují přístup k funkcím rozhraní API a datům vystaveným danou službou. Aby aplikace mohl přistupovat k datům nebo jednat jménem uživatele, musí požádat o tato oprávnění, aby je uživatelé schválili. Tato oprávnění rozhraní API můžete přiřadit k registraci aplikace z webu Azure Portal. Tady je postup přiřazení oprávnění rozhraní Microsoft Graph API k vaší aplikaci.
Na obrazovce Registrace aplikací vyberte oprávnění rozhraní API pro přidání přístupu k rozhraním API, která vaše aplikace potřebuje.
Vyberte Přidat oprávnění.
Ujistěte se, že je vybraná karta Rozhraní API Microsoftu.
V části Běžně používané rozhraní MICROSOFT API vyberte Microsoft Graph a pak vyberte Delegovaná oprávnění.
V části Delegovaná oprávnění se posuňte dolů a v seznamu vyberte User.Read. Toto konkrétní oprávnění slouží k přístupu k informacím přihlášeného uživatele z koncového
https://graph.microsoft.com/v1.0/mebodu.Vyberte Přidat oprávnění.
Spuštění aplikace
Můžete vyzkoušet volání rozhraní Graph API pro aplikaci, kterou jste spustili z předchozího cvičení.
Otevřete prohlížeč a přejděte na
http://localhost:8080/msal4j-servlet-graph/. Pokud ještě nejste přihlášení, budete přesměrováni na přihlášení pomocí ID Microsoft Entra. Při úspěšném přihlášení by se měla zobrazit stránka, jak je znázorněno na následujícím obrázku.
Výběrem možnosti Call Graph (Volat Graph ) provedete volání koncového
/mebodu Microsoft Graphu a zobrazí se podrobnosti o uživateli.
Přehled kódu pro přístup k Microsoft Graphu
Kód pro přístup k rozhraní Microsoft Graph API najdete v servletové třídě CallGraphServlet.java v adresáři msal4j/callgraphwebapp/ ukázkového projektu. Definuje /call_graph koncový bod v aplikaci, který provádí autorizovaná volání koncového bodu rozhraní Microsoft Graph API https://graph.microsoft.com/v1.0/me k načtení informací o profilu přihlášeného uživatele. Tady jsou další podrobnosti o přístupovém kódu grafu.
V souboru ./src/main/resources/authentication.properties je hodnota
aad.scopesnastavena na obor User.Read.Obory říkají Microsoft Entra ID úrovně přístupu, že aplikace požaduje a mapuje na oprávnění v registraci aplikace. V závislosti na požadovaných oborech zobrazí ID Microsoft Entra dialog pro vyjádření souhlasu uživateli při přihlášení. Pokud uživatel souhlasí s jedním nebo více obory, zakóduje se do výsledné
access_tokenodpovědi na ověření.Když uživatel přejde na
/call_graph, aplikace vytvoří instanci IGraphServiceClient (Microsoft Graph SDK Java), která předává přístupový token přihlášeného uživatele. Klient Graphu odsud umístí přístupový token do autorizačních hlaviček svých požadavků. Aplikace pak požádá klienta Graphu, aby volal koncový bod Microsoft Graphu/me, aby poskytl podrobnosti pro aktuálně přihlášeného uživatele.Následující kód je vše, co vývojář aplikace potřebuje k zápisu pro přístup ke koncovému
/mebodu za předpokladu, že už má platný přístupový token pro Službu Graph Service s oboremUser.Read.//CallGraphServlet.java User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();