Discourse est actuellement le logiciel que je pense avoir le plus haut degré de liberté technique, c’est pourquoi je l’ai choisi comme forum. Mais j’ai rencontré l’erreur « Le document de découverte est manquant » lors de la configuration d’OIDC, ce qui m’a pris une semaine , et je n’ai pas trouvé de solution appropriée ici.
J’ai réussi à construire Discourse en suivant le tutoriel suivant :
Ensuite, j’ai utilisé docker pour construire Keycloak, et Keycloak et Discourse ont tous deux été déployés localement. Lorsque j’ai établi la connexion entre Discourse et Keycloak via OIDC, j’ai rencontré l’erreur suivante :
Journal OIDC : La récupération du document de découverte a généré une erreur Faraday::ConnectionFailed FinalDestination: tous les IP résolus ont été interdits
13:51
(oidc) Échec de l'authentification ! openid_connect_discovery_error: OmniAuth::OpenIDConnect::DiscoveryError, Le document de découverte est manquant
13:51
OmniAuth::OpenIDConnect::DiscoveryError (Le document de découverte est manquant) lib/middleware/omniauth_bypass_middleware.rb:53:in `call' lib/content_security_policy/middleware.rb:12:in `call' lib/middleware/
Selon cette erreur, j’ai trouvé la solution correspondante comme suit :
Après avoir suivi la solution, une nouvelle erreur a été signalée comme suit :
(oidc) Échec de l'authentification ! openid_connect_discovery_error: OmniAuth::OpenIDConnect::DiscoveryError, Le document de découverte est manquant
14:00
OmniAuth::OpenIDConnect::DiscoveryError (Le document de découverte est manquant) lib/middleware/omniauth_bypass_middleware.rb:53:in `call' lib/content_security_policy/middleware.rb:12:in `call' lib/middleware/
Je me trompe peut-être, mais comme Discourse et Keycloak sont tous deux déployés localement avec Docker, êtes-vous sûr que Discourse peut faire des requêtes à Keycloak ? C’est quelque chose avec lequel j’ai eu des problèmes par le passé. Je sais que cela peut fonctionner cependant.
Merci pour votre réponse patiente qui m’a donné une bonne idée . Vous avez en effet raison. Le service keycloak local ne peut pas être accédé via localhost ou 127.0.0.1, j’utilise donc l’adresse IP de l’hôte au lieu de localhost. Mais un nouveau problème est survenu :
Ensuite, j’ai décodé l’URL et j’ai constaté que l’URL de redirection pointait vers http://127.0.0.1:3000/auth/oidc/callback au lieu de http://127.0.0.1:4200/auth/oidc/callback dont le port est le port de la page front-end de discussion. Finalement, j’ai apporté les modifications correspondantes dans Keycloak et j’ai réussi :