Connetti SSO: Errore di accesso sso_login

Ho fatto qualche ora di ricerca per il mio problema e penso di esserci vicino, ma potrei aver bisogno di una piccola spinta nella giusta direzione.

Sto essenzialmente cercando di integrare Discourse come implementazione headless nel mio progetto React che contiene già utenti autenticati nel suo database.

Per fare ciò, quando l’utente accede alla pagina React, eseguirà un SSO per autenticare l’utente con l’API di Discourse in modo da poter chiamare le funzioni appropriate e altro ancora.

Quindi, sto prima eseguendo una richiesta al mio URL Discourse e impedendo qualsiasi reindirizzamento in questo modo:

const response = await fetch('https://forum.mysite.com/session/sso', {
    method: 'GET',
    redirect: 'manual', // Impedisce il reindirizzamento automatico
  });

Quindi eseguo tutta la validazione e invio il Payload con le informazioni dell’utente al backend utilizzando:

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

E la formattazione, la firma e tutto il resto sembrano a posto. Ma mi dà un errore. Quindi ho commentato questo e ho copiato l’URL generato nel mio browser per vedere cosa succede e mi dà questo:

Log SSO dettagliato: Nonce non corretto, è stato generato in una sessione browser diversa o è scaduto add_groups: admin: avatar_force_update: avatar_url: bio: card_background_url: confirmed_2fa: e

Dopo un po’ di ricerca, penso che queste risposte siano vicine ad aiutarmi, ma non mi è ancora molto chiaro cosa cambiare per la mia configurazione e force_https non sembra essere un’impostazione che possiamo manipolare più (non sono nemmeno sicuro di cosa faccia):

Sento che potrebbe essere causato da diverse sessioni del browser, ma non lo so. Penso di essere vicino a far funzionare questo, ho solo bisogno di una piccola spinta. Qualsiasi informazione sarebbe utile. Grazie!

Sembra essere quello il problema. Dovresti essere in grado di aggirarlo disabilitando l’impostazione del sito discourse_connect_csrf_protection. È un’impostazione del sito nascosta, impostata su true per impostazione predefinita. Dovrai abilitarla dalla console Rails.

Viene utilizzata nel codice qui:

Se è impostato su true per impostazione predefinita, credo che tu intenda che dovrei impostarlo su false. Ci proverò ora.

1 Mi Piace

Sembra che questo abbia risolto il problema. Grazie per queste informazioni! Probabilmente non ci sarei mai arrivato lol

1 Mi Piace

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