Отсутствует документ Discovery

Привет!
Discourse на данный момент — это программное обеспечение, которое, по моему мнению, предоставляет наибольшую техническую свободу, поэтому я выбрал его в качестве форума. Однако при настройке OIDC я столкнулся с ошибкой «Discovery document is missing» (Файл обнаружения отсутствует), которая заняла у меня неделю :face_with_spiral_eyes:, и я не смог найти подходящего решения здесь.
Я успешно установил Discourse согласно следующему руководству:

Затем я использовал Docker для сборки Keycloak, и оба сервиса — Keycloak и Discourse — были развернуты локально. При попытке установить соединение между Discourse и Keycloak через OIDC я столкнулся со следующей ошибкой:


OIDC Log: Fetching discovery document raised error Faraday::ConnectionFailed FinalDestination: all resolved IPs were disallowed
13:51
(oidc) Authentication failure! openid_connect_discovery_error: OmniAuth::OpenIDConnect::DiscoveryError, Discovery document is missing
13:51
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
14:00
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 выглядит следующим образом:

Возможно, я не прав, но так как Discourse и Keycloak развернуты локально с помощью Docker, вы уверены, что Discourse может отправлять запросы в Keycloak? С этим я раньше сталкивался и у меня возникали проблемы. Хотя, конечно, это можно заставить работать.

Спасибо за ваш терпеливый ответ, который дал мне хорошую идею :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 и добился успеха: