Cuidado com a codificação dupla de URL do payload SSO

Temos enfrentado um monte de problemas com nossa implementação de SSO recentemente e, após bastante trabalho de depuração, encontramos a causa.

Alguns dos nossos problemas incluíam:

  • Novos usuários sendo incapazes de fazer login nos fóruns
  • Usuários existentes tendo 7 adicionado ao final de seu nome de usuário ao fazer login pela primeira vez
  • sso_sync rejeitando alterações de nome de usuário

Acontece que tudo isso foi causado pela codificação dupla da URL do nosso payload SSO. Nós estávamos codificando-o, colocando-o na URL com a assinatura e codificando-o novamente. Como strings codificadas em base64 podem incluir =, isso acabou sendo codificado DUAS vezes em %253D em vez de %3D, como deveria ser. Não tenho ideia do motivo pelo qual isso só quebrou o Discourse às vezes, mas espero que, se alguém mais tiver esse problema, isso possa ser útil.

4 curtidas