SSO ha smesso di funzionare 🤔

Ehi ragazzi!

Sto gestendo l’autenticazione SSO nel mio backend PHP. Inizio inviando una richiesta curl all’URL SSO (Communauté et formation pour entrepreneurs) per ottenere il Payload SSO e la SIG, poi procedo a creare il mio payload per generare l’URL di reindirizzamento corretto.

Ed è qui che le cose si fanno strane…

Se accedo a Communauté et formation pour entrepreneurs dal mio browser, copio/incollo SSO e SIG nel mio script, l’URL di reindirizzamento finale funziona.

Se lo ottengo tramite CURL, il reindirizzamento finale mostra un messaggio di errore e nel log trovo questo:

Log SSO dettagliato: Il nonce è già scaduto

Sono nel pallone… Il problema sembra essere apparso dal nulla e ora i miei utenti non possono accedere.

Discourse ha cambiato qualcosa per impedire ai bot di pingare /session/sso?

Sì, il nonce è ora associato alla sessione dell’utente per cui è stato generato. Sembra che il problema che stai riscontrando sia legato a questo:

Invece di effettuare una richiesta curl, ci si aspetta che l’utente da autenticare visiti /session/sso, sia cliccando sul pulsante Accedi del sito, sia venendo reindirizzato a /session/sso dalla tua applicazione. Quando lo fanno, Discourse li reindirizzerà indietro alla tua applicazione. Il nonce presente in quel payload sarà valido.

È quello che ho dovuto fare per risolvere il problema, ma questo interrompe il mio processo di login asincrono. :frowning: Mi piaceva molto lavorare in quel modo.

Ho anche provato a farlo tramite Axios. Mi sarei aspettato che funzionasse, dato che la richiesta proviene dal client. Sembra che non funzioni nemmeno in questo caso.

Se pensi a un modo per implementare un processo di login asincrono, accetterò con piacere qualsiasi consiglio! In ogni caso, grazie per la risposta, molto apprezzata.