发现文件丢失了

你好,
Discourse 是我目前认为技术自由度最高的软件,所以我选择它作为我的论坛。但在配置 OIDC 时遇到了“Discovery document is missing”的错误,花了我一周的时间 :face_with_spiral_eyes:,并且在这里没有找到合适的解决方案。
我按照以下教程成功构建了 Discourse:

然后我使用 docker 构建了 Keycloak,Keycloak 和 Discourse 都部署在本地。当通过 OIDC 建立 Discourse 和 keycloak 的连接时,我遇到了以下错误:


OIDC Log: Fetching discovery document raised error Faraday::ConnectionFailed FinalDestination: all resolved IPs were disallowed
1:51 pm
(oidc) Authentication failure! openid_connect_discovery_error: OmniAuth::OpenIDConnect::DiscoveryError, Discovery document is missing
1:51 pm
OmniAuth::OpenIDConnect::DiscoveryError (Discovery document is missing) lib/middleware/omniauth_bypass_middleware.rb:53:in `call' lib/content_security_policy/middleware.rb:12:in `call' lib/middleware/

根据这个错误,我找到了相应的解决方案如下:

按照解决方案操作后,又报了新的错误如下:

(oidc) Authentication failure! openid_connect_discovery_error: OmniAuth::OpenIDConnect::DiscoveryError, Discovery document is missing
2:00 pm
OmniAuth::OpenIDConnect::DiscoveryError (Discovery document is missing) lib/middleware/omniauth_bypass_middleware.rb:53:in `call' lib/content_security_policy/middleware.rb:12:in `call' lib/middleware/

以下是我的部分配置:


Keycloak 的端口是 7070

openid connect discovery document 的内容如下

我可能不太对,但既然 Discourse 和 Keycloak 都通过 Docker 本地部署,您确定 Discourse 可以向 Keycloak 发出请求吗?我过去曾在这方面遇到过麻烦。我知道这是可以实现的。

3 个赞

感谢您耐心回复,这给了我一个好主意 :blush:。您说得对。本地 keycloak 服务无法通过 localhost 或 127.0.0.1 访问,所以我使用了主机的 IP 地址而不是 localhost。但出现了一个新问题:

然后我解码了 url,发现重定向 url 指向 http://127.0.0.1:3000/auth/oidc/callback 而不是 http://127.0.0.1:4200/auth/oidc/callback,后者是讨论前端页面的端口。最后,我在 Keycloak 中进行了相应的修改并成功了:

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.