Problema con Drupal Discourse SSO

Ciao,

sono nuovo di Discourse e sto cercando di configurare il mio forum insieme a un sito Drupal, utilizzando il modulo SSO di Discourse. Ho seguito le istruzioni del modulo e questo argomento, ma purtroppo l’URL “mydrupalwebsite.com/discourse/sso” restituisce un errore 404.

Da quando è stato pubblicato quell’argomento, sono state introdotte nuove impostazioni per il modulo, tra cui una chiave API, ma non so come utilizzarla.

Qualcuno ha lo stesso problema?

Grazie

Puoi condividere un link al modulo Drupal che stai utilizzando? Se si tratta del modulo collegato in questo post, è stato aggiornato l’ultima volta nel marzo 2015, quindi è molto probabile che ci siano problemi con esso.

Questo modulo Drupal SSO è stato aggiornato nel dicembre 2019: Discourse SSO | Drupal.org. Vale la pena provarlo.

Sto usando il secondo, con l’ultima versione.

Ho configurato il segreto SSO e l’URL SSO, e quando provo ad accedere, vedo che ci sono state alcune reindirizzamenti come previsto, ma /discourse/sso restituisce una pagina 404.

Il modulo dispone di documentazione? La procedura normale per abilitare l’SSO consiste nell’aggiungere l’endpoint SSO all’impostazione del sito Discourse sso url, inserire una chiave segreta SSO nell’impostazione del sito sso secret, quindi abilitare l’impostazione del sito enable sso. Quando si configura per la prima volta, probabilmente vorrete anche abilitare l’impostazione del sito verbose sso logging. Con questa impostazione abilitata, riceverete dettagli sugli errori SSO nei registri degli errori del vostro sito (trovabili in Admin / Logs / Error Logs).

Una volta abilitate le impostazioni di Discourse, dovrete assicurarvi che l’URL del sito Discourse e la sso secret siano aggiunti al sito del provider SSO.

Dal messaggio di errore che state ricevendo, sembra probabile che l’impostazione del sito enable sso non sia stata abilitata sul vostro sito Discourse.

Se riscontrate problemi nell’accesso al vostro sito Discourse dopo aver abilitato l’SSO, in qualità di amministratore potete aggirare il login SSO andando su /u/admin-login sul vostro sito Discourse. Inserite il vostro indirizzo email amministrativo nel modulo presente nella pagina. Vi verrà inviato un link di accesso monouso.

Grazie mille per il tuo aiuto. Purtroppo, il modulo non ha altra documentazione oltre a quella presente nella sua pagina del progetto.

Ho controllato solo enable sso, verbose sso logging, ho compilato il campo sso url con “mywebsite/discourse/sso” e il campo sso secret.

Ho seguito le linee guida del modulo Drupal e inserito l’URL del forum Discourse e il segreto SSO nei campi corrispondenti.

Tuttavia, ricevo ancora un errore 404 quando provo ad accedere, con questo URL:
https://mywebsite/discourse/sso?sso=bm9uY2U9MTJlMmI4ZWNjNzU4ZGE3YTg5ZWIwZDI2MmM5ZTUzOWEmcmV0dXJuX3Nzb191cmw9aHR0cHMlM0ElMkYlMkZmb3J1bXMuc2VnYS1tYWcuY29tJTJGc2Vzc2lvbiUyRnNzb19sb2dpbg%3D%3D&sig=96726cef3a6bb69a0863f66fb0e09ce3edb1ea77f3fd2d9e69cdaf932aede6a2

Ecco il log: verbose_sso.txt (5,9 Ko)

Se il problema non è nelle mie impostazioni su Discourse, tornerò a contattare lo sviluppatore del modulo.

Grazie ancora.

Ho dato un’occhiata alla voce di log, ma non mostra l’errore: è semplicemente la voce di log relativa all’avvio del processo SSO su Discourse. Dovrebbe esserci un’altra voce di log creata poco dopo quella che mostra effettivamente l’errore. Puoi provare a ripetere il processo? Dovrebbero esserci voci di log SSO dettagliate per ogni tentativo di accesso. La prima voce mostra l’avvio del processo su Discourse, mentre la seconda riguarda come Discourse ha gestito la risposta ricevuta dal tuo sito web.

È possibile che esista un altro messaggio di errore pertinente che non inizia con il testo Verbose SSO log. Controlla le voci di log relative al momento esatto in cui hai effettuato la richiesta SSO.

Ho riprovato e ho ricevuto tre messaggi di log identici, uguali al precedente. Se seguo questa logica, deve significare che il mio sito web non risponde affatto.

Sì, mi sembra corretto. Potresti provare a esaminare le richieste effettuate aprendo l’ispettore web del tuo browser e andando alla scheda “Rete”. Seleziona l’opzione “Mantieni i log” in quella scheda e fai clic sul link di accesso sul tuo sito Discourse.

Ciao,

Un piccolo aggiornamento su questo argomento: il modulo Discourse SSO è stato corretto e non fa più crashare il sito.

Tuttavia, non funziona ancora perché è impossibile effettuare correttamente il logout una volta effettuato l’accesso. È stato aperto un altro problema, nel caso qualcuno volesse prenderlo in esame.

Grazie per aver fatto seguito a questo! Fateci sapere se il nuovo problema con il modulo viene risolto.

Ok, quindi sto continuando con le mie indagini.

C’è qualche motivo per cui non potrei accedere a Discourse tramite SSO con account diversi? Forse un’impostazione dei cookie?

Quando SSO è abilitato, se esco e provo a accedere di nuovo, vengo automaticamente riconnesso come il primo account.

Non ho alcun problema quando disabilito SSO, però.

Sembra che il logout da Discourse non sia sincronizzato con il logout dal sito del provider SSO. Dato che sei ancora connesso al provider SSO, la prossima volta che clicchi sul link di accesso di Discourse, verrai autenticato in base alla tua connessione al provider SSO.

La configurazione del sito “logout redirect” di Discourse può essere utilizzata per disconnettere gli utenti dal sito del provider SSO. Quando un utente effettua il logout da Discourse, verrà automaticamente reindirizzato a quell’URL. Il provider SSO dovrà gestire l’URL per disconnettere l’utente. Tuttavia, non conosco abbastanza Drupal per sapere cosa sia necessario fare per implementare questa funzionalità.

Ok, problema risolto. Per riassumere:

  • Questo modulo funziona correttamente, c’è solo un bug relativo all’immagine del profilo utente di Drupal, ma è in attesa una patch,
  • Questo post contiene un errore riguardo alle impostazioni in Discourse: l’URL sso deve terminare con /discourse_sso, NON con /discourse/sso
  • Se desideri poter accedere con diversi account, devi impostare http://mywebsite/user/logout come reindirizzamento di logout e disabilitare Ghostery nel tuo browser per il sito Discourse se stai utilizzando questo plugin.

Grazie per il tuo aiuto, @simon!