Conectar SSO: Error de inicio de sesión sso_login

He investigado un poco mi problema y creo que estoy cerca, pero quizás necesite un pequeño empujón en la dirección correcta.

Básicamente, estoy intentando integrar Discourse como una implementación headless en mi proyecto de React, que ya tiene usuarios autenticados en su propia base de datos.

Para hacer esto, cuando el usuario inicia sesión en la página de React, realizará un SSO para que el usuario se autentique con la API de Discourse, de modo que podamos llamar a las funciones apropiadas, etc.

Entonces, primero estoy obteniendo datos de mi URL de Discourse y evitando cualquier redirección de la siguiente manera:

const response = await fetch('https://forum.mysite.com/session/sso', {
    method: 'GET',
    redirect: 'manual', // Evitar el seguimiento automático de redirecciones
  });

Luego hago toda la validación y envío el Payload con la información del usuario al backend usando:

const loginResponse = await fetch(newurl.toString(), {
    method: 'GET',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
    },
    redirect: 'manual',
  });

Y el formato, la firma y todo lo demás parecen correctos. Pero me da un error. Así que comenté esto y copié la URL generada en mi navegador para ver qué pasaba y me da esto:

Registro detallado de SSO: Nonce incorrecto, fue generado en una sesión de navegador diferente o ha expirado add_groups: admin: avatar_force_update: avatar_url: bio: card_background_url: confirmed_2fa: e

Así que, después de investigar un poco, creo que estas respuestas están cerca de ayudarme, pero todavía no tengo muy claro qué cambiar para mi configuración y force_https parece que ya no es una configuración que podamos manipular (ni siquiera estoy seguro de lo que hace):

Siento que podría ser causado por diferentes sesiones de navegador, pero no lo sé. Creo que estoy cerca de conseguir que esto funcione, solo necesito un pequeño empujón. Cualquier información sería útil. ¡Gracias!

Ese parece ser el problema. Deberías poder solucionarlo habilitando deshabilitando la configuración del sitio discourse_connect_csrf_protection. Es una configuración de sitio oculta, que por defecto está establecida en true. Necesitarás habilitarla desde la consola de Rails.

Se usa en el código aquí:

Si está configurado en true por defecto, creo que quieres decir que debería configurarlo en false. Lo intentaré ahora.

1 me gusta

Parece que esto lo ha resuelto. ¡Gracias por esa información! Probablemente nunca lo habría descubierto, jaja.

1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.