Flujo de Conexión de Discourse

Estamos buscando construir una comunidad utilizando las API de Discourse. Estamos teniendo un problema con el flujo.

Nuestro Front End es una aplicación de React y el BE se basa en NodeJS con una arquitectura de microservicios. Gestionamos todo el flujo de autenticación por nuestra cuenta.

Según mi entendimiento de Discourse Connect, es:

  1. El FE crea el payload, con un nonce, información del usuario y luego realiza una llamada a example.com/session/SSO?sso=xx&sig=xx
  2. Discourse luego realiza una llamada de regreso a discourse_connect_url, donde validaré el payload y luego devolveré la URL de redirección y los usuarios serán redirigidos a Discourse.

Sin embargo, cuando creo el payload con información del usuario, no puedo propagarlo desde mi Front End a Discourse y luego al Backend. ¿Alguien puede ayudarme o mi entendimiento es correcto? Busqué en el foro también con soluciones esperadas pero sin éxito.

Tenga en cuenta que cuando codifico información de usuario desde el BE, puedo iniciar sesión de usuarios en Discourse.

Quiero que nuestro sitio web sea el proveedor de autenticación para Discourse y que propague la información del usuario desde el Front End al BE. ¿Alguien puede ayudarme con el flujo o quizás con algunos ejemplos para Javascript?

1 me gusta

Hola Ankit:
El flujo es en realidad el inverso de lo que describiste. Cuando configuras Discourse Connect en tu sitio:

  1. Hacer clic en el botón de inicio de sesión te llevará a discourse_connect_url con 2 parámetros get: sso y sig.
  2. El usuario ingresará sus credenciales en discourse_connect_url y será autenticado por tu sitio. Si la autenticación es exitosa, deberás decodificar el sso y seguir los pasos adicionales descritos en el tema de Discourse Connect.

Tengo un problema de flujo similar, no quiero que mi usuario acceda a Discourse y haga clic en iniciar sesión, necesito que mi usuario acceda a mi plataforma y haga clic en el botón Acceder a Discourse y acceda a Discourse de forma transparente.

¿Es posible que mi plataforma genere un ‘nonce’ para mi usuario usando una API de forma segura, sin que tengan que acceder a Discourse antes y hacer clic en iniciar sesión?

Nota: Puedo hacer esto yo mismo accediendo a Discourse y haciendo clic en el botón por ellos, sin que lo sepan, pero esto no es seguro para la aplicación.

La opción más sencilla es que el botón “Acceder a Discourse” sea un enlace a /login en el foro.