Comprender el inicio de sesión con MSAL4J
MSAL4J conecta la configuración de la aplicación con las API de autenticación y de adquisición de tokens de la plataforma de identidad de Microsoft. En esta unidad se explica un ejemplo de construcción de cliente y el rol de la biblioteca en el flujo de inicio de sesión de una aplicación web.
Biblioteca de autenticación de Microsoft para Java
El Biblioteca de autenticación de Microsoft para Java (MSAL4J) permite a las aplicaciones autenticarse con identidades de Microsoft y obtener tokens para las API protegidas. Admite escenarios que implican Microsoft Entra ID, cuentas de Microsoft personales y Azure AD B2C mediante OAuth 2.0 y OpenID Connect.
Note
Los clientes existentes de Azure AD B2C pueden seguir usando el servicio. Desde el 1 de mayo de 2025 no ha estado disponible para su compra por parte de nuevos clientes, y el soporte técnico continúa hasta al menos mayo de 2030. Azure AD B2C P2 se retiró para todos los clientes el 15 de marzo de 2026; la continuidad del soporte del servicio no cubre las características exclusivas de P2 ya retiradas.
Para los nuevos proyectos de identidad de cliente, use Id. externa de Microsoft Entra. El escenario de este módulo trata de un tenant de plantilla de Microsoft Entra, no de un tenant de Azure AD B2C ni de un tenant externo de External ID. Para obtener más información, consulte las preguntas más frecuentes sobre el fin de la venta de Azure AD B2C.
MSAL4J admite varios tipos de aplicaciones, como aplicaciones web, servicios en segundo plano, aplicaciones de línea de comandos y aplicaciones de escritorio. El tipo de cliente adecuado y el flujo de adquisición de tokens dependen del entorno de la aplicación.
Un cliente confidencial representa la aplicación de servidor
MSAL distingue a los clientes públicos, que no pueden mantener de forma confiable las credenciales de aplicación confidenciales, de los clientes confidenciales, que se pueden autenticar mediante credenciales mantenidas de forma segura. Una aplicación web Java del lado servidor es un cliente confidencial.
El siguiente fragmento ilustrativo crea dicho cliente. Los nombres en mayúsculas son marcadores de posición de configuración, no identificadores reales ni secretos. No se muestran las importaciones, el código de aplicación circundante ni el control de excepciones.
IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication app = ConfidentialClientApplication
.builder(CLIENT_ID, credential)
.authority(AUTHORITY)
.build();
El fragmento conecta tres entradas:
| Entrada | Meaning |
|---|---|
CLIENT_ID |
El identificador de la aplicación procedente del registro. |
CLIENT_SECRET |
Un marcador de posición para el material secreto facilitado al servidor. Esto muestra un generador de credenciales, no una solicitud para crear o insertar un secreto. |
AUTHORITY |
La URL del proveedor de identidad y el público de inicio de sesión. En el escenario de un solo inquilino, identifica el inquilino de Microsoft Entra seleccionado. |
ClientCredentialFactory crea un objeto de credencial y el generador asocia esa credencial con el identificador de cliente y la autoridad de la aplicación. Llamar a build() crea el cliente MSAL; no inicia la sesión de ningún usuario ni redirige el navegador a ningún sitio.
Rol de MSAL en el flujo de código de autorización
Un cliente confidencial autentica la aplicación, mientras que la interacción del explorador autentica al usuario. La aplicación coordina estas partes del flujo:
| Phase | MSAL API | Responsabilidad de la aplicación |
|---|---|---|
| Iniciar el inicio de sesión del explorador | getAuthorizationRequestUrl |
Construya una solicitud de autorización y redirija el explorador a él. |
| Canje de un código de autorización |
acquireToken con AuthorizationCodeParameters |
Procese la devolución de llamada, valide la respuesta e intercambie el código recibido para los tokens. |
| Obtención de un token para una llamada API posterior |
acquireTokenSilently con SilentParameters |
Proporcione la cuenta y el contexto de caché de tokens adecuado y controle los casos que requieren interacción del usuario. |
Para esta aplicación web, en la devolución de llamada se recibe un código de autorización, no el token de acceso de Microsoft Graph. El canje del código se realiza mediante una solicitud de servidor a servidor al punto de conexión del token.
Interpretación del resultado de la autenticación
El canje correcto del código devuelve un IAuthenticationResult. En este escenario de OpenID Connect, el resultado proporciona un token de identificador para la aplicación y un token de acceso para la API solicitada. También proporciona información que se usa para administrar la duración de la cuenta y del token.
El token de identidad contiene declaraciones de identidad; el token de acceso permite que una solicitud acceda a la API a la que va dirigido. Un token de identificador no es un sustituto de un token de acceso Microsoft Graph. MSAL4J obtiene tokens, pero la aplicación o un SDK específico para la API realiza la posterior llamada a la API de negocio.
La siguiente unidad aborda estas responsabilidades mediante código de servlet anotado. La introducción a MSAL proporciona contexto adicional sobre escenarios admitidos y administración de tokens.