Помогите мне устранить неполадки в SSO для Discourse

Не совсем понятно, зачем вы отправляете запросы к /users/by-external/<external_id>.json и /admin/users/sync_sso. Обычный сценарий — просто перенаправить пользователя на /session/sso_login, передав SSO-нагрузку в виде параметров запроса в URL. Подробно о назначении маршрута sync_sso можно прочитать здесь: Sync DiscourseConnect user data with the sync_sso route.

Запрос к /users/by-external/<external_id> с external_id, который ещё не связан с пользователем Discourse, должен возвращать ошибку 404 (не найдено). Если же external_id уже связан с пользователем Discourse, должен быть возвращён сам пользователь.