Errore "Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError" dovuto a session["omniauth.state"] mancante

Saluti,
Stiamo cercando di distribuire i forum Discourse in modalità di produzione. Stiamo utilizzando il nostro provider OAuth proprietario e, di conseguenza, stiamo usando il plugin discourse-oauth2-basic per abilitare tale funzionalità.

Stiamo riscontrando il seguente errore quando accediamo con il nostro provider OAuth personalizzato:

“Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF rilevato”

Dopo alcune attività di debug, si è notato che “omniauth.state” manca nella sessione dopo il reindirizzamento, rendendo impossibile la convalida del campo state in /auth/oauth2_callback. Qualsiasi aiuto sarebbe apprezzato.

Nota: L’intera configurazione funziona correttamente in modalità di sviluppo.

Grazie.

L’autenticazione inizia e termina nello stesso browser? Hai modificato il valore predefinito dell’impostazione dei cookie “same site”?

@david, l’autenticazione inizia e termina nello stesso browser. Non ho modificato il valore di same_site_cookies, che è impostato di default su “Lax”.

Stai seguendo la nostra guida all’installazione?

Purtroppo è molto difficile per noi fornire assistenza senza avere visibilità del sito. Puoi condividere un link?

Ciao @david, stiamo utilizzando Discourse tramite container Docker. Il file Docker che stiamo usando è discourse_docker/image/base at master · discourse/discourse_docker · GitHub. Poiché non esiste uno script per avviare Discourse all’interno del container Docker, abbiamo aggiunto un piccolo script di avvio che precompila e avvia Discourse.
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake assets:precompile
RAILS_ENV=production bundle exec rails server --binding=0.0.0.0

Purtroppo è molto difficile per noi offrire supporto della comunità qui per installazioni personalizzate. Ti invitiamo a provare a configurare Discourse seguendo la guida ufficiale. Se non riesci a farlo, forse qualcuno nel canale Marketplace potrebbe aiutarti a pagamento.