Övning – Auktorisera åtkomst till Microsoft Graph API med MSAL
I den här övningen konfigurerar du programmet med behörigheter och använder MSAL för att komma åt användarprofilinformation från Microsoft Graph-API:et (MS Graph).
Lägga till Microsoft Graph-behörigheter i appregistrering
Webbtjänster som skyddas av Microsoft Entra-ID definierar en uppsättning behörigheter som ger åtkomst till API-funktioner och data som exponeras av den tjänsten. Innan ett program kan komma åt data eller agera för en användares räkning måste det begära att dessa behörigheter godkänns av användarna. Du kan tilldela dessa API-behörigheter till din appregistrering från Azure-portalen. Här följer stegen för att tilldela Microsoft Graph API-behörigheter till ditt program.
På appens registreringsskärm väljer du bladet API-behörigheter till vänster för att lägga till åtkomst till de API:er som programmet behöver.
Välj knappen + Lägg till en behörighet.
Kontrollera att fliken Microsoft-API:er är markerad.
I avsnittet Vanliga Microsoft-API:er väljer du Microsoft Graph och sedan Delegerade behörigheter.
I avsnittet Delegerade behörigheter rullar du nedåt och väljer User.Read i listan. Den här behörigheten gäller för åtkomst till informationen för den inloggade användaren från
https://graph.microsoft.com/v1.0/me
slutpunkten.Klicka på knappen Lägg till behörigheter längst ned.
Kör appen
Du kan prova Graph API-anropet i det program som du har kört från föregående övning.
Öppna din webbläsare och gå till
http://localhost:8080/msal4j-servlet-graph/
. Om du inte redan är inloggad omdirigeras du för att logga in med Microsoft Entra-ID. Vid lyckad inloggning bör du se en sida enligt bilden nedan.Välj knappen Samtalsdiagram för att göra ett anrop till Microsoft Graphs
/me
slutpunkt och se användarinformationen som visas.
Översikt över kod för Microsoft Graph-åtkomst
Du hittar koden för att komma åt Microsoft Graph API i servlet-klassen CallGraphServlet.java
under exempelprojektets msal4j/callgraphwebapp/
katalog. Den definierar /call_graph
slutpunkten i programmet, som gör auktoriserade anrop till Microsoft Graph API:s https://graph.microsoft.com/v1.0/me
slutpunkt för att hämta profilinformationen för den inloggade användaren. Här följer mer information om Graph-åtkomstkoden.
./src/main/resources/authentication.properties
I filen anges värdetaad.scopes
för till user.Read-omfånget.Omfång anger för Microsoft Entra-ID vilken åtkomstnivå programmet begär och mappar till behörigheterna i appregistreringen. Baserat på de begärda omfången presenterar Microsoft Entra-ID en medgivandedialog för användaren vid inloggning. Om användaren godkänner ett eller flera omfång kodas de till resultatet som
access_token
returneras i autentiseringssvaret.När användaren navigerar till
/call_graph
skapar programmet en instans av IGraphServiceClient (Microsoft Graph SDK Java) som skickar vidare den inloggade användarens åtkomsttoken. Graph-klienten härifrån placerar åtkomsttoken i auktoriseringshuvudena för sina begäranden. Appen ber sedan Graph-klienten att anropa Microsoft Graphs/me
slutpunkt för att ge information om den inloggade användaren.Följande kod är allt som krävs för att en programutvecklare ska kunna skriva för åtkomst till
/me
slutpunkten, förutsatt att de redan har en giltig åtkomsttoken för Graph Service med omfångetUser.Read
.//CallGraphServlet.java User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();