こんにちは。
Discourseは、私が技術的な自由度が最も高いと考えているソフトウェアなので、フォーラムとして選択しました。しかし、OIDCを設定する際に「Discovery document is missing」というエラーが発生し、1週間もかかってしまいました 。ここで適切な解決策を見つけることができませんでした。
以下のチュートリアルに従って、Discourseを正常に構築しました。
Developing using Docker
Since Discourse runs in Docker, you should be able to run Discourse directly from your source directory using a Discourse development container.
Pros: No need to install any system dependencies, no configuration needed at all for setting up a development environment quickly.
Cons: Will be slightly slower than the native dev environment on Ubuntu, and much slower than a native install on MacOS.
See also Developing Discourse using a Dev Container …
その後、Dockerを使用してKeycloakを構築し、KeycloakとDiscourseの両方をローカルにデプロイしました。DiscourseとKeycloakをOIDC経由で接続した際に、以下のエラーが発生しました。
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/
このエラーに基づいて、以下の解決策を見つけました。
There is a security patch that disallows reaching out to addresses in the private ranges (10.0.0.0/8 and so on) to prevent internal network explorations.
You need to add the hostname to Admin - Settings - Security - allowed internal hosts to bypass the check.
It would have been nice if the plugin did that for you.
解決策に従った後、新しいエラーが報告されました。
(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ドキュメントの内容は以下の通りです。
simon
2023 年 9 月 20 日午前 7:11
2
見当違いかもしれませんが、DiscourseとKeycloakはどちらもDockerでローカルにデプロイされているので、DiscourseがKeycloakにリクエストを送信できるか確認しましたか?過去にそれで問題になったことがあります。うまくいくようにできることは知っています。
「いいね!」 3
親切なご返信ありがとうございます。おかげで良いアイデアが浮かびました:blush:。おっしゃる通りです。ローカルのKeycloakサービスにはlocalhostまたは127.0.0.1からはアクセスできないため、localhostの代わりにホストのIPを使用しました。しかし、新たな問題が発生しました。
その後、URLをデコードしたところ、リダイレクトURLがhttp://127.0.0.1:4200/auth/oidc/callback(こちらはディスカッションのフロントエンドページのポートです)ではなく、http://127.0.0.1:3000/auth/oidc/callbackを指していることがわかりました。最終的に、Keycloakで対応する変更を行い、成功しました。
「いいね!」 2
system
(system)
クローズされました:
2023 年 10 月 20 日午前 10:44
4
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.