O Discourse é atualmente o software que considero ter o maior grau de liberdade técnica, por isso o escolhi como meu fórum. Mas encontrei o erro ‘Discovery document is missing’ ao configurar o OIDC, o que me levou uma semana , e não encontrei uma solução adequada aqui.
Consegui construir o Discourse com sucesso seguindo o seguinte tutorial:
Em seguida, usei o docker para construir o Keycloak, e tanto o Keycloak quanto o Discourse foram implantados localmente. Ao estabelecer a conexão do Discourse e do Keycloak através do OIDC, encontrei o seguinte erro:
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/
De acordo com este erro, encontrei a solução correspondente da seguinte forma:
Após seguir a solução, um novo erro foi relatado da seguinte forma:
(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/
Posso estar enganado, mas como o Discourse e o Keycloak são ambos implantados localmente com Docker, você tem certeza de que o Discourse pode fazer requisições para o Keycloak? É algo com que já tive problemas no passado. Sei que é possível fazer funcionar.
Obrigado pela sua resposta paciente que me deu uma boa ideia . Você está realmente certo. O serviço Keycloak local não pode ser acessado através de localhost ou 127.0.0.1, então eu uso o IP do host em vez de localhost. Mas um novo problema surgiu: