Я новичок в Discourse и пытаюсь настроить свой форум с сайтом на Drupal, используя модуль SSO для Discourse. Я следовал инструкциям модуля и этой теме, но, к сожалению, URL «mydrupalwebsite.com/discourse/sso» возвращает ошибку 404.
С момента публикации этой темы в модуле появились новые настройки с API-ключом, но я не знаю, что с ним делать.
Можете поделиться ссылкой на используемый вами модуль Drupal? Если речь о модуле, на который есть ссылка в этом посте, то он последний раз обновлялся в марте 2015 года, поэтому вполне вероятно, что с ним возникнут проблемы.
Этот модуль SSO для Drupal был обновлён в декабре 2019 года: Client Challenge. Стоит попробовать его.
Я настроил секрет SSO и URL SSO, и при попытке входа вижу, что перенаправления происходят, как и должно быть, но страница /discourse/sso возвращает ошибку 404.
Есть ли у модуля какая-либо документация? Обычный процесс включения SSO заключается в добавлении конечной точки SSO в настройку сайта Discourse sso url, добавлении секретного ключа SSO в настройку сайта sso secret, а затем включении настройки сайта enable sso. При первоначальной настройке, вероятно, также стоит включить настройку сайта verbose sso logging. С включённой этой настройкой вы будете получать детали об ошибках SSO в журналах ошибок вашего сайта (находятся в разделе Администрирование / Журналы / Журналы ошибок).
После включения настроек Discourse убедитесь, что URL вашего сайта Discourse и sso secret добавлены на сайте провайдера SSO.
Судя по ошибке, которую вы получаете, скорее всего, настройка сайта enable sso не включена на вашем сайте Discourse.
Если после включения SSO у вас возникнут проблемы с доступом к сайту Discourse, вы как администратор можете обойти вход через SSO, перейдя по адресу /u/admin-login на вашем сайте Discourse. Введите свой адрес электронной почты администратора в форму на странице. Вам будет отправлена одноразовая ссылка для входа.
Я посмотрел на запись в логе, но в ней не отображается ошибка — это просто запись о запуске процесса SSO в Discourse. Сразу после этой записи должна появиться ещё одна, в которой будет показана ошибка. Не могли бы вы попробовать пройти этот процесс снова? Для каждой попытки входа должны создаваться подробные записи лога SSO. Первая запись показывает начало процесса в Discourse, а вторая относится к тому, как Discourse обработал ответ, полученный от вашего сайта.
Возможно, существует другое соответствующее сообщение об ошибке, которое не начинается с текста Verbose SSO log. Проверьте записи в логе за период, непосредственно предшествующий и следующий за моментом отправки запроса SSO.
Я попробовал снова, и получил три идентичных сообщения в логе, которые совпадают с предыдущим. Если следовать этой логике, значит, с моего сайта вообще нет ответа.
Да, это звучит правильно. Вы можете попробовать посмотреть запросы, которые отправляются, открыв веб-инспектор вашего браузера и перейдя на вкладку «Сеть». Выберите опцию «Сохранять логи» на этой вкладке и нажмите ссылку входа на вашем сайте Discourse.
Небольшое обновление по этому вопросу: модуль Discourse SSO исправлен и больше не приводит к сбою сайта.
Однако он всё ещё не работает, так как невозможно корректно выйти из системы после первого входа. Открыт новый вопрос, на случай если кто-то захочет разобраться с ним.
Похоже, что выход из Discourse не синхронизирован с выходом с сайта провайдера SSO. Поскольку вы все еще авторизованы на сайте провайдера SSO, при следующем нажатии на ссылку «Войти» в Discourse вы будете авторизованы на основе вашей сессии на сайте провайдера SSO.
Для выхода пользователей из системы провайдера SSO можно использовать настройку сайта logout redirect в Discourse. Когда пользователь выходит из Discourse, его автоматически перенаправляет на указанный URL. Провайдеру SSO необходимо обработать этот URL для выхода пользователя. Однако я недостаточно хорошо знаком с Drupal, чтобы знать, что именно нужно сделать для реализации этого.
Этот модуль работает нормально, есть лишь ошибка с изображением профиля пользователя в Drupal, но патч уже готовится,
В этом посте неверно указаны настройки в Discourse: sso_url должен заканчиваться на /discourse_sso, а не на /discourse/sso.
Если вы хотите иметь возможность входить в систему с помощью нескольких разных учётных записей, необходимо установить перенаправление при выходе как http://mywebsite/user/logout и отключить расширение Ghostery в вашем браузере для сайта Discourse, если вы используете этот плагин.