Abbiamo avuto un sacco di problemi con la nostra implementazione SSO recentemente e, dopo molto lavoro di debug, abbiamo individuato il problema.
Alcuni dei nostri problemi includevano:
- Nuovi utenti incapaci di accedere ai forum
- Utenti esistenti che vedevano aggiunto un
7alla fine del loro nome utente al primo accesso sso_syncche rifiutava le modifiche al nome utente
Si è scoperto che tutto ciò era causato dalla doppia codifica URL del nostro payload SSO. Lo codificavamo, lo inserivamo nell’URL con la firma e lo codificavamo di nuovo. Poiché le stringhe codificate in base64 possono includere =, questo veniva codificato DUE VOLTE in %253D invece che in %3D come dovrebbe essere. Non ho idea del motivo per cui questo abbia rotto Discourse solo a volte, ma spero che se qualcun altro ha questo problema possa essere d’aiuto.