Estoy usando firebase para un sitio web, donde los usuarios pueden iniciar sesión con sus cuentas de microsoft a través de OAuth 2.0:
import {getAuth, signInWithRedirect, OAuthProvider} from "firebase/auth"; (...) const provider = new OAuthProvider('microsoft.com'); const auth = getAuth(); signInWithRedirect(auth, provider);Solicita el inicio de sesión único de Microsoft con un flujo de trabajo de redirección.
La autenticación funciona bien con firebase, excepto por un detalle: cuando inicio sesión con la cuenta de Microsoft en el navegador para la aplicación web, también inicio sesión en mi cuenta completa de Office 365 en segundo plano y en otros posibles sitios de Microsoft.
Entonces, si abro una nueva pestaña y voy a mi correo en línea de Outlook 365, ya estoy conectado desde que inicié sesión en mi aplicación web. Si me olvido de cerrar la sesión de la aplicación web, todo mi buzón de correo, el calendario con toda la información de la cuenta de Microsoft quedan expuestos.
Revisé todas las páginas y configuraciones en Azure Portal donde configuré los identificadores de aplicaciones/inquilinos, miré Scopes y miré los parámetros de OAuth 2.0 de la documentación de Mirosoft, pero no puedo encontrar nada sobre este problema.
El inicio de sesión único se hizo originalmente como una conveniencia para el usuario, pero en mi caso me gustaría evitarlo como medida de seguridad.
¿Cómo puedo limitar el inicio de sesión de Microsoft para autenticar solo en el proyecto webapp/firebase y nada más?
La respuesta simple es: no puedes hacer eso.
SSO es exactamente lo que significa: inicio de sesión único. El usuario inicia sesión una vez y puede usar diferentes aplicaciones sin necesidad de volver a autenticarse. Le pide a Microsoft que verifique la identidad del usuario por usted. Microsoft inicia la sesión del usuario y le devuelve la respuesta. Pero significa que en este navegador el usuario podrá usar otros servicios de Microsoft ya que ya verificó su identidad.
Lo único que puede hacer es informar a sus usuarios sobre los riesgos de seguridad y decirles que se aseguren de cerrar sesión al final de su trabajo (también puede cerrar sesión en Microsoft).
Si MS admite el cierre de sesión iniciado por el canal secundario, entonces puede intentar implementar alguna acción que verifique si la sesión de su usuario aún está activa y, de lo contrario, inicie un cierre de sesión en MS. Aunque no sé si lo apoyan.