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

您好 Penar,
也许我们应该先澄清我的设置细节。它与标准部署略有不同。

  • 中央负载均衡器 (https://www.haproxy.org/) 作为 SSL 加速器,用于处理多个不同的 Web 服务(不仅仅是 Discourse)。从 Internet 访问这些服务只允许通过 HTTPS。HTTP 到 HTTPS 的切换在负载均衡器本身完成,请参阅 Redirect HTTP to HTTPS in a Few Easy Steps with HAProxy 获取参考。
  • haproxy 将前端请求转发到私有网络 (10.x.x.x) 上的后端,无加密。此流量在 Docker 主机上的本地 nginx 处终止。
  • nginx 使用 proxy_pass ``http://unix``:/mnt/data/discourse/shared/web-only/nginx.http.sock 将请求转发到 web_only 容器的 HTTP 套接字。
    (我使用的是 web_only.ymldata.yml 的双容器设置)。请参阅 templates/web.socketed.template.yml 获取参考。

我不需要 SiteSetting.force_https,因为所有的 HTTPS 加密都在 Discourse 容器 外部 完成。我已经使用了基于 Discourse OpenID Connect (OIDC) 插件和我的 IDP 的 OAuth。Discourse OIDC 插件包含一个用于“well-known” OpenID Connect discovery document 的设置。在我的例子中是:https://login.netzwissen.de/realms/netzwissen/.well-known/openid-configuration

如果 Discourse ID 在 Discourse 容器实例和 Discourse ID IDP 之间的链接中实现类似的功能,就不会有问题。“Discourse ID”使用固定的 IDP,因此这样的“well-known URL”甚至可以硬编码,包括 HTTPS 前缀。