Ejercicio: Autorización del acceso a la API Microsoft Graph con MSAL
En este ejercicio, configurará la aplicación con permisos y usará MSAL para acceder a la información del perfil de usuario desde la API de Microsoft Graph (MS Graph).
Adición de permisos de Microsoft Graph al registro de aplicaciones
Los servicios web protegidos por Microsoft Entra ID definen un conjunto de permisos que proporcionan acceso a la funcionalidad de API y a los datos expuestos por ese servicio. Para que una aplicación pueda acceder a los datos o actuar en nombre de un usuario, debe solicitar que estos permisos sean aprobados por los usuarios. Puede asignar estos permisos de API al registro de la aplicación desde Azure Portal. Estos son los pasos para asignar permisos de la API Microsoft Graph a la aplicación.
En la pantalla Registros de aplicaciones, seleccione Permisos de API para agregar acceso a las API que necesita la aplicación.
Selecciona Agregar permiso.
Asegúrese de que la pestaña API de Microsoft esté seleccionada.
En la sección API de Microsoft usadas habitualmente, seleccione Microsoft Graph y, a continuación, seleccione Permisos delegados.
En la sección Permisos delegados, desplácese hacia abajo y seleccione User.Read en la lista. Este permiso concreto es para acceder a la información del usuario que ha iniciado sesión desde el punto de conexión
https://graph.microsoft.com/v1.0/me
.Selecciona Agregar permisos.
Ejecución de la aplicación
Puede probar la llamada Graph API en la aplicación que ha ejecutado en el ejercicio anterior.
Abra el explorador web y vaya a
http://localhost:8080/msal4j-servlet-graph/
. Si aún no ha iniciado sesión, se le redirigirá para que lo haga con Microsoft Entra ID. Al iniciar sesión correctamente, debería ver una página como se muestra en la siguiente imagen.Seleccione Llamar a Graph para realizar una llamada al punto de conexión de
/me
de Microsoft Graph y ver los detalles del usuario mostrados.
Información general sobre el código para acceder a Microsoft Graph
Puede encontrar el código para acceder a Microsoft Graph API en la clase servlet CallGraphServlet.java
en el directorio msal4j/callgraphwebapp/ del proyecto de ejemplo. Define el punto de conexión /call_graph
de la aplicación que realiza llamadas autorizadas al punto de conexión https://graph.microsoft.com/v1.0/me
de la API Microsoft Graph para recuperar la información de perfil del usuario que ha iniciado sesión. A continuación se muestran más detalles del código de acceso de Graph.
En el archivo ./src/main/resources/authentication.properties, el valor de
aad.scopes
se establece en el ámbito User.Read.Los ámbitos indican a Microsoft Entra ID el nivel de acceso que la aplicación solicita y se asignan a los permisos en el registro de la aplicación. En función de los ámbitos solicitados, Microsoft Entra ID presenta un cuadro de diálogo de consentimiento al usuario cuando inicia sesión. Si el usuario da su consentimiento a uno o varios ámbitos, se codifican en el objeto
access_token
resultante que se devuelve en la respuesta de autenticación.Cuando el usuario navega a
/call_graph
, la aplicación crea una instancia de IGraphServiceClient (SDK de Java de Microsoft Graph) y se pasa el token de acceso del usuario que ha iniciado sesión. Desde aquí, el cliente de Graph coloca el token de acceso en los encabezados de autorización de sus solicitudes. Después, la aplicación solicita al cliente de Graph que llame al punto de conexión/me
de Microsoft Graph para devolver los detalles del usuario que ha iniciado sesión actualmente.El código siguiente es todo lo que tiene que escribir un desarrollador de aplicaciones para acceder al punto de conexión
/me
, siempre que ya tenga un token de acceso válido para Graph Service con el ámbitoUser.Read
.//CallGraphServlet.java User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();