Inicio de sesión de usuarios con la biblioteca de autenticación de Microsoft

Completado

Ha registrado la aplicación web con Microsoft Entra ID. Ahora está listo para agregar el código de autenticación que permita el inicio de sesión de los usuarios en la aplicación y le gustaría usar un SDK que pueda controlar los detalles de autenticación de forma automática. En esta unidad, obtendrá información sobre la Biblioteca de autenticación de Microsoft para Java (MSAL4J) y cómo ayuda con la autenticación.

Biblioteca de autenticación de Microsoft para Java

La biblioteca de autenticación de Microsoft para Java (MSAL4J) permite a las aplicaciones iniciar la sesión de usuarios o aplicaciones con identidades de Microsoft (Microsoft Entra ID, cuentas de Microsoft y cuentas de Azure Active Directory B2C) y obtener tokens para llamar a las API de Microsoft o API propias registradas con Microsoft Entra ID. Se ha creado mediante los protocolos OAuth2 y OpenID Connect estándar del sector.

La biblioteca proporciona API prácticas que permiten la autenticación con Microsoft Entra ID para diferentes tipos de aplicaciones:

  • Aplicaciones web
  • Servicios de demonio
  • Aplicaciones de línea de comandos
  • Aplicaciones de escritorio

Inicialización del objeto MSAL

Para empezar a usar MSAL, tendrá que inicializar y configurar el objeto MSAL en el código de la aplicación.

MSAL representa las aplicaciones cliente como clientes públicos y confidenciales, que se distinguen por su capacidad para autenticarse de forma segura con el servidor de autorización y mantener la confidencialidad de sus credenciales de cliente.

Las aplicaciones cliente confidenciales son las que se ejecutan en servidores (aplicaciones web, aplicaciones de API web o incluso aplicaciones de servicio o demonio). Los clientes confidenciales pueden contener secretos de aplicación en tiempo de configuración.

Puede crear una instancia del cliente confidencial de la siguiente manera:

IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication app = ConfidentialClientApplication
                                        .builder(CLIENT_ID, credential)
                                        .authority(AUTHORITY)
                                        .build();
  • CLIENT_ID: El Id. de cliente es el id. de aplicación (cliente) único asignado por Microsoft Entra ID a la aplicación al registrarla.
  • CLIENT_SECRET: el secreto de cliente de la aplicación cliente confidencial, creado al registrar la aplicación.
  • AUTHORITY: la autoridad es una dirección URL que indica un directorio desde el que MSAL puede solicitar tokens. Se compone de la instancia del proveedor de identidades y la audiencia de inicio de sesión de la aplicación.

Adquisición de tokens de autenticación con MSAL

MSAL proporciona métodos acquireToken para iniciar el flujo de autenticación y devolver un objeto AuthenticationResult que contiene los tokens de autenticación.

Cuando un usuario completa el inicio de sesión, se devuelve un token de identificador en el resultado de la autenticación que contiene algunas notificaciones de autenticación básicas, como el nombre principal de usuario, el correo electrónico, etc.

Este es un ejemplo de adquisición de tokens con MSAL:

final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
                                                    .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES))
                                                    .build();

final IAuthenticationResult result = app.acquireToken(authParams).get();
  • REDIRECT_URI: El URI de redirección es el URI al que el proveedor de identidades enviará los tokens de seguridad. Debe coincidir con el URI de redirección en el registro de aplicaciones de Microsoft Entra.
  • ÁMBITOS: Los ámbitos son permisos que solicita la aplicación. Normalmente, los tres ámbitos openid profile offline_access son suficientes para recibir una respuesta de token de identificador para un inicio de sesión de usuario y MSAL los establece de forma predeterminada.

Use los métodos acquireToken de la aplicación al iniciar un flujo de inicio de sesión para los usuarios y llamar a las API para acceder a los datos.