Problemi di reindirizzamento SSO

Sto integrando Discourse con Wordpress tramite il plugin WP Discourse e utilizzando Wordpress come provider di Discourse Connect, tuttavia mi sto imbattendo in un problema in cui un utente non autenticato che visita l’istanza Discourse e fa clic su qualsiasi pulsante che richiede l’accesso viene bloccato in un loop di reindirizzamento infinito.

Il comportamento desiderato è: l’utente fa clic sul pulsante di accesso di Discourse → l’utente viene reindirizzato alla pagina di accesso di Wordpress → l’utente si autentica e viene reindirizzato alla pagina Discourse su cui si trovava prima. Attualmente non ci sono problemi se un utente è già autenticato e visita l’istanza Discourse dopo essere stato autenticato. Questo errore si verifica quando un utente non autenticato visita prima l’istanza Discourse.

Il comportamento attuale è: l’utente fa clic su un pulsante di accesso di Discourse l’utente viene reindirizzato a https://[istanza-discourse]/session/sso?return_path=%2Ft%2F[pagina-discourse-su-cui-l-utente-si-trovava-prima]%2F16 l’utente viene reindirizzato a https://[sito-wordpress]/?sso=[token-SSO]%3D%3D&sig=[token-firma] l’utente viene reindirizzato a https://[sito-wordpress]/?sso=[token-SSO]%3D%3D&sig=[token-firma]&redirect_to=%2F%3Fsso%[token-SSO]%253D%253D%26sig%3D[token-firma] e il ciclo continua ricorsivamente finché il browser non genera un errore “troppi reindirizzamenti”

Non sono riuscito a trovare una discussione con una soluzione per questo, la più vicina è

ma abbiamo SSL abilitato ovunque e questo problema si verifica su tutti i browser. Suggerimenti su come risolvere questo problema?

Chrome 97 è stato rilasciato con un bug relativo alla gestione dei cookie durante i reindirizzamenti, che è noto per interrompere DiscourseConnect in alcune circostanze. In attesa che Google rilasci una correzione, abbiamo aggiunto una soluzione temporanea a Discourse. L’aggiornamento del tuo sito Discourse all’ultima versione dovrebbe risolvere il problema. Puoi provare e farci sapere se funziona?

(La soluzione temporanea è stata aggiunta in questo commit)

3 Mi Piace

Grazie per la risposta, ho appena controllato per assicurarmi che fossimo all’ultima versione ma purtroppo l’errore è ancora lì. Ospitiamo il nostro forum con Discourse, quindi dovrebbe aggiornarsi regolarmente. L’errore è ancora lo stesso di prima, c’è qualcos’altro che dovrei provare? Ci sono impostazioni all’interno dell’hosting Discourse che potrebbero causare questo?

1 Mi Piace

Ehi @dbwhite, potresti per favore

  1. abilitare i “Log dettagliati di DiscourseConnect” nelle impostazioni “DiscourseConnect” di WP Discourse
  2. ricreare il problema
  3. andare su “Log” in WP Discourse e scaricarli

Poi inviami i log in privato e darò un’occhiata più da vicino a cosa sta succedendo. Nota che i log non contengono alcuna informazione di identificazione personale o segreti.

2 Mi Piace

@angus, @dbwhite una possibile causa del problema potrebbe essere se il sito WordPress utilizza Woocommerce. Woocommerce aggiunge un reindirizzamento del login che può causare problemi con DiscourseConnect. Tali reindirizzamenti possono essere sovrascritti installando e attivando GitHub - scossar/wp-discourse-woocommerce-support: Integrates the wp-discourse plugin with WooCommerce, o aggiungendo gli snippet di codice forniti nel readme di quel plugin al tema del sito.

Il problema di reindirizzamento descritto qui sembra simile a quello che ho visto in passato con altri siti Woocommerce. In quei casi, è stato risolto installando il plugin WordPress che ho collegato.

Se questa è la causa del problema, mi chiedo se dovremmo considerare di aggiungere il supporto Woocommerce direttamente al plugin WP Discourse.

4 Mi Piace

Sarebbe estremamente utile.

Non sto riscontrando esattamente il problema descritto dall’OP, ma sto sbattendo contro un muro nel reindirizzare i nostri utenti al punto in cui si trovavano, nei forum di Discourse, dopo il login :disappointed_face:

L’installazione e l’attivazione del plugin WP Discourse WooCommerce Support risolvono il problema per te?

Volevo solo pubblicare un aggiornamento qui, si scopre che uno dei plugin che stavamo usando stava interferendo con il valore restituito della funzione wp_login_url() di Wordpress. Una volta rimosso quel plugin, tutto ha funzionato come previsto!

1 Mi Piace

Un post è stato diviso in un nuovo argomento: Errore Rails durante l’uso di DiscourseConnect e Wordpress