Gyakorlat – Hozzáférés engedélyezése a Microsoft Graph API-hoz az MSAL használatával

Befejeződött

Ebben a gyakorlatban engedélyekkel konfigurálja az alkalmazást, és MSAL használatával fér hozzá a felhasználói profil adataihoz a Microsoft Graph (MS Graph) API-ból.

Microsoft Graph-engedélyek hozzáadása az alkalmazásregisztrációhoz

A Microsoft Entra ID által védett webszolgáltatások olyan engedélyeket határoznak meg, amelyek hozzáférést biztosítanak a szolgáltatás által közzétett API-funkciókhoz és adatokhoz. Mielőtt egy alkalmazás hozzáférhet az adatokhoz, vagy eljárhat egy felhasználó nevében, kérnie kell ezeket az engedélyeket, hogy a felhasználók jóváhagyják őket. Ezeket az API-engedélyeket az Azure Portalon rendelheti hozzá az alkalmazásregisztrációhoz. Az alábbiakban bemutatjuk a Microsoft Graph API-engedélyek alkalmazáshoz való hozzárendelésének lépéseit.

  1. A Alkalmazásregisztrációk képernyőn válassza ki az API-engedélyeket az alkalmazás által igényelt API-khoz való hozzáférés hozzáadásához.

    Képernyőkép a Microsoft Entra-azonosítóval regisztrált alkalmazás API-engedélyek paneljének menüjéről az Azure Portalon.

    • Válassza az Engedély hozzáadása lehetőséget.

    • Győződjön meg arról, hogy a Microsoft API-k lap ki van jelölve.

    • A Gyakran használt Microsoft API-k szakaszban válassza a Microsoft Graph, majd a Delegált engedélyek lehetőséget.

    • A Delegált engedélyek szakaszban görgessen le, és válassza a User.Read lehetőséget a listában. Ez a konkrét engedély a bejelentkezett felhasználó adatainak a végpontról https://graph.microsoft.com/v1.0/me való elérésére szolgál.

    • Jelölje be az Engedélyek hozzáadása lehetőséget.

      Képernyőkép egy, a Microsoft Entra-azonosítóval regisztrált alkalmazás API-engedélyek paneljéről az Azure Portalon.

Az alkalmazás futtatása

Kipróbálhatja a Graph API-hívást azon az alkalmazáson, amelyet az előző gyakorlatból futtatott.

  1. Nyissa meg a böngészőt, és keresse meg a következőt http://localhost:8080/msal4j-servlet-graph/: . Ha még nem jelentkezett be, a rendszer átirányítja a Microsoft Entra-azonosítóval való bejelentkezéshez. A sikeres bejelentkezéskor egy lapnak kell megjelennie az alábbi képen látható módon.

    Képernyőkép a diagram meghívására szolgáló gombról, amely a mintaalkalmazásba való sikeres bejelentkezés után jelenik meg a lapon.

  2. A Hívásdiagram lehetőséget választva hívást kezdeményezhet a Microsoft Graph végpontjára/me, és megtekintheti a megjelenő felhasználói adatokat.

A Microsoft Graph-hozzáférés kódjának áttekintése

A Microsoft Graph API eléréséhez szükséges kódot a servlet osztályban CallGraphServlet.java találja a mintaprojekt msal4j/callgraphwebapp/ könyvtárában. Meghatározza az /call_graph alkalmazás végpontját, amely engedélyezett hívásokat indít a Microsoft Graph API végpontjára https://graph.microsoft.com/v1.0/me a bejelentkezett felhasználó profiladatainak lekéréséhez. Az alábbiakban további részleteket talál a Graph hozzáférési kódról.

  1. A ./src/main/resources/authentication.properties fájlban az érték aad.scopes a User.Read hatókörre van állítva.

    A hatókörök közlik a Microsoft Entra-azonosítóval az alkalmazás által kért hozzáférési szintet, és megfeleltetik az alkalmazásregisztráció engedélyeit. A kért hatókörök alapján a Microsoft Entra ID hozzájárulási párbeszédet mutat be a felhasználónak bejelentkezéskor. Ha a felhasználó egy vagy több hatókörhöz járul hozzá, a rendszer a hitelesítési válaszban visszaadott eredménybe access_token kódolja őket.

  2. Amikor a felhasználó megnyitja /call_graph, az alkalmazás létrehozza az IGraphServiceClient (Microsoft Graph SDK Java) egy példányát, amely a bejelentkezett felhasználó hozzáférési jogkivonata mentén halad át. Az innen származó Graph-ügyfél a hozzáférési jogkivonatot a kérések engedélyezési fejléceiben helyezi el. Az alkalmazás ezután felkéri a Graph-ügyfelet, hogy hívja meg a Microsoft Graph végpontját /me , hogy adja meg az aktuálisan bejelentkezett felhasználó adatait.

    A következő kód szükséges ahhoz, hogy az alkalmazásfejlesztők a végpont eléréséhez /me írjanak, feltéve, hogy már rendelkeznek érvényes hozzáférési jogkivonattal a Graph Service-hez a User.Read hatókörrel.

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