Esta publicación trata sobre una función que definitivamente no existe, pero que quiero implementar yo mismo. Por ahora, no tengo idea de cuánto trabajo podría implicar y el objetivo de esta pregunta es intentar determinar qué se requiere.
Algunos antecedentes: estamos trabajando en una solución de autenticación sin contraseña. https://trykno.com/ La solución funciona como un servicio, lo que significa que los propietarios de los sitios que utilizan el servicio no tienen que encargarse de enviar correos electrónicos de forma segura ni almacenar secretos ni información de identificación personal.
Nos encantaría tener un foro para el proyecto y nos gustaría usar Discourse.
Sin embargo, necesitamos reemplazar el sistema de autenticación para que utilice Kno.
¿Preguntas?
¿Es el sistema de autenticación en Discourse compatible con plugins?
¿Existen suposiciones codificadas de que el usuario tenga un correo electrónico?
¿Cuál es el framework de front-end? (Veo ember-rails en el Gemfile, pero ninguna referencia a Ember en package.json)
Perdón si estas preguntas son demasiado básicas; no soy desarrollador de Ruby y cualquier orientación sobre el problema sería muy valiosa. Gracias
Sí, cada usuario debe tener un correo electrónico en Discourse. Puedes proporcionar correos electrónicos inválidos (terminados en .invalid), pero no lo recomendamos.
Ember. Pero para un plugin de autenticación, es poco probable que necesites tocar el front end.
Actualmente es posible no usar una contraseña y simplemente recibir un enlace.
Si tu objetivo es desarrollar kno, probablemente quieras hacerlo como un servidor OAuth. De esta manera, las personas podrían usarlo como una de varias fuentes de autenticación, donde SSO sea la única. Consulta Discourse OAuth2 Basic
Veo la posibilidad de que se envíe un enlace, pero Kno ofrece más, como la autenticación de dispositivo mediante WebAuthn una vez que hayas confirmado tu correo electrónico de un solo uso.
Desarrollar un servidor OAuth, lamentablemente, no cumple con los requisitos que necesitamos. (Probablemente debería escribir algo en nuestra FAQ sobre por qué es así, pero se reduce a que Kno te permite autenticarte en un dispositivo utilizando otro).
Al analizar las cosas un poco más, parece que debería poder armar una primera versión viable implementando una solución SSO específica para Discourse.
¿Es posible utilizar un único proveedor de OAuth y desactivar todos los demás tipos de autenticación?
En ese caso, también sería ideal que al hacer clic en “Iniciar sesión” se iniciara automáticamente el flujo de autenticación, es decir, sin abrir el modal de inicio de sesión ni pedirle al usuario que seleccione el proveedor.
Bueno, esto es excelente.
No, no lo he probado porque aún no he implementado el proveedor OAuth para mi servicio, y supongo que después de eso tendré que escribir un plugin, ya que será un nuevo proveedor OAuth.
Casi he terminado mi integración de SSO, así que supongo que es el momento perfecto para cambiar al uso de OAuth.