Esercizio - Autorizzare l'accesso all'API Microsoft Graph con MSAL
In questo esercizio si configurerà l'applicazione con le autorizzazioni e si userà MSAL per accedere alle informazioni sul 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 queste autorizzazioni per l'approvazione da parte degli utenti. È possibile assegnare queste autorizzazioni API alla registrazione dell'app dal portale di Azure. Ecco i passaggi per assegnare all'applicazione le autorizzazioni dell'API Microsoft Graph.
Nella schermata di registrazione dell'app selezionare il pannello Autorizzazioni API a sinistra per aggiungere l'accesso alle API necessarie per l'applicazione.
Selezionare il pulsante + Aggiungi un'autorizzazione .
Verificare che la scheda API Microsoft sia selezionata.
Nella sezione API Microsoft comunemente usate selezionare Microsoft Graph e quindi autorizzazioni delegate.
Nella sezione Autorizzazioni delegate scorrere verso il basso e selezionare User.Read nell'elenco. Questa autorizzazione specifica consente di accedere alle informazioni dell'utente connesso dall'endpoint
https://graph.microsoft.com/v1.0/me
.Fare clic sul pulsante Aggiungi autorizzazioni nella parte inferiore.
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 è già stato eseguito l'accesso, si verrà reindirizzati all'accesso con Microsoft Entra ID. Al termine dell'accesso, verrà visualizzata una pagina come illustrato nell'immagine seguente.Selezionare il pulsante Chiama graph per effettuare una chiamata all'endpoint di
/me
Microsoft Graph e visualizzare i dettagli dell'utente visualizzati.
Panoramica del codice per l'accesso a Microsoft Graph
È possibile trovare il codice per accedere all'API Microsoft Graph nella classe CallGraphServlet.java
servlet nella directory del progetto di msal4j/callgraphwebapp/
esempio. Definisce l'endpoint /call_graph
nell'applicazione, che effettua chiamate autorizzate all'endpoint dell'API https://graph.microsoft.com/v1.0/me
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 diaad.scopes
è 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 acconsente a uno o più ambiti, questi vengono codificati nell'oggetto restituito
access_token
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 inserisce il token di accesso nelle intestazioni di 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();