Interpretación de una solicitud de Microsoft Graph
En este tutorial se explica cómo una aplicación web de Java puede leer el perfil del usuario que ha iniciado sesión desde Microsoft Graph. La solicitud, el fragmento en Java y la respuesta que aparecen a continuación son ejemplos ilustrativos con explicaciones, no una práctica de laboratorio ni un requisito para enviar una solicitud real a una API.
Relaciona la configuración, los alcances y el consentimiento
El ejemplo de servlet de referencia utiliza User.Read delegado. Su aad.scopes propiedad de configuración proporciona ese valor a Config.SCOPES, que el código de autenticación solicita durante el inicio de sesión.
La lista de permisos de API del registro de aplicaciones describe los permisos configurados. La captura de pantalla siguiente es un ejemplo de esa vista, no una instrucción para cambiar un registro.
Tres hechos explican el contexto de autorización:
- El código solicita permisos delegados
User.Readpara Microsoft Graph. - El consentimiento puede proceder del usuario o de un administrador autorizado, según la política del inquilino y los permisos ya concedidos.
- Agregar un permiso al registro no concede consentimiento ni cambia los ámbitos solicitados del código.
El ejemplo solicita este permiso durante el inicio de sesión, por lo que no hay una suposición independiente de que cada solicitud de Graph muestra un mensaje de consentimiento.
Leer la solicitud HTTP
En el ejemplo HTTP siguiente se muestran las partes esenciales de una solicitud de perfil.
<graph-access-token> es un marcador de posición explicativo, no un token para obtener o pegar en una herramienta.
GET /v1.0/me HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer <graph-access-token>
La solicitud usa HTTPS para acceder a https://graph.microsoft.com/v1.0/me.
/me identifica al usuario que ha iniciado sesión en un contexto delegado. El Authorization encabezado lleva un token de acceso destinado a Microsoft Graph; no lleva el token de identificador de la aplicación, un código de autorización ni un secreto de cliente.
User.Read es suficiente para la operación ilustrada de lectura del perfil del usuario que ha iniciado sesión. No autoriza el acceso arbitrario a la información de otros usuarios. La referencia obtener una API de usuario describe el punto de conexión y los permisos.
Leer el SDK de Java equivalente
El ejemplo CallGraphServlet histórico controla su propia /call_graph ruta y usa el SDK de Microsoft Graph para realizar la solicitud de API. El siguiente fragmento ilustra esa llamada tras haber completado con éxito la adquisición del token.
User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();
GraphHelper es un asistente definido por el ejemplo, no una API de MSAL4J integrada. Crea un GraphServiceClient cuyo proveedor de autenticación proporciona el token de acceso a Graph del usuario que ha iniciado sesión a partir del contexto autenticado del ejemplo.
contextAdapter conecta la solicitud actual a ese contexto de aplicación.
En esta versión del SDK, me() selecciona el punto de conexión del usuario que ha iniciado sesión, buildRequest() crea la solicitud y get() lo envía y deserializa la respuesta en un modelo de Microsoft GraphUser. El fragmento omite el servlet circundante, las importaciones, el control de sesiones y el procesamiento de errores; no es una aplicación completa.
Note
Este fragmento refleja la sintaxis del SDK de Microsoft Graph para Java 5.5.0 del ejemplo histórico. El SDK v6 cambia el patrón de solicitud, la construcción del cliente, la integración de autenticación y el acceso al modelo. En la guía de actualización de Microsoft Graph Java SDK v6 se explican esas diferencias. Una expresión de petición exclusiva de v6 no es compatible con la dependencia v5 ni con el código auxiliar del ejemplo.
Interpretación de una respuesta ilustrativa
Una respuesta de ejemplo abreviada podría contener los siguientes campos de perfil. Los valores son ficticios y no son resultados que el aprendiz necesita reproducir.
{
"displayName": "Avery Rivera",
"jobTitle": "Service specialist",
"mail": "avery@example.com"
}
La aplicación puede usar estos campos para presentar información de perfil. Los valores reales dependen del perfil de directorio del usuario y los campos pueden estar ausentes o null. Un campo de perfil no constituye una prueba de una relación laboral ni sustituye a la política de autorización de la aplicación.
La división general de responsabilidades es importante: Microsoft Entra ID emite un token bajo las reglas de permisos y consentimiento aplicables, MSAL4J adquiere ese token y el SDK de Graph o un cliente HTTP lo usa para solicitar datos. La simple construcción de un cliente de Graph no concede acceso.