En una instancia de Discourse recién configurada, SAML falla debido a la política de seguridad de contenido predeterminada que niega el script que envía el formulario…
Alojamos a muchos clientes que están utilizando el plugin SAML con éxito junto con CSP. ¿Podrías compartir el error que estás viendo en la consola del navegador?
Todo nuestro alojamiento utiliza CDNs, así que mi suposición es que la regla de CSP no está funcionando para quienes no tienen CDNs ![]()
Sí, lo siento, tenía planeado hacerlo, pero no puedo reproducir el mensaje de error, aunque el error persiste.
Ahora solo obtengo errores de “contenido mixto” en el favicon y el icono de Apple. Las imágenes se subieron antes de que se activara force_https, pero creo que esta configuración debería encargarse del origen de todos los iconos… ¿Es esto un error?
Estoy intentando reproducir el error original que obtuve, pero hasta ahora sin éxito. El error que se muestra en pantalla es: “Lo sentimos, ha ocurrido un error al autorizar tu cuenta. Por favor, inténtalo de nuevo.” Creo que se trata de un ticket inválido, aunque todas las configuraciones coinciden con una instancia funcional existente tanto en el lado de Discourse como en el de Keycloak. Es extraño.
Sí, lo siento. Tenía previsto hacerlo, pero no puedo reproducir el mensaje de error, aunque el error persiste.
Vale, he encontrado el error. Creo que proviene de la configuración:
- Es una instancia multisitio donde ps.zoethical.org es el sitio ‘principal’, para el cual SAML se configuró originalmente.
- La instancia forum.zoonklopper.be muestra un botón de SAML, pero el ámbito está definido para ps.zoethical.org.
(saml) ¡Fallo de autenticación! invalid_ticket: OneLogin::RubySaml::ValidationError, https://ps.zoethical.org no es un público válido para esta Respuesta - Públicos válidos: https://forum.zonnklopper.be
Si agrego el público de ps.zoethical.org, obtengo otro error:
(saml) ¡Fallo de autenticación! invalid_ticket: OneLogin::RubySaml::ValidationError, la respuesta se recibió en https://forum.zonnklopper.be/auth/saml/callback en lugar de https://ps.zoethical.org/auth/saml/callback
El plugin SAML no es compatible con multisitio.
Sí, eso es lo que acabo de darme cuenta. Es muy lamentable. ![]()
Así que, en realidad, la incompatibilidad del plugin significa lo siguiente:
- Funcionará solo en el primer sitio de una instalación multisitio (o en aquel para el que esté configurado mediante
DISCOURSE_HOSTNAME). - El botón aparecerá en la interfaz de inicio de sesión de todas las demás instancias.
- Pero esos botones fallarán sin una solución clara.
Dado que no hay un tema dedicado en #plugin para discourse-saml, sugiero crear uno y mencionar esta advertencia en el primer mensaje. Estoy bastante seguro de que se puede consolidar información de los más de 50 temas que mencionan SAML. Si lo hubiera sabido antes, habría configurado mis servicios de manera diferente.
(A propósito, el error original de CSP muy probablemente se debe a que el iframe intenta cargar el sitio original en lugar del actual.)
Ocultar el botón de SAML en multisitio
Esta es una solución rápida para quienes han activado el plugin de SAML en una instalación multisitio. ![]()
- Ve a Administración > Temas y selecciona “instalar nuevo”.
- Crea un nuevo componente (con el nombre: “Ocultar botón de SAML”).
- Agrega el siguiente CSS:
#login-buttons .btn.btn-social.saml { display: none; /* plugin incompatible con multisitio */ } - Aplica el componente a todos los temas.
Ahora el botón de SAML (que no funciona en esta instancia) permanecerá oculto.
Este tema se cerró automáticamente después de 3 días. Ya no se permiten nuevas respuestas.