В последнее время у нас возникло множество проблем с реализацией SSO, и после значительной работы по отладке мы нашли причину.
Некоторые из наших проблем включали:
- Новые пользователи не могли войти на форум
- Существующие пользователи получали
7в конце своего имени пользователя при первом входе sso_syncотклонял изменения имени пользователя
Оказалось, что всё это было вызвано двойным URL-кодированием нашего SSO-набора данных. Мы кодировали его, помещали в URL вместе с подписью и кодировали снова. Поскольку строки в формате base64 могут содержать символ =, он кодировался ДВАЖДЫ в %253D вместо %3D, как должно быть. Я не знаю, почему это ломало Discourse только иногда, но надеюсь, что если у кого-то возникнет такая же проблема, это может помочь.