J’essaie de résoudre ce problème depuis un moment et je n’arrive pas à le résoudre. J’essaie d’intégrer Discourse avec une configuration Keycloak pour l’authentification à l’aide du plugin discourse-openid-connect. J’utilise la version 3.0.1 de discourse-docker. Actuellement, lorsque je clique sur le bouton de connexion OpenID Connect, le message suivant s’affiche dans Discourse : « Impossible de récupérer la configuration du fournisseur d’identité. Veuillez réessayer. »
Je migre vers une nouvelle configuration Discourse, et le plus drôle, c’est que Discourse parvient à atteindre l’écran de connexion Keycloak en utilisant mon ANCIENNE instance Keycloak sans problème, mais pas avec ma NOUVELLE. Cela signifie que les points suivants devraient être vrais :
- Les paramètres du plugin openid-connect sont corrects (copiés de l’ancien Discourse)
- Les paramètres Keycloak pour le client Discourse sont corrects (copiés de l’ancien Discourse)
- Il n’y a aucun problème réseau
- Il n’y a pas de pare-feu ou quoi que ce soit qui bloque le trafic
J’ai en outre constaté que je peux curl avec succès l’URL du document de découverte pour Keycloak depuis l’instance Discourse sans problème. La version de Keycloak est la même que l’ancienne, et l’authentification Keycloak fonctionne bien pour d’autres outils situés dans la même région AWS et la même zone de disponibilité que Discourse. Voici l’erreur des journaux lorsque j’essaie de me connecter en utilisant OpenID Connect.
J’ai fait des recherches et testé beaucoup de choses, mais rien n’a fonctionné. L’erreur concernant les IP non autorisées semble assez générique, et je suis presque certain qu’aucun pare-feu ne bloque quoi que ce soit, d’autant plus que je peux curl le document de découverte sans problème. Je ne peux que penser que Discourse essaie peut-être de récupérer le document à partir d’un cache quelque part ou qu’il n’atteint pas la bonne URL de jeton, mais je ne sais tout simplement pas. Toute aide serait appréciée.
Started GET "/session/csrf" for <my_ip> at 2023-02-01 18:02:24 +0000
Processing by SessionController#csrf as JSON
Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 406)
Started POST "/auth/oidc" for 10.158.133.85 at 2023-02-01 18:02:24 +0000
(oidc) Setup endpoint detected, running now.
OIDC Log: Fetching discovery document from https://<keycloak_URL>.com/auth/realms/<my_realm>/.well-known/openid-configuration
OIDC Log: Fetching discovery document raised error Faraday::ConnectionFailed FinalDestination: all resolved IPs were disallowed
OIDC Log: Discovery document is
---
(oidc) Request phase initiated.
(oidc) Authentication failure! openid_connect_discovery_error: OmniAuth::OpenIDConnect::DiscoveryError, Discovery document is missing
Started GET "/auth/failure?message=openid_connect_discovery_error&strategy=oidc" for <my_ip> at 2023-02-01 18:02:24 +0000
Processing by Users::OmniauthCallbacksController#failure as HTML
Parameters: {"message"=>"openid_connect_discovery_error", "strategy"=>"oidc"}
Rendered users/omniauth_callbacks/failure.html.erb within layouts/no_ember (Duration: 0.1ms | Allocations: 17)
Rendered layout layouts/no_ember.html.erb (Duration: 17.3ms | Allocations: 5113)
Completed 200 OK in 24ms (Views: 19.7ms | ActiveRecord: 0.0ms | Allocations: 6610)