Al agregar usuarios a un grupo de forma masiva mediante la interfaz descrita aquí, si un correo electrónico en la lista de entrada no existe aún en Discourse, se envía un correo de invitación.
Si haces clic en el enlace, serás llevado a una página de creación de cuenta dentro de Discourse:
Si completas el formulario, se crea una cuenta. La cuenta creada no tiene información de SSO.
Creo que es bastante claro por qué esto es un problema:
Eludir nuestro sistema de autenticación SSO es muy grave.
Sin una advertencia que indique que “X personas están a punto de recibir un correo”, envié correos no deseados a personas sin darme cuenta de que se estaban enviando mensajes.
Comportamiento esperado:
Al agregar usuarios a un grupo de forma masiva, si SSO está habilitado, ignora cualquier correo electrónico que aún no esté registrado en el sitio.
Gracias por reportar esto. Puedo reproducir el problema en mi sitio de desarrollo. Cuando SSO está habilitado, cualquier correo electrónico que aún no esté en el sitio debe ser ignorado si se agrega a un grupo. Corregiremos esto. Disculpa las molestias que esto haya causado.
@Grayden_Shand En realidad, actualmente estamos considerando agregar la autenticación SSO en la página de canje de invitaciones. Al canjear la invitación, el usuario deberá autenticarse mediante SSO en lugar de llenar el formulario de registro. ¿Eso se ajustaría a tu caso de uso?
@sam Estoy pensando en el flujo de invitaciones y una cosa en la que no estoy seguro es si el correo electrónico al que se envió la invitación debe coincidir con el correo electrónico de SSO. Parece que podríamos hacer cumplir esto para invitaciones basadas en correo electrónico, pero no para invitaciones basadas en enlaces. ¿Qué opinas?
Para nuestro caso de uso, sería mucho mejor poder suprimir por completo los correos electrónicos de invitación. Para la mayoría de nuestros sitios (comunidades temporales para cursos en línea), hay una ventana limitada para registrarse (y una tarifa). Así que imagino que alguien que reciba una invitación al sitio y luego se presente solo para descubrir que ya no puede unirse se sentiría frustrado. Realmente no hay ninguna circunstancia en la que queramos que alguien reciba una invitación a uno de nuestros sitios.
Si decides proceder con esto, te pediría que también implementaras una advertencia con algo como: “Estás a punto de enviar correos electrónicos a XX personas que no son usuarios de tu sitio: bob@ejemplo.com, alice@ejemplo.com, …” Así podríamos encontrar a esos usuarios y eliminarlos de la lista de adición masiva.
¿Sería posible usar enlaces de invitación para tu caso de uso? De esa manera, no se envía ningún correo electrónico y puedes establecer una fecha de caducidad.
Aún mantengo un modo ninja para omitir el envío de correos electrónicos, lo que te permite agregar una gran cantidad de direcciones a una lista de permitidos. Sin embargo, me pregunto si la función de enlaces de invitación elimina la necesidad de esto en tu caso.
No lo creo, pero quizás no estoy entendiendo la pregunta correctamente. Déjame explicar cómo utilizamos Discourse, la función de SSO y por qué me encontré originalmente con este error.
Gestionamos una plataforma de e-learning que utiliza un foro Discourse temporal para cada sesión de cada taller (curso).
Utilizamos SSO con un sistema de autenticación personalizado por dos razones:
Para que un usuario solo necesite crear un conjunto de credenciales para acceder a cualquier curso en el que se haya registrado.
Para hacer cumplir las políticas sobre quién tiene permitido acceder a cada foro, basándonos en datos arbitrarios de nuestra base de datos. Por ejemplo, en nuestro punto final de SSO de Discourse, verificamos que el usuario tenga un registro válido y que la fecha esté dentro de los límites de nuestras fechas de apertura y cierre.
Me encontré con este error cuando quisimos crear un grupo en un taller solo para personas que estaban en otro diferente (como un grupo de exalumnos). Así que agregué la lista completa de la clase del otro taller al modal de adición masiva y, por error, envié invitaciones a todos en esa lista que no se habían registrado para el taller actual.
Por lo tanto, realmente nunca usaríamos la función de invitación en Discourse (ya sea por enlace o por correo). Si quisiéramos una función de invitación, probablemente tendríamos que construirla nosotros mismos, ya que habría cierta lógica de negocio que querríamos aplicar sobre cualquier invitación que enviáramos. Por ejemplo, si el período de inscripción al taller estuviera cerrado, querríamos mostrar un mensaje de error en el enlace. O quizás querríamos incluir un descuento en el enlace.
Todo esto para decir que funciona si no tenemos que usarlo, pero realmente nos gustaría no tener que preocuparnos por enviar correos electrónicos inadvertidamente a personas sin cuenta en ese Discourse.