Gli utenti si iscrivono su \u003chttps://getdbt.com/community/join-the-community\u003e
Ricevono un’email di conferma da Auth0
Atterrano su \u003chttps://getdbt.com/community/email-verified\u003e
Fanno clic su Ottieni aiuto sul forum della community e vengono portati su Auth0 per accedere
Dopo l’accesso, vengono reindirizzati a discourse.getdbt.com ma con visualizzato l’avviso CSRF.
Se fanno clic su Accedi e poi su Usa il tuo account della community dbt, l’account viene creato con successo e vedono la finestra di dialogo di creazione dell’account in cui possono impostare il proprio nome utente, ecc.
Video Loom che mostra questo in azione:
Ho abilitato oauth2 debug auth e nei log posso vedere (oauth2_basic) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
Le mie domande:
Si tratta di un problema di Discourse o di Auth0? Presumo Discourse poiché un flusso di accesso quasi identico per Slack funziona senza problemi.
Perché questo funziona nella pagina di accesso ma non quando l’accesso viene attivato dal lato Auth0?
Il messaggio di errore CSRF predefinito implica che si verifica quando il browser cambia o quando il flusso di accesso richiede troppo tempo. Nessuna di queste condizioni è vera, cos’altro potrebbe causarlo?
Dovrei inserire https://discourse.getdbt.com/auth/oauth2_basic nel campo URI di accesso dell’applicazione e lasciare https://discourse.getdbt.com/auth/oauth2_basic/callback nel campo URL di callback consentiti?
Puoi condividere maggiori dettagli su come è implementato il link “Ottieni aiuto sul forum della community”? Dove porta il link? Attualmente presumo che il pulsante sia gestito da Auth0 e che l’aggiunta di quella nuova configurazione URL farà sì che il pulsante si colleghi correttamente a /auth/oauth2_basic per avviare il flusso di accesso.
Mi scuso per la risposta lenta, sono appena tornato dopo la pausa natalizia!
Ho fatto questo:
ma ottengo ancora lo stesso risultato.
Quel link punta a https://dev-zb38hsho.us.auth0.com/samlp/5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr, dove dev-zb38hsho è il nostro ID istanza Auth0 e 5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr è il Client ID per l’applicazione Discourse in Auth0.
Visitare quel link reindirizza a https://dev-zb38hsho.us.auth0.com/u/login?state=SESSION_SPECIFIC_TOKEN.
La chiave è che Discourse deve avviare il flusso di autenticazione su /auth/oauth2_basic, quindi reindirizzare ad Auth0, quindi tornare a /auth/oauth2_basic/callback.
Speravo che potessimo far avviare il login ad Auth0 partendo dal primo URL, ma sembra che stia saltando Discourse direttamente all’URL di callback.
Potresti aggiornare il pulsante in modo che punti a /auth/oauth2_basic sul forum? Questo avvierà il flusso di autenticazione e reindirizzerà immediatamente ad Auth0, quindi l’esperienza utente complessiva dovrebbe essere la stessa.
Sì, funziona! Si ferma su una pagina intersitiziale con un pulsante Continua; l’interazione dell’utente è obbligatoria per attivare in modo sicuro un flusso OAuth o qualcos’altro?
Questa pagina viene visualizzata quando ci sono più metodi di accesso su un sito. Se disabiliti gli ‘accessi locali’ (nome utente/password), dovrebbe procedere direttamente al processo di accesso.