Discourse ID не активируется на моём экземпляре

Я вижу это сообщение, когда пытаюсь активировать 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, которые инициируют процесс регистрации.

Тестовый экземпляр доступен по адресу forum2.netzwissen.de

Я вижу то же сообщение в двух экземплярах, ни один из которых не имеет другого подключения OAuth.

Я перенёс это в отдельную тему… видите ли вы какие-либо ошибки в /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

Да, верно, Discourse ID — это другой провайдер идентификации.

@Tealk ошибка Sidekiq не связана с этим. Не могли бы вы предоставить хэш коммита для вашего экземпляра?

Конечно, вот: 3.5.1 (c96aeda334)

Хорошо. Тогда мне понадобится ID клиента в вашем IDP (для рабочего процесса публичного доступа) или ID клиента и секрет клиента (для рабочего процесса конфиденциального доступа). Другой вариант: добавить Discourse ID как внешнего брокера идентификации в локальный IDP. Для обоих вариантов потребуется немного больше информации :wink:

Да, каждый экземпляр Discourse регистрирует (внутренне) и настраивает Client ID и секрет.

Теперь, когда я посмотрел на ваш экземпляр, я вижу ошибки http/https. Для работы идентификации сайт должен работать по протоколу https. Скорее всего, это ваша проблема.

@Tealk убедитесь, что ваш сайт также корректно работает по протоколу https.

Я не знаю, что именно можно улучшить:

https://rpg-foren.com, https://forum.fedimins.net

Консоль при попытке активировать функцию:

XHRPUT
https://rpg-foren.com/admin/site_settings/enable_discourse_connect
[HTTP/2 422  86ms]

	
PUT
	https://rpg-foren.com/admin/site_settings/enable_discourse_connect
Статус
422
ВерсияHTTP/2
Передано713 Б (133 Б размер)
Политика реферераstrict-origin-when-cross-origin
Разрешение DNSСистема

    	
    content-type
    	application/json; charset=utf-8
    date
    	Mon, 20 Oct 2025 16:47:48 GMT
    referrer-policy
    	strict-origin-when-cross-origin
    server
    	nginx
    set-cookie
    	__profilin=p%3Dt%2Ca%3D2b952b1a24003bab45885b2f0abb5118; path=/; secure; HttpOnly; SameSite=Lax
    vary
    	Accept
    x-content-type-options
    	nosniff
    x-discourse-route
    	admin/site_settings/update
    x-discourse-username
    	Tealk
    X-Firefox-Spdy
    	h2
    x-frame-options
    	SAMEORIGIN
    x-permitted-cross-domain-policies
    	none
    x-request-id
    	88adc2fd-5819-43ba-a25c-c1535e6327b0
    x-runtime
    	0.062926
    x-xss-protection
    	0
    	
    Accept
    	*/*
    Accept-Encoding
    	gzip, deflate, br, zstd
    Accept-Language
    	en-US,en;q=0.5
    Connection
    	keep-alive
    Content-Length
    	29
    Content-Type
    	application/x-www-form-urlencoded; charset=UTF-8
    Cookie
    	_t=XuxyDzVA7lmCVSWxjtAAIW%2FwtC6o755siiDMJCwYXt82sKKXgBhQ3XT%2Bv4qY3Zq9Uhm8tgno959kheQuuslCmZmcqFYo1OeNPpJ9hzAkGBnYzzE1p2JB%2Fu8koGRGk21rMt4KkVE4Kid5aA3MwD8Dxdq3Yz9QYwOwmhsqLuFwzAeZVEIHq5M8Vc0YSCZBcWVDT%2FCfO4tXYar%2FmbTbcwLfM%2BnPuO%2F1C%2BOTMAGcn4sZD1vbO%2BRQn0c97DsQkQ%2B19L3csmzoo73ukkKJaIffKdYeAHFHyTIrhOjZbx0gCmHTxyoOUBEZdWRIBA%3D%3D--%2FGRmW%2FeNXPA2phGJ--x%2B6TQc3f4xd4701z6jk5xg%3D%3D; forced_color_mode=auto; _forum_session=juHIw0FO20X1VyNph%2BOFP4iLJHI9eejVQ6lnEKrnLj48q%2BAXWAo%2FRkjqzMqyaJHc3%2BMPW8asNhmYDYWD7I96tO8qLKUxBXEMl64Wa%2BBYFR5q0lWZL9ojHBnoJ18AQ%2BioiJIluwTfHdTikpLScj%2FLLhstWolVA5FCy7dly%2Fu5GNFIiqsfWDBZASUFClW4BKIS4AIX391GbuMCJT4yeftyGKCq%2FnGWYMSd1dPwVF4UK1YFFkA8vpWBCMSDAYivPvb4IYllod%2B3AirPX3KISYsN6p23qHwW%2Bb3KQ7F7ckuxjUSpivaLZAnw6txMlXlmYuQ6lrr6n6qY25ydFteHL064jh%2Fk%2FxBxtY6HkVyoJcth3h089lcAhagtnVSqQRfH8CAd3Ib1BRgOenJHIiRmLtDlyIk9Ixn3IR8l%2BfOwcW7T1yPAUA%3D%3D--DUchcA0kjxsQ2uDR--U3hXxkDHRaVSKCpqpJt%2FAw%3D%3D; __profilin=p%3Dt%2Ca%3D2b952b1a24003bab45885b2f0abb5118
    Discourse-Logged-In
    	true
    Discourse-Present
    	true
    Host
    	rpg-foren.com
    Origin
    	https://rpg-foren.com
    Referer
    	https://rpg-foren.com/admin/config/login-and-authentication
    Sec-Fetch-Dest
    	empty
    Sec-Fetch-Mode
    	cors
    Sec-Fetch-Site
    	same-origin
    TE
    	trailers
    User-Agent
    	Mozilla/5.0 (X11; Linux x86_64; rv:144.0) Gecko/20100101 Firefox/144.0
    X-CSRF-Token
    	06G-4_PiC_1EPpfr3_C8mWopZKLQrkKfaTVUzSF1fUfi22a5GAoo1CIkHNLF0RdelEI7ehqcj6NY2I8YGe9IfA
    X-Requested-With
    	XMLHttpRequest

Чистое развёртывание в Docker, без прокси и чего-либо ещё на сервере.

Работает ли уже Discourse ID на форумах, использующих стабильную ветку? Мне казалось, что эта функция была добавлена после выпуска в августе.

Ах, да, если вы находитесь на канале stable, @Tealk, вам придется подождать следующего стабильного релиза, чтобы функция Discourse ID стала для вас доступной.

Также обратите внимание, что DiscourseConnect — это отдельная функция.

Хорошо, тогда на странице «Что нового» это выглядит запутанно. Можно ли указать, с какой версии включена та или иная функция?

Это верное замечание. Я обновил ленту «Что нового», чтобы она включала этот пункт только для экземпляров, которые не находятся на стабильной версии (и имеют коммит в latest, разблокирующий Discourse ID). Если вы обновите ленту «Что нового», этот пункт больше не будет отображаться в вашем экземпляре на стабильной версии.

Да, я больше не вижу новости

У меня уже есть настройки в разделе «Настройки». Должна ли настройка быть доступна до её реализации?

Настройки сайта enable_discourse_id для вас быть не должно. (Убедитесь, что вы не путаете её с enable_discourse_connect, это совершенно другое.)

Ах, это «connect», поиск меня просто ввёл в заблуждение.

Теперь, когда я посмотрел на ваш экземпляр, я вижу ошибки http/https. Для работы ID сайт должен работать по https. Вероятно, это и есть ваша проблема.

… интересно, но я не понимаю почему. Возможно, у нас есть концептуальный разрыв: контейнеры Discourse находятся за SSL-ускорителем и доступны только через https. Но это касается стандартного соединения, идущего извне внутрь. В случае использования OAuth контейнер Discourse инициирует соединение изнутри наружу, к IDP, который находится снаружи. Я не вижу возможности настроить это соединение с ID в Discourse и принудительно сделать его https.

Если я сравню это с классическими настройками OIDC, используемыми для конфигурации OAuth с моим собственным IDP: там есть настройка «Документ обнаружения OpenID Connect»

https://....realms/[realm-name]/.well-known/openid-configuration

Я думаю, нам нужно что-то подобное для ID в Discourse, чтобы избежать проблем с отсутствием соединений https. PS. Мой тестовый экземпляр версии 3.6.0.beta2-latest, https://github.com/discourse/discourse/commits/f51960287f6a7297243fd904966811c90b7ce5b1