Configura l'autenticazione singola (SSO) con WP Discourse e DiscourseConnect

Il plugin WP Discourse ti permette di configurare DiscourseConnect in WordPress, in modo che i tuoi utenti possano utilizzare il proprio account WordPress per accedere a Discourse, o il proprio account Discourse per accedere a WordPress. Prima di poter configurare DiscourseConnect, devi prima installare il plugin WP Discourse su WordPress e collegarlo al tuo Discourse. Se sei pronto per iniziare, guarda questo breve video oppure segui le istruzioni riportate di seguito.

Prossimo passo

Una volta configurato DiscourseConnect, potresti voler dare un’occhiata ai seguenti argomenti:


Istruzioni

Impostazione di una chiave segreta

Sia che tu stia configurando WP Discourse come provider o client di DiscourseConnect, devi impostare una chiave segreta. Vai alla scheda “DiscourseConnect Secret Key” e inserisci una stringa di testo (sono consentiti numeri, lettere e simboli), lunga almeno 10 caratteri. Utilizza le stesse regole che useresti per creare una password robusta. Assicurati di salvarla quando hai finito.

Quindi, apri le impostazioni del sito Discourse (nel pannello Amministratore) e cerca “discourse connect”. Una delle impostazioni in alto sarà discourse connect secret. Incolla lì la chiave segreta che hai impostato in WP Discourse e clicca sul segno di spunta verde.

Accesso a Discourse con WordPress (Provider DiscourseConnect)

Assicurati che WP Discourse sia collegato al tuo Discourse e che la tua chiave segreta sia impostata ( :point_up: ) prima di seguire queste istruzioni.

Per consentire ai tuoi utenti di accedere a Discourse utilizzando le proprie credenziali WordPress, devi configurare WP Discourse come provider di DiscourseConnect. Vai alla scheda DiscourseConnect Provider nelle impostazioni di WP Discourse, seleziona la casella di controllo Enable DiscourseConnect Provider e salva le impostazioni.

Successivamente, vai alle impostazioni del sito Discourse e inserisci “discourse connect” nella casella di ricerca per visualizzare tutte le tue impostazioni DiscourseConnect. Per prima cosa, imposta discourse connect url sull’URL del tuo WordPress. L’ultimo passo è selezionare enable discourse connect. Assicurati di essere pronto prima di selezionarlo, perché una volta fatto, i tuoi utenti potranno accedere a Discourse solo tramite WordPress.

Una volta abilitato DiscourseConnect in Discourse, per verificare che sia configurato correttamente, apri una finestra di navigazione in incognito nel tuo browser. Mantieni la finestra normale (non in incognito) del browser collegata a un account amministratore (nel caso qualcosa vada storto e tu debba modificare le impostazioni). Nella finestra in incognito noterai che il pulsante ‘Iscriviti’ di Discourse non appare più. Clicca sul pulsante ‘Accedi’. Dovresti vedere una schermata di accesso WordPress. Inserisci le tue credenziali WordPress per accedere. Dovresti quindi essere reindirizzato a Discourse e risultare loggato.

Se qualcosa va storto, o noti che qualcosa non è del tutto corretto, torna alla tua finestra del browser normale e disabilita enable discourse connect per permettere ai tuoi utenti di accedere normalmente a Discourse. Se per qualche motivo non sei più loggato con il tuo account amministratore nella finestra normale del browser, consulta la sezione “Disabilita DiscourseConnect tramite la console di Discourse” nella risoluzione dei problemi qui sotto per riaccedere al tuo Discourse.

Verifica dell’email

Discourse si aspetta che tutti gli indirizzi email degli utenti siano verificati, mentre WordPress non forza gli utenti a verificare il proprio indirizzo email. In una configurazione predefinita di WordPress, è abbastanza facile verificare l’email di un utente durante il processo di registrazione, ma se un sito utilizza un plugin che crea un modulo di registrazione lato frontend – ad esempio, il modulo di registrazione che può essere aggiunto con WooCommerce – il plugin WP Discourse non è in grado di verificare l’email dell’utente.

Se le email degli utenti non vengono verificate in WordPress, prima che un utente WordPress possa accedere al forum, dovrà rispondere a un avviso di verifica email inviato da Discourse. Il plugin dispone di alcuni filtri che possono essere utilizzati per sovrascrivere questo comportamento. Dai un’occhiata al codice, partendo da qui, per i dettagli.

Rimozione del flag require_activation

Se sei sicuro che WordPress stia autenticando gli indirizzi email, puoi indicare a Discourse che non ne ha bisogno. Per rimuovere completamente il flag require_activation, aggiungi qualcosa di simile al tuo WordPress (ad esempio, nel file functions.php del tuo tema):

// Sostituisci 'my_prefix' con il prefisso del tuo sito.

add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification' );
function my_prefix_discourse_email_verification( $require_activation ) {
    return false;
}

Per rimuovere il flag require_activation per utenti specifici, usa qualcosa di simile:

// Sostituisci 'my_prefix' con il prefisso del tuo sito.

add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification', 10, 2 );
function my_prefix_discourse_email_verification( $require_activation, $user_id ) {
    $user = get_userdata( $user_id );
    if ( /* una condizione testata su $user */ ) {

        return true;
    }

    return false;
}

Webhook Userdata

Questo webhook esiste per motivi storici: ora è possibile riempire automaticamente il campo Nome Discourse utilizzando l’opzione del provider DiscourseConnect “Crea o sincronizza gli utenti Discourse all’accesso”.

Il webhook Update Userdata (nel pannello delle impostazioni “Webhooks”) può essere utilizzato quando WordPress è il provider di DiscourseConnect per il tuo Discourse. Il webhook riempie automaticamente il campo Nome Discourse dell’utente su WordPress.

Creazione di un link di accesso DiscourseConnect

Se hai abilitato l’opzione provider DiscourseConnect, puoi aggiungere un link di accesso DiscourseConnect al tuo sito WordPress creando un link con la seguente struttura:

<a href="https://discourse.example.com/session/sso?return_path=/">Community</a>

Imposta il valore di return_path alla pagina del tuo forum su cui desideri che l’utente atterri. Puoi aggiungere un link di accesso SSO a un menu di WordPress aggiungendo un URL con questa struttura come Link personalizzato nella sezione Menu della dashboard di WordPress.

Accesso a WordPress con Discourse (Client DiscourseConnect)

Per abilitare il tuo sito a funzionare come client di DiscourseConnect per Discourse, clicca sulla scheda DiscourseConnect Client. In quella pagina, seleziona le opzioni Enable DiscourseConnect Client e Add Login Link.

Ora vai alla pagina Amministratore/Impostazioni di Discourse e cerca ‘discourse connect’ per visualizzare tutte le tue opzioni DiscourseConnect.

  • seleziona l’impostazione ‘enable discourse connect provider’
  • copia la tua DiscourseConnect Secret Key da WordPress nel campo ‘secret’ dell’impostazione ‘discourse connect provider secrets’ di Discourse. Nel campo ‘domain’ di quell’impostazione, inserisci il dominio del tuo sito WordPress. Quindi clicca sul segno di spunta verde per salvare le impostazioni.

Una volta completato, l’impostazione ‘discourse connect provider secrets’ su Discourse dovrebbe apparire così (con il dominio impostato sul tuo dominio WordPress):

Discourse dovrebbe ora funzionare come provider di DiscourseConnect per il tuo sito WordPress.

Apri il tuo sito WordPress in una finestra di navigazione in incognito nel tuo browser. Quando ora vai alla tua pagina di accesso, dovresti vedere un link ‘Accedi con Discourse’ sotto il modulo di accesso. Cliccalo e verrai portato al modulo di accesso di Discourse. Accedi lì e verrai reindirizzato alla pagina di accesso di WordPress con un avviso che dice che devi sincronizzare il tuo account con Discourse. Segui le istruzioni nell’avviso per collegare i tuoi account e dovresti ora essere in grado di accedere al tuo sito WordPress tramite Discourse.

Nota: questo comportamento interessa solo gli utenti che hanno già account sia su WordPress che su Discourse. I nuovi account WordPress creati tramite DiscourseConnect saranno in grado di accedere liberamente a WordPress la prima volta che cliccheranno sul link ‘Accedi con Discourse’. Per rendere più facile agli utenti con account esistenti sia sul tuo sito WordPress che sul tuo forum Discourse accedere tramite Discourse, seleziona la casella di controllo Sync Existing Users by Email nella scheda delle opzioni DiscourseConnect Client.

Sincronizzazione dell’uscita da Discourse

Quando DiscourseConnect è abilitato, l’uscita da Discourse può essere sincronizzata con il tuo sito WordPress aggiungendo l’home_url del tuo sito con il parametro di query request=logout all’impostazione del sito Discourse logout redirect. L’impostazione si trova nella sezione impostazioni di Discourse in /admin/site_settings/category/users. Ecco un esempio di URL ‘logout redirect’:

http://example.com/?request=logout

Risoluzione dei problemi

Se stai riscontrando problemi nell’utilizzo di WordPress come provider di DiscourseConnect per il tuo forum, le prime cose da controllare sono:

  • che le chiavi segrete DiscourseConnect impostate su WordPress e Discourse siano identiche
  • assicurati di aver selezionato Enable DiscourseConnect Provider sul tuo sito WordPress
  • assicurati di aver inserito l’URL discourse connect url corretto su Discourse.

“Errore di accesso” durante l’uso di DiscourseConnect

Se gli utenti ricevono un messaggio “Errore di accesso” quando tentano di accedere a Discourse, consulta

Debug and fixing common DiscourseConnect issues.

Disabilitazione di DiscourseConnect

Se DiscourseConnect non funziona per te, puoi disattivarlo disabilitando l’impostazione del sito enable discourse connect. Se non sei ancora loggato con un account amministratore da qualche parte per disattivarlo, non preoccuparti, ci sono alcuni modi per rientrare e disattivarlo.

Accesso tramite /users/admin-login

Apri una nuova finestra del browser e inserisci l’URL del tuo forum nella barra degli indirizzi seguito da /users/admin-login, ad esempio:

https://community.mysite.com/users/admin-login

Dovresti vedere un campo di input che ti chiede la tua email di amministratore. Dopo aver inviato la tua email, riceverai un’email con un link che ti consentirà di accedere direttamente al tuo account amministratore. Puoi quindi andare alle impostazioni del sito e disabilitare enable discourse connect per disattivare DiscourseConnect.

Se per qualche motivo questo non funziona, non preoccuparti, puoi comunque disattivare DiscourseConnect tramite la console del server (:point_down:)

Disattivazione di DiscourseConnect tramite la console del server

Se non sai cos’è la console del server, o non hai accesso ad essa, contatta il tuo provider di hosting per assistenza. Dopo esserti connesso via SSH al tuo server, i comandi che devi eseguire sono i seguenti:

cd /var/discourse
./launcher enter app
rails c
SiteSetting.enable_discourse_connect=false
exit
exit
11 Mi Piace

E se non ho quelle opzioni nel mio Discourse? :confused:

Ciao @LosHunterros, benvenuto in Meta!

Discourse Connect non è incluso nel piano di hosting di base
Screenshot_20240507_204846_Chrome

4 Mi Piace

Grazie per la tua risposta

1 Mi Piace

Ora ho bisogno di un livello 101. O un semplice sĂŹ o no.

Ho bisogno di un facile accesso da WordPress al mio forum per quei clienti. PoichĂŠ hanno creato un account in WordPress, lo userei come provider.

Ma ora ho problemi con l’IA di Discourse. Ho capito che DiscourseConnect dirotta tutti gli altri accessi, come Google, Microsoft e locali. Ma l’IA è davvero fortemente sicura che non sia vero, se imposto discourse connect allowed redirect domains.

Bene, l’ho fatto. E ancora viene reindirizzato a Wordpress senza altre opzioni di accesso.

Quindi, ho sprecato due ore della mia vita a causa dell’allucinazione di un’IA, o ho fatto qualcosa di sbagliato? Perché se avessi ragione all’inizio e DiscourseConnect non permettesse altri accessi, lo rimuoverei subito. Vivere senza l’accesso a Google non è un’opzione in questo angolo d’Europa.

Il tuo pensiero iniziale era giusto. L’IA si sbaglia: Vedi oltre.

Purtroppo, sĂŹ.

1 Mi Piace

Ho seguito la guida di configurazione fino al punto in cui l’SSO dovrebbe funzionare. Quando visito il mio sito Discourse in una finestra di navigazione in incognito, vengo immediatamente reindirizzato alla pagina principale di WordPress con una lunga stringa di query nell’URL e nessuna opzione di accesso visibile.

Questo è il comportamento previsto in questa fase?
Devo ora solo finire di costruire il lato WordPress (accesso/registrazione, ecc.), o ho configurato qualcosa in modo errato?

Ciao Mike, benvenuto. Dovresti essere reindirizzato alla pagina di accesso standard di Wordpress. La prima cosa che mi viene in mente è che il tuo tema (o un plugin) sta fornendo una pagina di accesso personalizzata. Come appare normalmente la tua pagina di accesso?

Ciao Angus, grazie! :slight_smile:

Questa è un’installazione pulita sia di WordPress che di Discourse, con il tema Twenty Twenty-Five attivo. Ho seguito le tue istruzioni video passo dopo passo, ma quando accedo a Discourse in una finestra di navigazione in incognito, viene reindirizzato al sito WordPress e atterra sulla pagina iniziale del tema, non su una schermata di accesso.

Il sito WordPress è attualmente protetto da privacy a livello di directory poichÊ si trova in un ambiente di sviluppo: potrebbe questo influire sul reindirizzamento alla normale pagina di accesso?

Ciao Mike, ecco un piccolo video che ho appena registrato che mostra un’installazione funzionante sul codice attuale.

Controlla la tua configurazione rispetto a ciò che mostro nel video e, se sei sicuro di averla impostata allo stesso modo e non funziona ancora, procederemo con un processo di eliminazione per vedere se riusciamo a individuare il motivo.

1 Mi Piace

Ciao Angis,

Grazie mille per aver realizzato quel video, supporto fantastico!

Ho fornito screenshot di ogni sezione (con informazioni sensibili sfocate)

image

image

image

Su quello sopra, questo non era effettivamente selezionato (ops), ma quando visito il forum su un browser in incognito, ora reindirizza automaticamente a /wp-login.php - non mi vengono mostrati il forum e il pulsante di accesso come a te.

image

Non mi preoccupa molto che ora vada direttamente alla pagina di accesso di wp, ma avere accesso diretto alla visualizzazione del forum è sempre un vantaggio!

@angus Ho capito… Durante l’iniziale “cosa sto facendo”, ho bloccato la community con questo;

image

Scuse per essere stato un PITA, è la modalità di avvio :dashing_away:.

Grazie ancora per l’incredibile supporto - sono sicuro che tornerò.

2 Mi Piace

Sono contento che tu abbia capito!

Ciao Angus, mi chiedo se puoi aiutarmi con questo problema che sto riscontrando, non ho ricevuto alcuna risposta al mio argomento:

In pratica, se rendo anonimo un utente, il plugin SSO gli crea semplicemente un nuovo account. C’è un modo per disabilitare gli utenti individualmente per impedire che vengano creati nuovi account per loro, e può sincronizzarsi automaticamente quando bannno o rendo anonimo qualcuno?

Forse rendi anonimo l’utente e poi fai in modo che il suo indirizzo email sia quello dell’SSO. Oppure fai in modo che WordPress neghi l’utente (questa sembra la vera soluzione: WordPress dovrebbe negare l’utente)

Come posso fare in modo che WordPress impedisca all’utente di accedere tramite SSO? Penso che questa sia la soluzione.

Questa è una domanda su WordPress. :wink:

Ho usato internet e sembra che tu possa cambiare il loro ruolo in “nessun ruolo su questo sito”

Ah, quello che intendevo era che voglio che l’utente possa continuare a usare il sito web ma non possa creare un account forum.

Il nostro forum è separato dal sito web, quindi alcune persone bannate dalla community per comportamento di disturbo dovrebbero comunque essere in grado di utilizzare il sito web che è uno strumento SaaS.

Penso allora che dovrai sospenderli in discourse. Se hai bisogno di anonimizzare i loro contenuti, dovrai farlo e poi creare l’account che è sospeso.

Ciao @Shauny, ho risposto al tuo post di supporto originale:

1 Mi Piace