Página de inicio de sesión con SAML

En versiones anteriores, se mostraba una página de inicio en la que aparecía el botón “Iniciar sesión”. Al hacer clic en este botón, se mostraba la página de inicio de sesión SAML.
Personalmente, me gustaba mucho este comportamiento. Con la versión actual 2.4.2, esto ya no es posible, ya que la página de inicio de sesión SAML se muestra de inmediato.

¿Es configurable?

No lo estoy entendiendo, ¿te refieres a que mostramos un modal con un único botón “Iniciar sesión con SAML”?

No.
En una versión anterior (creo que era la 2.3.6) era así:

Al hacer clic en “Anmelden”, aparecía la ventana de inicio de sesión SAML.

Si activo “inicios de sesión locales”, la página de destino con el botón de inicio de sesión vuelve a aparecer, pero no quiero tener inicio de sesión local y, por lo tanto, necesito desactivarlo.

¿Puede alguien ayudarme? ¿Quizás @eviltrout?

Ciertamente no lo cambié a propósito. Si pudieran ayudarnos a rastrear cuándo se produjo el cambio, nos sería de gran ayuda para investigar el contexto.

Es posible que haya cambiado por razones de seguridad.

Esta fue una mejora solicitada desde hace tiempo para que Omniauth se comporte como un SSO real cuando solo hay un método de inicio de sesión con Omniauth.

¿Cómo puedo ayudarte?

Un consejo: si activas el “inicio de sesión local”, se mostrará la “página de inicio junto con el botón de inicio de sesión”.

Si realmente deseas la página de confirmación, puedes enlazar al usuario a /login (en lugar de la página de inicio). Esto no activará el inicio de sesión automáticamente.

Pero ten en cuenta que esto no está realmente soportado; es solo una peculiaridad de la implementación y podría cambiar en cualquier momento.

El nuevo comportamiento es mejor y consistente con el inicio de sesión SSO. Si se requiere un mensaje antes del inicio de sesión, puede implementarse en el Proveedor de Identidad.

Ah, bueno, saberlo.
Conozco dos razones:

  • Mostrar una página de aterrizaje muy atractiva con información básica en lugar de esa ventana de inicio de sesión “aburrida”.
  • “Seguridad” (sé que no es realmente un obstáculo importante). Los scripts de hacking baratos en la URL principal (sin la página de aterrizaje) fallarían, espero, ya que es necesario hacer clic en el botón de inicio de sesión primero.

¿Es posible configurar este comportamiento?

Vas a necesitar contratar a un desarrollador aquí para crear un plugin que cambie esto. Tal como está, esta es la primera queja que he escuchado sobre el nuevo sistema en meses.

Soy desarrollador :slight_smile: (mira mis cambios en discourse_saml)

¿Aceptarías un PR que añada una opción de configuración (por defecto: nuevo comportamiento)?

La redirección automática no debería introducir ninguna vulnerabilidad de seguridad. Si conoces alguna explotación, por favor infórmanos a través de nuestro programa de divulgación: discourse/docs/SECURITY.md at main · discourse/discourse · GitHub

No creo que queramos agregar más ruido a la configuración hasta que tengamos más usuarios que soliciten este cambio.

Podrías anular esto en un plugin parcheando este método:

Así que creo que querrías simplificar la función hasta reducirla a:

def redirect_to_login
  dont_cache_page
  cookies[:destination_url] = destination_url
  redirect_to path("/login")
end

¡Gracias! Muy agradecido.
Por cierto: Estás haciendo un gran trabajo con Discourse.