Discourse ID 在我的实例上激活失败

我在测试系统(3.6.0.beta2-latest)上尝试激活 Discourse_id 时看到此消息:

enable_discourse_id: You must configure Discourse ID credentials ('discourse_id_client_id' and 'discourse_id_client_secret') before enabling this setting.

我在本地使用 OIDC 服务器(keycloak)。也许这两种方法会相互干扰??

2 个赞

我不认为它会干扰OIDC,但如果您的实例无法在互联网上访问,ID注册将无法工作。Discourse ID身份提供商有一个验证机制,用于验证启动注册流程的Discourse实例。

测试实例在线,地址为 forum2.netzwissen.de

2 个赞

我在两个实例上看到了相同的消息,但它们没有不同的 OAuth 连接。

2 个赞

我已将其移至单独的主题…您是否在您的实例的 /logs 中看到任何错误?在注册过程中,它应该会在那里输出更多关于后台不工作的内容的详细信息。

我想从技术角度多了解一下。\n\n在我的实例中,我使用 OIDC 身份验证与外部身份提供商(Keycloak 26)进行身份验证。Discourse ID 看起来非常相似;它只是由 Discourse.org 托管的另一个 IDP 服务器。错误消息(缺少客户端 ID 和密钥)也让人联想到经典的 OAuth 流程。这是否意味着 Discourse ID 将被激活为额外的 IDP 身份验证路径?因为只有这样它才对我的用例有用。???

只有这一个,但相对规律,与主题无关。

消息(已报告 2 份副本)

Sidekiq 正在为 ‘rpg-foren-app’ 消耗过多内存(使用量:503.02M),正在重启

回溯

/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
1 个赞

是的,没错,Discourse ID 是另一个 IDP。

@Tealk sidekiq 错误无关。请分享您实例的 commit hash。

好的,在这里:3.5.1 (c96aeda334)

好的。那么,您需要提供您的 IDP(用于公共访问工作流)上的客户端 ID,或者客户端 ID 客户端密钥(用于机密访问工作流)。另一种选择是:将 Discourse ID 添加为本地 IDP 的外部身份提供程序。这两种变体都需要更多信息:wink: …

是的,每个 Discourse 实例都会(在后台)注册并设置客户端 ID 和密钥。

现在我看到您的实例存在 http/https 错误。ID 要正常工作,站点必须使用 https。这很可能是您的问题。

@Tealk 确保您的站点在 https 下也能正常运行。

1 个赞

我不知道我还能改进什么:

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

Discourse ID 是否已在运行稳定分支的论坛上生效?我以为该功能要到八月份发布后才会添加。

1 个赞

啊,确实,如果您使用的是 stable 频道 @Tealk,您将不得不等待下一个稳定版本才能使用 Discourse ID。

另请注意,DiscourseConnect 是一个独立的功能。

1 个赞

好的,那么“新功能”页面上的信息就很令人困惑。是否可以添加该功能包含的版本号?

1 个赞

你说得有道理。我现在已经更新了“最新动态”信息源,使其仅包含未在稳定版上运行(并且在 latest 中有解锁 Discourse ID 的提交)的实例的此项。如果您刷新“最新动态”信息源,您应该不再会在稳定版上的实例中看到此项。

4 个赞

我已经有了设置中的设置,设置是否应该在实施之前可用?

enable_discourse_id 站点设置不应该存在于您的环境中。(请确保不要将其与 enable_discourse_connect 混淆,那是不同的设置。)

啊,是“connect”,搜索误导了我。

2 个赞

现在我看到你的实例,我看到了 http/https 错误。要使 ID 生效,网站必须使用 https。这很可能是你的问题。

… 有趣,但我不知道为什么。也许我们在这里存在概念上的差距:Discourse 容器位于 SSL 加速器后面,只能通过 https 访问。但那是从“外部”到“内部”的标准连接。在 OAuth 用例中,Discourse 容器从“内部”启动到“外部”的 IDP 的连接。我看不到任何配置此连接到 Discourse ID 并强制其为“https”的选项。

如果我将其与用于与我的 IDP 进行 OAuth 配置的经典 OIDC 设置进行比较:我们有一个“OpenID Connect discovery document”设置

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

我认为我们需要类似的东西来处理 Discourse ID,以避免缺少 https 连接的问题。PS。我的测试实例是 3.6.0.beta2-latest,Commits · discourse/discourse · GitHub