Estoy construyendo un portal comunitario donde usaré OAuth2 para vincular el proveedor con Discourse. Quiero permitir el inicio de sesión con correo electrónico solo si el correo ha sido invitado a la comunidad (por lo que no debe haber un botón de registro), pero quiero permitir todos los inicios de sesión mediante OAuth2.
No logro resolver esto con la configuración de OAuth2 / Inicio de sesión. ¿Es posible? En esencia, quiero anular la configuración de registro para OAuth2.
El siguiente paso fue desmarcar «habilitar nuevos registros»:
No puedo publicar la imagen (soy un usuario nuevo), pero dice: «Los registros de nuevas cuentas no están permitidos en este momento».
No estoy seguro de qué otras opciones existen que podrían resolver el problema. He probado una infinidad de combinaciones (no puedo listarlas todas aquí) y aún no he encontrado un resultado que funcione.
Creo que no se captó mi intención. El flujo de inicio de sesión con OAuth2 funciona con normalidad, pero quiero mantenerlo habilitado mientras desactivo los nuevos registros. La configuración de OAuth2 y el registro por correo electrónico parecen estar vinculados, por lo que no puedo «simplemente habilitar» OAuth2 dejando deshabilitado el registro por correo electrónico.
¿Qué quieres que ocurra si alguien que no ha sido invitado intenta iniciar sesión?
¡Ah! ¿Estás diciendo que esto es lo que ve alguien si intenta responder a un enlace de invitación?
Quieres aceptar solo a personas invitadas. Quieres que esas personas se vean obligadas a iniciar sesión con Clove. ¿Correcto? Eso parece haber sido lo que ocurrió en tu ejemplo.
Creo que la opción solo invitaciones, junto con deshabilitar todos los tipos de inicio de sesión excepto Clove, hará lo que buscas. Las personas que no tengan cuentas en Discourse verán el diálogo de “solo invitaciones” que muestras. Las personas que hayan sido invitadas deberían poder iniciar sesión mediante la autenticación OAuth de Clove.
Una explicación adicional puede ser útil para transmitir el objetivo:
Estoy configurando una comunidad semiprivada con tres tipos de usuarios: miembros del personal (inicio de sesión con correo electrónico), usuarios de la aplicación (SSO proporcionado vía OAuth2) y invitados especiales (correo electrónico, no usuarios de la aplicación). Quiero requerir invitaciones para los invitados especiales (permitiéndoles iniciar sesión con correo electrónico), pero quiero tratar a los usuarios de OAuth2 como «confiables», por lo que no necesitan una invitación. La razón de esto es que tener la cuenta necesaria para realizar el inicio de sesión con OAuth2 exitosamente significa que eres confiable.
Puedo configurar correctamente los inicios de sesión basados en correo electrónico con invitaciones, pero eso afecta los inicios de sesión con OAuth2, ya que también requieren una invitación. No quiero que necesiten ni vean una invitación; tienen confianza por el hecho de tener la cuenta de SSO.
Creo, aunque no estoy seguro, que external auth skip create confirm podría ser lo que buscas. La descripción menciona solo SSO, pero creo que ahora también funciona para OAuth. Ayudé a otra persona a configurar un sitio que omite el cuadro de diálogo de creación para su configuración de OAuth2 y creo que ese fue el truco.
Ah. Sí. Maldita sea. Mi siguiente suposición es que tendrías que hacer un fork del plugin oauth2 y hacer que anule la configuración de solo invitaciones.
Gracias @pfaffman, eso parece ser lo que he llegado a aceptar. No creo que sea posible en Discourse alojado, ¿verdad? Si no, tal vez tenga que buscar otra solución para ello.