web-dev-qa-db-fra.com

keycloak Paramètre non valide: redirect_uri

quand j'essaye de frapper de mon api pour authentifier l'utilisateur de keycloak, mais sa me donne l'erreur Paramètre invalide: redirect_uri sur la page de keycloak. J'ai créé mon propre royaume en dehors du maître. keycloak fonctionne sur http. Aidez-moi, s'il vous plaît.

21
VIJAY THAKUR

Ce qui a fonctionné pour moi a été d'ajouter wildchar '*'. Bien que pour les versions de production, je vais être plus spécifique avec la valeur de ce champ. Mais à des fins de développement, vous pouvez le faire.

 enter image description here

Paramètre disponible sous, console d'administration KeyCloak -> Nom du domaine -> Clients -> Nom du client.

EDIT: Je ne recommanderais pas la solution ci-dessus pour les versions de production, car cela pourrait conduire à une faille de sécurité.

13
tryingToLearn

Accédez à la console d'administration KeyCloak> SpringBootKeycloak> Clients> page de connexion-application . Ici, dans la section URL valide-redirect, ajoutez http: // localhost: 8080/sso/login }

Cela aidera à résoudre le problème indirect-uri

7
sushilshimpi

J'ai fait face à la même erreur. Dans mon cas, le problème était que Valid Redirect URIs était incorrect. Donc, ce sont les étapes que j'ai suivies. 

Commencez par vous connecter à keycloack en tant qu'administrateur. Ensuite, sélectionnez votre royaume (peut-être vous dirigerez-vous automatiquement vers le royaume). Ensuite, vous verrez l'écran ci-dessous

 enter image description here

Sélectionnez Clients dans le panneau de gauche. Sélectionnez ensuite le client pertinent que vous avez configuré pour votre application . Par défaut, vous serez dans l’onglet Setting, sinon, sélectionnez-le . est comme ci-dessous . disons que vous avez une application tourne sur localhost: 3000, donc votre réglage devrait être comme ceci

 enter image description here

5
Menuka Ishan

Si vous rencontrez ce problème après avoir modifié le chemin du contexte Keycloak, vous devez apporter une modification supplémentaire à un paramètre d'URL de redirection:

  1. Remplacez <web-context>yourchange/auth</web-context> par <web-context>auth</web-context> dans standalone.xml 
  2. Redémarrez Keycloak et accédez à la page de connexion (/auth/admin
  3. Connectez-vous et sélectionnez le domaine "maître" 
  4. Sélectionnez "Clients" dans le menu latéral 
  5. Sélectionnez le client "security-admin-console" dans la liste qui apparaît. 
  6. Remplacez "URI de redirection valide" de /auth/admin/master/console/* par /yourchange/auth/admin/master/console/* 
  7. Enregistrez et déconnectez-vous. Vous verrez à nouveau le message "URL de redirection invalide" après votre déconnexion. 
  8. Maintenant, insérez votre modification initiale <web-context>yourchange/auth</web-context> dans standalone.xml Redémarrez Keycloak et accédez à la page de connexion (qui est maintenant /yourchange/auth/admin
  9. Connectez-vous et profitez
3
Mark

Vous devez vérifier la configuration de la console d'administration de keycloak admin.

2
boycod3

Connectez-vous au site Web de la console d'administration Keycloak, sélectionnez le domaine et son client, puis assurez-vous que tous les URI du client sont préfixés avec le protocole, c'est-à-dire avec http:// par exemple. Un exemple serait http://localhost:8082/*

Une autre façon de résoudre le problème consiste à afficher la sortie de la console du serveur Keycloak, à localiser la ligne indiquant que la demande a été refusée, à en copier la valeur redirect_uri et à la coller dans le champ * Valid Redirect URIs du client sur le site Web de la console d'administration Keycloak. L'URI demandé est alors l'un des acceptables.

2
Stephane

Si vous obtenez cette erreur à cause d'un nouveau royaume que vous avez créé

Dans l'URL vers laquelle vous êtes redirigé (vous devrez peut-être rechercher cette URL dans les outils de développement de Chrome), remplacez le domaine de master par celui que vous venez de créer. Si vous n'utilisez pas https, assurez-vous que redirect_uri est également en utilisant http.

Si vous obtenez cette erreur parce que vous essayez d'installer Keycloak sur un domaine public (pas localhost)

Étape 1) Suivez cette documentation pour configurer une base de données MySql. Vous devrez peut-être aussi vous référer à la documentation officielle .

Étape 2) Exécutez la commande update REALM set ssl_required = 'NONE' where id = 'master';

Remarque: À ce stade, vous devriez être techniquement en mesure de vous connecter, mais la version 4.0 de Keycloak utilise https pour la redirection uri, même si nous venons de désactiver le support https. Jusqu'à ce que Keycloak corrige cela, nous pouvons contourner ce problème avec un proxy inverse. Nous voudrons utiliser de toute façon un proxy inverse pour configurer facilement https sans avoir à vous soucier des fichiers de clés Java.

Étape 3) Installez Apache. Nous utiliserons Apache en tant que proxy inverse (j'ai essayé NGINX, mais les limitations de NGINX m'ont empêché de l'utiliser). Voir yum en installant Apache (CentOs 7) et apt-get install Apache (Ubuntu 16), ou trouvez des instructions pour votre distribution spécifique.

Étape 4) Lancer Apache

  • Utilisez Sudo systemctl start httpd (CentOs) ou Sudo systemctl start Apache2 (Ubuntu) pour voir si Apache est déjà en cours d'exécution. Si la dernière entrée lit Started The Apache HTTP Server., alors votre bien.
  • Utilisez Sudo systemctl start httpd (CentOs) ou Sudo systemctl start Apache2 (Ubuntu) pour démarrer Apache.

Étape 5) Nous établirons une connexion SSL avec le proxy inverse, qui communiquera ensuite avec keyCloak via http. Comme cette communication http se produit sur le même ordinateur, vous êtes toujours sécurisé. Nous pouvons utiliser Certbot pour configurer les certificats de renouvellement automatique. 

Si le chiffrement côté client n'est pas suffisant et que votre stratégie de sécurité nécessite un chiffrement de bout en bout, vous devrez trouver un moyen de configurer SSL via WildFly au lieu d'utiliser un proxy inverse.

Remarque: Je n'ai jamais réussi à faire fonctionner https correctement avec le portail administrateur. Peut-être s'agit-il simplement d'un bogue dans la version bêta de Keycloak 4.0 que j'utilise. Vous êtes supposé pouvoir définir le niveau SSL pour qu'il ne l'exige que pour les demandes externes, mais cela ne semble pas fonctionner. C'est pourquoi nous avons défini https sur none à l'étape 2. À partir de maintenant, nous continuerons à utiliser http sur un tunnel SSH, mais nous avions besoin de cette configuration de certificat SSL pour nos noeuds finaux oauth.

Étape 6) Chaque fois que vous essayez de visiter le site via https, vous allez déclencher une stratégie HSTS qui force automatiquement les requêtes http à se rediriger vers https. Suivez ces instructions pour effacer la règle HSTS de Chrome } _, puis, pour le moment, ne visitez plus la version https du site.

Étape 7) Configurez Apache . Recherchez d’abord où se trouve votre fichier httpd.conf } _. Votre fichier httpd.conf contient probablement des fichiers d'un répertoire distinct. Dans mon cas, j'ai trouvé tout mon fichier de configuration dans un répertoire conf.d situé à côté du dossier dans lequel se trouvait le fichier httpd.conf.

Une fois que vous avez trouvé vos fichiers de configuration, modifiez-les ou ajoutez les entrées d’hôte virtuel suivantes dans vos fichiers de configuration. Assurez-vous de ne pas remplacer les options SSL déjà présentes qui ont été générées par certbot. Une fois terminé, votre fichier de configuration devrait ressembler à ceci.

<VirtualHost *:80>
    RewriteEngine on

    #change https redirect_uri parameters to http
    RewriteCond %{request_uri}\?%{query_string} ^(.*)redirect_uri=https(.*)$
    RewriteRule . %1redirect_uri=http%2 [NE,R=302]

    #uncomment to force https
    #does not currently work
    #RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI}

    #forward the requests on to keycloak
    ProxyPreserveHost On    
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    RewriteEngine on

    #Disable HSTS
    Header set Strict-Transport-Security "max-age=0; includeSubDomains;" env=HTTPS


    #change https redirect_uri parameters to http
    RewriteCond %{request_uri}\?%{query_string} ^(.*)redirect_uri=https(.*)$
    RewriteRule . %1redirect_uri=http%2 [NE,R=302]

    #forward the requests on to keycloak
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    #Leave the items added by certbot alone
    #There should be a ServerName option
    #And a bunch of options to configure the location of the SSL cert files
    #Along with an option to include an additional config file

</VirtualHost>
</IfModule>

Étape 8) Redémarrez Apache. Utilisez Sudo systemctl restart httpd (CentOs) ou Sudo systemctl restart Apache2 (Ubuntu).

Étape 9) Avant d’essayer de vous connecter au serveur, puisque nous avons demandé à Keycloak d’utiliser http, nous devons configurer une autre méthode de connexion sécurisée. Cela peut être fait soit en installant un service VPN sur le serveur keycloak, soit en utilisant SOCKS. J'ai utilisé un proxy SOCKS. Pour ce faire, vous devez d’abord configurer le transfert de port dynamique. 

ssh -N -D 9905 [email protected]

Ou configurez-le via PuTTY .

Tout le trafic envoyé au port 9905 sera désormais routé de manière sécurisée via un tunnel SSH vers votre serveur. Assurez-vous que vous ajoutez la liste du port 9905 au pare-feu de votre serveur.

Une fois que vous avez configuré la redirection de port dynamique, vous devez configurer votre navigateur pour utiliser un proxy SOCKS sur le port 9905. Instructions ici .

Étape 10) Vous devriez maintenant pouvoir vous connecter au site maintenant. Pour vous connecter au site Web, accédez à http://127.0.0.1 , et le proxy SOCKS vous mènera à la console d'administration. Assurez-vous de désactiver le proxy SOCKS lorsque vous avez terminé, car il utilise les ressources de votre serveur et entraînera un ralentissement de la vitesse de l'Internet si vous le maintenez.

Étape 11) Ne me demandez pas combien de temps il m'a fallu pour comprendre tout ça.

2
Mr. Me

J'ai rencontré le paramètre non valide: problème de redirect_uri tout en suivant les exemples d'initialisation du printemps et du keycloak disponibles sur http://www.baeldung.com/spring-boot-keycloak . lors de l'ajout du client à partir du serveur keycloak, nous devons fournir l'URI de redirection de ce client afin que le serveur keycloak puisse effectuer la redirection . dans l'espace de redirection d'URI valide et cela a bien fonctionné!

1
Titans

Si vous utilisez le flux de codes d'autorisation, le paramètre de requête response_type doit être égal à code. Voir https://www.keycloak.org/docs/3.3/server_admin/topics/sso-protocols/oidc.html

0
ninyarko