Attenzione alla doppia codifica URL del payload SSO

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 7 alla fine del loro nome utente al primo accesso
  • sso_sync che 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.

4 Mi Piace