J'essaie de faire fonctionner l'adaptateur nodeJS keycloak avec mon application Express, mais je suis confronté à un problème CORS lorsqu'il tente de rediriger vers la page de connexion pour les itinéraires que j'ai protégés avec le middleware keycloak:
XMLHttpRequest ne peut pas se charger http://192.168.132.44:8080/auth/realms/Actora/protocol/openid-connect/auth?client_id=actora-test&state=0e9c9778-c41b-4aa8-8052-d0f0125045ac&redirect%3Ah % 2F% 2Flocalhost% 3A5001% 2Fauth% 2Fchecktoken% 3Fauth_callback% 3D1 & scope = openid & response_type = code . La réponse à la demande de contrôle en amont ne passe pas la vérification du contrôle d'accès: aucun en-tête "Access-Control-Allow-Origin" n'est présent sur la ressource demandée. L'origine ' http: // localhost: 5001 ' n'est donc pas autorisée à accéder.
Dans mes paramètres de client keycloak, j'ai ajouté une valeur unique de "*" à la section de configuration de Web Origins.
J'ai également activé les cors sur mon application node express en utilisant la bibliothèque node cors, en suivant ce guide express ici
var cors = require('cors'),
app = express();
app.use(cors());
app.options('*', cors()); //enable for all pre-flight requests
J'utilise la version 3.2.1 de keycloak au cas où cela ferait une différence (je vois qu'une nouvelle version est sortie en tant que RC)
Quelqu'un a-t-il rencontré des problèmes similaires et réussi à les résoudre? J'ai parcouru de nombreux threads de liste de diffusion JBOSS et d'autres stackoverflows, et tous semblent suggérer que c'est aussi simple que d'ajouter l'entrée '*' à la section de configuration des origines Web pour le client sur le site d'administration de keycloak mais ce n'est pas le cas pour moi.
Merci
Je travaille également sur cette question avec mindparse.
Je pense que le problème clé ici est que le serveur keycloak ne répond avec aucun en-tête ACCESS-CONTROL-ALLOW-Origin malgré le fait qu'il a correctement configuré le paramètre "Web Origins" dans le portail d'administration keycloak.
Un flux plus approfondi du processus est:
J'ai eu exactement le même problème. J'utilise Keycloak 6.0.1
Dans mon cas, j'ai dû ajouter "enable-cors": true
Dans keycloak.json
Sur mon serveur principal Java.
Par la suite, j'ai eu un autre problème: 401 UNAUTHORIZED
. Ce message a résolu le problème
Mettez simplement l'URL de votre application comme " http: // localhost: 8081 " dans le champ "Web Origins" des paramètres du client dans Keycloak.