Cuidado con la codificación URL doble de la carga útil de SSO

Hemos estado teniendo un montón de problemas con nuestra implementación de SSO recientemente y, tras mucho trabajo de depuración, encontramos el problema.

Algunos de nuestros problemas incluían:

  • Nuevos usuarios incapaces de iniciar sesión en los foros
  • Usuarios existentes que veían un 7 añadido al final de su nombre de usuario al iniciar sesión por primera vez
  • sso_sync rechazando cambios de nombre de usuario

Resulta que todo esto fue causado por una doble codificación URL de nuestra carga útil de SSO. La estábamos codificando, la poníamos en la URL junto con la firma y luego la codificábamos de nuevo. Dado que las cadenas codificadas en base64 pueden incluir =, esto se codificó DOS veces en %253D en lugar de en %3D, como debería haber sido. No tengo ni idea de por qué esto solo rompió Discourse a veces, pero espero que si alguien más tiene este problema, esto pueda ser de ayuda.

4 Me gusta