Discovery 문서가 없습니다

안녕하세요,
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 문서의 내용은 다음과 같습니다.

아마 제가 오해하고 있는 것일 수도 있지만, Discourse와 Keycloak가 모두 로컬에서 Docker로 배포되어 있으니, Discourse가 Keycloak로 요청을 보낼 수 있는지에 대해 확실하십니까? 과거에 이 문제로 인해 곤란을 겪은 적이 있습니다. 하지만 설정을 잘하면 작동하게 할 수 있다는 것은 알고 있습니다.

인내심을 갖고 답변해 주셔서 감사합니다. 덕분에 좋은 해결책을 얻을 수 있었습니다 :blush:. 말씀하신 대로 로컬 Keycloak 서비스에 localhost나 127.0.0.1을 통해 접근할 수 없으므로, localhost 대신 호스트의 IP 주소를 사용했습니다. 하지만 새로운 문제가 발생했습니다:

URL을 디코딩해 보니, 리다이렉트 URL이 http://127.0.0.1:4200/auth/oidc/callback(포트 4200은 토론 프론트엔드 페이지의 포트입니다)이 아니라 http://127.0.0.1:3000/auth/oidc/callback을 가리키고 있었습니다. 결국 Keycloak에서 이에 맞는 수정을 수행한 후 성공적으로 해결했습니다: