Estamos moviendo una aplicación de "Iniciar sesión con Google" a "Iniciar sesión con Microsoft". Es un SPA, pero consulta una API para obtener datos. El lado del cliente funciona con MSAL v2 (msal-browser.min.js), y podemos iniciar y cerrar sesión sin problemas.
Cuando enviamos solicitudes al servidor, enviamos el token de ID de JWT. El servidor es una API de NodeJS.
No puedo ver ninguna biblioteca de nodos del lado del servidor de Microsoft que tenga un método de "verificación" que podamos usar para validar el token de ID del cliente.
Hemos estado mirando @azure/msal-node y @azure/msal-common , pero no podemos ver nada a lo que podamos enviar el token de ID, para verificar que el token sea válido y que el usuario haya iniciado sesión. .
Queremos devolver 'no autorizado' de la API si el usuario no ha iniciado sesión.
Con Google, esto fue fácil, usamos google-auth-library así:
const client = new OAuth2Client(googleClientId) const ticket = await client.verifyIdToken({ idToken: googleIdToken, audience: googleClientId }) const payload = ticket.getPayload() // jwt payloadEspero que el equivalente de Microsoft sea difícil de encontrar, o no lo es y estoy siendo un tonto al no encontrarlo.
¿Existe una biblioteca de nodos que proporcione una forma de verificar un token de ID de MSAL, que confirme que el token es válido y que el usuario ha iniciado sesión...?
MSAL Node es para adquirir tokens para que los clientes puedan acceder a recursos protegidos, no para validar tokens en su API. No creo que Microsoft proporcione actualmente ninguna biblioteca de nodos para validar tokens, pero puede usar jsonwebtoken en su lugar.
Hay un ejemplo de código en la biblioteca de nodos de MSAL que muestra cómo validar ciertas notificaciones en tokens.
Si tiene curiosidad sobre cuáles son los pasos para validar un JWT de Azure AD con más detalle, escribí un artículo que explica los distintos pasos. El ejemplo de código está escrito en Java, pero todos los pasos también son aplicables a Node.