Я следовал официальной теме SSO, но не могу добиться появления страницы универсального входа.
Когда я просто включил OAuth, всё работало. Я вошёл, нажав кнопку «Войти через Auth0», без проблем. Однако при включении SSO меня перенаправляет на страницу Auth0, где появляется страница ошибки с сообщением: " invalid_request : Invalid parameter: client_id must be a string". Сначала я подумал, что указал неверный «sso_url». Честно говоря, я не имею представления, что там должно быть указано, поэтому вставил “https://.auth0.com/authorize”.
У кого-нибудь возникала подобная проблема? Или есть какие-то идеи?
Параметр sso url должен быть установлен в URL, который вы настроили на сайте вашего провайдера SSO для обработки запросов SSO от Discourse.
Реализация SSO в Discourse не использует OAuth. Возможно, именно это вызывает путаницу.
На каком языке или фреймворке написан ваш сайт провайдера SSO? Возможно, для него уже существует готовая реализация SSO, которую вы можете использовать.
Это логично. Auth0 и SSO для Discourse — это совершенно разные системы. Вы не можете включить их обе на своём сайте. Похоже, вам нужно лишь убедиться, что Auth0 правильно настроен на вашем сайте.
Как новый пользователь, настраивающий Discourse, я разделяю ваше замешательство в понимании функции SSO. На эту тему есть отдельная тема, но она всё ещё не очень хорошо объясняет различия, особенно учитывая, что некоторые настройки SSO предназначены для использования Discourse в качестве провайдера SSO (похоже на то, как вы хотите использовать Auth0).
Чтобы использовать внешний провайдер идентификации для функции SSO, вам понадобится промежуточная служба, например discourse-sso-oidc-bridge. Сегодня я настроил это с Keycloak вместо Auth0, процесс должен быть примерно таким же.
Если вы просто хотите использовать Auth0, как социальные логины (Google/Facebook/Github), то, вероятно, вам подойдёт плагин discourse-openid-connect. Вам нужно будет установить его и использовать предоставляемые им настройки. Я пробовал это с Keycloak до появления отдельной функции SSO. В этом случае не требуется мост между системами, и это может дать вам желаемое (при условии, что вам не нужно, чтобы данные в Discourse обновлялись или синхронизировались при повторном входе пользователя — это единственный момент, когда Discourse синхронизирует данные аккаунта).
Пользователям будет предложено создать учётную запись, но все поля формы будут заполнены данными от вашего провайдера аутентификации. В будущем обновлении плагина планируется пропустить этот шаг и сразу создавать учётную запись (если это единственный вариант входа), как это делает существующая функция SSO.