Provider SSO per WordPress: pagina vuota

Sto provando a usare WordPress come provider SSO per Discourse tramite il plugin. Quando faccio clic su Accedi nel sito del forum, vengo reindirizzato al mio sito web con un parametro URL SSO aggiunto, ma la pagina appare vuota. Il plugin dovrebbe leggere quel parametro URL ed eseguire un’azione che sta fallendo? Dovrei indirizzarlo a un percorso specifico del sito web? Non sono sicuro di quale sia il comportamento previsto, quindi non so come procedere con il troubleshooting. Non vedo errori nei log degli errori del server.

Il tuo sito utilizza la pagina di accesso predefinita di WordPress a /login.php? In caso contrario, potrebbe essere necessario aggiungere un percorso all’opzione ‘Percorso della tua pagina di accesso’ (trovata nella scheda Fornitore SSO di WP Discourse).

Hai installato Woocommerce sul tuo sito?

Non utilizza l’impostazione predefinita e l’ho specificata nel campo. Ancora nessuna fortuna, solo una pagina vuota.

E no, niente WooCommerce.

Quindi penso che forse la mia comprensione di come dovrebbe funzionare sia errata o che servano ulteriori modifiche. Durante i test ho notato che, se sono già connesso al sito web, tutto funziona come previsto. La mia aspettativa era invece che, se non fossi già connesso, il sistema avrebbe avviato il processo di accesso, ma questo non sembra accadere. In base a quanto sopra, ecco alcune domande di follow-up:

  1. Il reindirizzamento per l’accesso da Discourse dovrebbe inviare l’utente a /?sso=abcd1235… sul mio sito o a /sign-in/?sso=abcd1235… sul mio sito (incluso il mio percorso di accesso personalizzato)? Attualmente utilizza /.
  2. Ci si aspetta che il mio codice di accesso personalizzato mantenga i parametri URL dell’SSO e li includa nel reindirizzamento verso il mio sito una volta effettuato l’accesso, in modo da attivare la connessione SSO?

E ho appena realizzato che utilizza il nome utente di WordPress come nome utente di Discourse. Nel nostro caso dovremmo usare il nickname di WordPress, perché il nome utente è un valore hash basato sul provider di autenticazione di terze parti. Quindi potrebbe essere un vicolo cieco.

Sì. Dopo aver fatto clic sul pulsante “Accedi” su Discourse, gli utenti verranno reindirizzati all’URL che hai impostato come sso url su Discourse. Questo dovrebbe essere l’URL principale del tuo sito.

Se non sei già collegato a WordPress, il codice SSO ti reindirizzerà all’URL di accesso del tuo sito. Questo URL è predefinito su /wp-login.php. Può essere sovrascritto impostando l’opzione “Percorso della pagina di accesso”. Dopo l’accesso, gli utenti dovrebbero essere reindirizzati all’URL principale del tuo sito, mantenendo intatti i parametri di query inviati da Discourse.

Se ciò non funziona per te quando non sei già collegato a WordPress, il problema potrebbe essere che hai configurato un reindirizzamento di accesso sul tuo sito che sovrascrive il reindirizzamento impostato dal codice SSO di WP Discourse. Un’altra possibilità è che i parametri di query impostati da Discourse vengano rimossi dal codice di accesso del tuo sito.

Puoi utilizzare il filtro wpdc_sso_params per sovrascrivere il nome utente impostato dal plugin:

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    $params['username'] = $user->user_nicename;

    return $params;
}

Per maggiori dettagli su ciò che sta accadendo, consulta wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub.

Stavo appena guardando il codice del plugin e ho visto dove poter modificare quella parte. Utilizzare un override è un approccio molto migliore, grazie! Controllerò il mio codice di login personalizzato per vedere se e dove potrebbe interferire con il processo. Questo è molto utile, grazie ancora.