Esercizio - Autorizzare l'accesso all'API Microsoft Graph con MSAL
In questo esercizio si configura l'applicazione con le autorizzazioni e si usa MSAL per accedere alle informazioni del profilo utente dall'API Microsoft Graph (MS Graph).
Aggiungere le autorizzazioni di Microsoft Graph alla registrazione dell'app
I servizi Web protetti da Microsoft Entra ID definiscono un set di autorizzazioni che forniscono l'accesso alla funzionalità e ai dati API esposti da tale servizio. Prima che un'applicazione possa accedere ai dati o agire per conto di un utente, deve richiedere che queste autorizzazioni siano approvate dagli utenti. È possibile assegnare queste autorizzazioni dell'API alla registrazione dell'app dal portale di Azure. Ecco i passaggi per assegnare all'applicazione le autorizzazioni dell'API Microsoft Graph.
Nella schermata Registrazioni app selezionare Autorizzazioni API per aggiungere l'accesso alle API necessarie per l'applicazione.
Selezionare Aggiungi autorizzazione.
Verificare che la scheda API Microsoft sia selezionata.
Nella sezione API Microsoft più usate selezionare Microsoft Graph e quindi selezionare Autorizzazioni delegate.
Nella sezione Autorizzazioni delegate scorrere verso il basso e selezionare l'elenco User.Read nell'elenco. Questa autorizzazione specifica consente di accedere alle informazioni dell'utente connesso dall'endpoint
https://graph.microsoft.com/v1.0/me
.Selezionare Aggiungi autorizzazioni.
Eseguire l'applicazione
È possibile provare l'API Graph sull'applicazione in esecuzione dall'esercizio precedente.
Aprire il browser e passare a
http://localhost:8080/msal4j-servlet-graph/
. Se non si è già connessi, si verrà reindirizzati all'accesso con Microsoft Entra ID. Una volta eseguito l'accesso, dovrebbe visualizzata una pagina come quella illustrata nell'immagine seguente.Selezionare Call Graph (Chiama Graph) per effettuare una chiamata all'endpoint
/me
di Microsoft Graph e visualizzare i dettagli dell'utente.
Panoramica del codice per l'accesso a Microsoft Graph
È possibile trovare il codice per accedere all'API Microsoft Graph nella classe servlet CallGraphServlet.java
nella directory msal4j/callgraphwebapp/ del progetto di esempio. Definisce l'endpoint /call_graph
nell'applicazione che effettua le chiamate autorizzate all'endpoint https://graph.microsoft.com/v1.0/me
dell'API Microsoft Graph per recuperare le informazioni sul profilo dell'utente connesso. Di seguito sono disponibili altri dettagli del codice di accesso a Graph.
Nel file ./src/main/resources/authentication.properties il valore di
aad.scopes
viene impostato sull'ambito User.Read.Gli ambiti indicano a Microsoft Entra ID il livello di accesso richiesto dall'applicazione ed eseguono il mapping alle autorizzazioni nella registrazione dell'app. In base agli ambiti richiesti, al momento dell'accesso Microsoft Entra mostra all'utente una finestra di dialogo di consenso. Se l'utente fornisce il consenso per uno o più ambiti, questi vengono codificati nel risultante
access_token
restituito nella risposta di autenticazione.Quando l'utente passa a
/call_graph
, l'applicazione crea un'istanza di IGraphServiceClient (Microsoft Graph SDK per Java), passando il token di accesso dell'utente connesso. Il client Graph da qui in poi inserisce il token di accesso nelle intestazioni dell'autorizzazione delle richieste. L'app chiede quindi al client Graph di chiamare l'endpoint/me
di Microsoft Graph per ottenere i dettagli per l'utente attualmente connesso.Il codice seguente è tutto ciò che uno sviluppatore di applicazioni deve scrivere per accedere all'endpoint
/me
, purché abbia già un token di accesso valido per il servizio Graph con l'ambitoUser.Read
.//CallGraphServlet.java User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();