如何在 reverse proxy 后使用 Discourse 的 FIDO2?

有人弄清楚如何在反向代理后面使用 Discourse 的 FIDO2 吗?我遇到了这个问题 使用 web.socketed.template.yml 模板,论坛位于 Cloudflare Tunnel 后面。

Yubikey 2FA 和新的 Passkey 登录 都无法正常工作。

这是在一个开发环境吗?你可能需要临时覆盖这一部分:

在运行服务器时使用 --forward-host 标志也可能很有帮助,例如 bin/ember-cli -u --forward-host

不,这是一个生产环境安装。

您收到什么错误消息?

失败的请求 /auth.json 的完整 URL 是什么?

啊,不对:/session/passkey/auth.json

好的,所以您的服务器认为它没有在浏览器请求的主机名上运行。安全密钥/通行密钥生成过程必须确保浏览器的​​主机名与服务器的主机名匹配(密钥是按主机名生成的)。

您能否登录到您的 Rails 控制台并检查 Discourse.current_hostname 的输出是什么?如果它与您访问站点的 URL 不匹配,那就是问题所在。

1 个赞

请注意,这也可能是 httphttps 的问题。我看到您的网站上的徽标正在查找 http:// 下的网址。

1 个赞

Discourse.current_hostname 与我访问站点所用的 URL 不匹配。有什么方法可以查看 Discourse 认为我的浏览器正在请求的主机名是什么吗?

1 个赞

在控制台中,Discourse.base_url 的值是什么?

1 个赞

啊,它确实被设置为一个 http:// URL(带有正确的托管名)。我正在使用此处描述的设置,让 Discourse 可以通过 Cloudflare Tunnel 访问:

哦,我想我明白了。在 Discourse 中启用 force https 设置似乎解决了这个问题,我不确定为什么它之前是关闭的。我认为在它前面添加另一个反向代理之前,默认配置中不需要它。感谢您的帮助!

3 个赞

此主题在上次回复后 30 天自动关闭。不允许回复。