Я вижу это сообщение, когда пытаюсь активировать Discourse_id на своей тестовой системе (3.6.0.beta2-latest):
enable_discourse_id: Перед включением этого параметра необходимо настроить учетные данные Discourse ID ('discourse_id_client_id' и 'discourse_id_client_secret').
Я использую локальный сервер Oauth для OIDC (keycloak). Возможно, эти два метода конфликтуют друг с другом??
Я не думаю, что это мешает работе OIDC, но если ваш экземпляр недоступен из интернета, регистрация ID не будет работать. Провайдер идентификации Discourse ID имеет встроенный механизм проверки для экземпляров Discourse, которые инициируют процесс регистрации.
Я перенёс это в отдельную тему… видите ли вы какие-либо ошибки в /logs на вашем экземпляре? Там должно выводиться больше деталей о том, что не работает «под капотом» в процессе регистрации.
Я хотел бы немного глубже разобраться в этом с технической точки зрения.
На моих инстансах я использую аутентификацию OIDC с внешним провайдером идентификации (Keycloak 26). Discourse ID выглядит очень похоже; это просто другой сервер IDP, размещенный на Discourse.org. И сообщения об ошибках (отсутствуют client ID и secret) также напоминают классический поток OAuth. Значит ли это, что Discourse ID будет активирован как дополнительный путь аутентификации через дополнительный IDP? Потому что только в этом случае это будет полезно для моего сценария использования.???
Только это, но довольно регулярно, так что это не имеет ничего общего с темой.
Сообщение (2 копии)
Sidekiq потребляет слишком много памяти (используется: 503,02 МБ) для «rpg-foren-app», перезагрузка
Трассировка стека
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/broadcast_logger.rb:130:in block in warn' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/broadcast_logger.rb:231:in block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/broadcast_logger.rb:231:in each' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/broadcast_logger.rb:231:in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.2.1/lib/active_support/broadcast_logger.rb:130:in warn' /var/www/discourse/lib/demon/sidekiq.rb:59:in block in rss_memory_check'
/var/www/discourse/lib/demon/sidekiq.rb:53:in each' /var/www/discourse/lib/demon/sidekiq.rb:53:in rss_memory_check'
config/unicorn.conf.rb:132:in `block (2 levels) in reload
Хорошо. Тогда мне понадобится ID клиента в вашем IDP (для рабочего процесса публичного доступа) или ID клиента и секрет клиента (для рабочего процесса конфиденциального доступа). Другой вариант: добавить Discourse ID как внешнего брокера идентификации в локальный IDP. Для обоих вариантов потребуется немного больше информации …
Теперь, когда я посмотрел на ваш экземпляр, я вижу ошибки http/https. Для работы идентификации сайт должен работать по протоколу https. Скорее всего, это ваша проблема.
@Tealk убедитесь, что ваш сайт также корректно работает по протоколу https.
Ах, да, если вы находитесь на канале stable, @Tealk, вам придется подождать следующего стабильного релиза, чтобы функция Discourse ID стала для вас доступной.
Также обратите внимание, что DiscourseConnect — это отдельная функция.
Это верное замечание. Я обновил ленту «Что нового», чтобы она включала этот пункт только для экземпляров, которые не находятся на стабильной версии (и имеют коммит в latest, разблокирующий Discourse ID). Если вы обновите ленту «Что нового», этот пункт больше не будет отображаться в вашем экземпляре на стабильной версии.
Теперь, когда я посмотрел на ваш экземпляр, я вижу ошибки http/https. Для работы ID сайт должен работать по https. Вероятно, это и есть ваша проблема.
… интересно, но я не понимаю почему. Возможно, у нас есть концептуальный разрыв: контейнеры Discourse находятся за SSL-ускорителем и доступны только через https. Но это касается стандартного соединения, идущего извне внутрь. В случае использования OAuth контейнер Discourse инициирует соединение изнутри наружу, к IDP, который находится снаружи. Я не вижу возможности настроить это соединение с ID в Discourse и принудительно сделать его https.
Если я сравню это с классическими настройками OIDC, используемыми для конфигурации OAuth с моим собственным IDP: там есть настройка «Документ обнаружения OpenID Connect»