Manca il documento Discovery

Ciao,
Discourse è attualmente il software che ritengo abbia il più alto grado di libertà tecnica, quindi l’ho scelto come mio forum. Ma ho riscontrato l’errore “Discovery document is missing” durante la configurazione di OIDC, che mi ha richiesto una settimana :face_with_spiral_eyes:, e non ho trovato una soluzione adatta qui.
Ho costruito con successo Discourse seguendo il seguente tutorial:

Quindi ho usato docker per costruire Keycloak, e sia Keycloak che Discourse sono stati distribuiti localmente. Quando ho stabilito la connessione tra Discourse e Keycloak tramite OIDC, ho riscontrato il seguente errore:


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/

Secondo questo errore ho trovato la soluzione corrispondente come segue:

Dopo aver seguito la soluzione, è stato segnalato un nuovo errore come segue:

(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/

Ecco alcune delle mie configurazioni:


La porta di Keycloak è 7070

I contenuti del documento di discovery di openid connect sono i seguenti

Potrei sbagliarmi, ma dato che Discourse e Keycloak sono entrambi distribuiti localmente con Docker, sei sicuro che Discourse possa effettuare richieste a Keycloak? È qualcosa con cui ho avuto problemi in passato. So che si può far funzionare.

3 Mi Piace

Grazie per la tua paziente risposta che mi ha dato una buona idea :blush:. Hai proprio ragione. Il servizio keycloak locale non è accessibile tramite localhost o 127.0.0.1, quindi ho usato l’IP dell’host invece di localhost. Ma è sorto un nuovo problema:

Quindi ho decodificato l’URL e ho scoperto che l’URL di reindirizzamento puntava a http://127.0.0.1:3000/auth/oidc/callback invece di http://127.0.0.1:4200/auth/oidc/callback, la cui porta è la porta della pagina front-end della discussione. Infine, ho apportato le modifiche corrispondenti in Keycloak e sono riuscito:

2 Mi Piace

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