es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cerrar sesión en todas las cuentas cuando RedirectURI regrese a la aplicación protegida.

Estoy utilizando MSALjs para cerrar la sesión de un usuario en mi aplicación. Cuando se activa msalService.logoutRedirect(), la página redirecciona y se cierra la sesión. Sin embargo, mi aplicación no tiene una ruta “sin protección”, por lo que la redirección después del cierre de sesión (postLogoutRedirectUri) está configurada para volver a la última página activa de la aplicación. Y cuando regresa a la aplicación, el protector MSAL encuentra automáticamente una sesión de MS válida e inicia sesión de nuevo automáticamente (después de las redirecciones).

Si cambio postLogoutRedirectUri a https://login.microsoftonline.com/common/oauth2/logout, el cierre de sesión funciona y cierro la sesión correctamente. Sin embargo, me gustaría que se me pida iniciar sesión de inmediato, por lo que pretendo regresar a la aplicación para que MsalGuard pueda solicitar el inicio de sesión.

Según un problema reciente de GitHub (https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/4345), uno de los colaboradores de MSAL dijo lo siguiente:

Esto es una sutilidad de cómo funciona B2C. Por defecto, B2C puede no cerrar la sesión en su proveedor de identidad federado cuando llame al punto final de cierre de sesión, esto se explica con más detalle aquí: https://learn.microsoft.com/en-us/azure/active-directory-b2c/session-behavior?pivots=b2c-user-flow#sign-out. Desafortunadamente, no sé lo suficiente sobre la configuración de B2C como para brindarle una respuesta definitiva, pero es posible que necesite crear una directiva personalizada que redirija al punto final de cierre de sesión de AAD que mencionó: ‘https://login.microsoftonline.com/common/oauth2/logout’, ya que este punto final es el que cierra su sesión con AAD. También puede hacer que B2C pase su postLogoutRedirectUri a este punto final para que AAD lo redirija de nuevo a su aplicación después del cierre de sesión, en lugar de terminar en la pantalla “Cerrar esta ventana”, si así lo desea.

¿Cómo puedo configurar esto para que el cierre de sesión se active correctamente y se cierren todas las sesiones?

Además, si cambio manualmente los metadatos del openid-config para que "end_session_endpoint" sea igual al enlace de cierre de sesión de microsoftonline mencionado anteriormente, el comportamiento parece ser más acorde a lo que esperaría.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Según el problema de GitHub y su respuesta, parece que de forma predeterminada B2C no cierra la sesión de un usuario en su proveedor de identidad federado al llamar al punto final de cierre de sesión. Para asegurar que todas las sesiones se cierren, puede ser necesario crear una política personalizada que redirija al punto final de cierre de sesión de AAD https://login.microsoftonline.com/common/oauth2/logout`. ElpostLogoutRedirectUri` puede pasarse a través de este punto final para que AAD redirija al usuario de vuelta a la aplicación después de cerrar la sesión en lugar de terminar en la pantalla “Cerrar esta ventana”.

    Alternativamente, cambiar manualmente los metadatos de openid-config para que el end_session_endpoint sea igual al enlace de inicio de sesión de Microsoft mencionado anteriormente puede dar como resultado el comportamiento deseado.

Comments are closed.