¿Confirmar una combinación correcta de Usuario+Contraseña a través de la API?

¡Hola a todos,

Necesito orientación, por favor, sobre cómo iniciar sesión de los usuarios en un sitio web remoto utilizando su usuario y contraseña actuales de Discourse.

No creo que necesite SSO… y esto es por qué.

Primero, algo de contexto sobre mi caso de uso actual y por qué no me gusta.

Actualmente tengo un sitio web en https://www.example.com que tiene un botón de inicio de sesión.

Cuando un usuario hace clic en el botón de inicio de sesión, se le pide que ingrese su nombre de usuario y dirección de correo electrónico actuales de Discourse (nota: usuario + correo electrónico, NO una contraseña).

Luego tomo estas dos piezas de información y realizo una solicitud de API GET a:

"https://mydiscourse.comm/admin/users/list/all.json?email=" + strEmail

En los encabezados de esta llamada a la API que hago, incluyo el nombre de la cuenta de usuario “sistema” y la clave de API asociada para el usuario del sistema.

Si se encuentra una coincidencia de dirección de correo electrónico, comparo el nombre de usuario que me dieron en mi formulario con el nombre de usuario devuelto en la respuesta de la API para ese correo electrónico dado.

Si coincide, entonces considero que este usuario ha iniciado sesión en mi sitio en https://www.example.com.

Construí esto hace tres o cuatro años y todavía funciona perfectamente hasta el día de hoy.

Pero…

  1. Es muy confuso para un usuario ingresar una combinación de nombre de usuario + dirección de correo electrónico en un formulario de inicio de sesión
    – La mayoría de la gente siempre ingresa usuario + contraseña
    – A pesar de las masivas instrucciones en todo mi formulario, la gente todavía se equivoca naturalmente

  2. No es seguro
    – Solo necesitas conocer el nombre de usuario y su dirección de correo electrónico y, armado con esas dos (triviales) piezas de información, puedes iniciar sesión en https://www.example.com “como ellos” con muy poco esfuerzo.

Lo que me gustaría hacer es que el usuario haga clic en el botón de Inicio de sesión en https://www.example.com e ingrese su usuario + contraseña actuales de Discourse (¡en lugar de usuario + correo electrónico!).

Mi sitio web en example.com luego realizaría una rápida solicitud de API a mi Discourse, confirmaría que la combinación de usuario/contraseña proporcionada es correcta y devolvería su ID de usuario actual de Discourse.

Espero que esto tenga sentido :grimacing:

He estado por toda la documentación de la API y, por más que lo intento, no logro encontrar un simple punto final de “inicio de sesión”? :thinking:

No necesito ni quiero iniciar o cerrar la sesión de las personas en mi propio Discourse, simplemente necesito confirmar que su usuario/contraseña es correcta.

Cualquier indicación, orientación, enlace o consejo será muy bienvenido :blush:

No hay ninguna ruta de API que devuelva la contraseña en texto plano de un usuario, por lo que no creo que este enfoque funcione. Por tu descripción, parece que quieres usar Discourse como proveedor de SSO para tu sitio web. Eso podría hacerse funcionar. Los detalles sobre cómo configurarlo están aquí: Use Discourse as an identity provider (SSO, DiscourseConnect).

Gracias @simon: un vistazo rápido a ese enlace sugiere que podría ser exactamente lo que necesito.

Me pondré a leer :nerd_face: