Autenticación usando lógica de terceros (personalizada)

Estoy intentando escribir un plugin que permita iniciar sesión en Discourse con una lógica “personalizada”. Sin nombre de usuario ni contraseña, tal vez un número PIN o un token de un solo uso que yo genere.

Estoy dispuesto a escribir la lógica, etc., pero soy nuevo en el desarrollo de Discourse, así que estoy tratando de entender si eso es posible.

He revisado la mayoría de los plugins de autenticación disponibles y la mayoría simplemente utilizan una gem de uso común y unas 10-20 líneas de código para que funcione.
Lo cual es genial, sin embargo, en mi caso necesito una lógica completamente personalizada.

Solo me pregunto si hay algo por ahí que pueda usar como ejemplo, digamos autenticación con nombre de usuario/contraseña o algo similar.
O si alguien puede indicarme la dirección correcta.

El objetivo era aprovechar la misma funcionalidad que obtienes al agregar otras cuentas (Google, Facebook, etc.).
Simplemente agregar otra cuenta “relacionada” contra la cual autenticarse. Una relación uno a uno entre el usuario de Discourse y mi “Token” (si eso ayuda).

Esto es un ejercicio de aprendizaje; tengo una comunidad de Discourse muy activa y me encantaría poder contribuir.

¡Gracias!

¿Quizás podrías usar un servicio que proporcione el tipo de autenticación que buscas, pero que se comunique con Discourse mediante un protocolo estándar? (¿Como OpenID Connect?)

¿Este método alternativo está destinado a relacionarse con cuentas de usuario existentes, o es alguna forma de inicio de sesión autorizado anónimo? Si está vinculado a una cuenta existente, entonces quizás te convenga utilizar un servicio de identidad externo como Keycloak. Por lo que sé, puede soportar OTP (contraseña de un solo uso) y una variedad de otros métodos. Aunque quizás no sea más fácil.