Cuando intento acceder desde mi api para autenticar al usuario desde keycloak, pero me da un error Parámetro no válido: redirect_uri en la página de keycloak. He creado mi propio reino aparte del maestro. keycloak se ejecuta en http. Por favor, ayúdame.
83
Respuestas:
Lo que funcionó para mí fue agregar wildchar '*' . Aunque para las construcciones de producción, voy a ser más específico con el valor de este campo. Pero para propósitos de desarrollo, puede hacer esto.
Configuración disponible en la consola de administración de keycloak -> Realm_Name -> Clientes -> Client_Name .
EDITAR: NO HAGA ESTO EN PRODUCCIÓN. Hacerlo crea una gran falla de seguridad.
fuente
Si usted es un desarrollador de .Net, compruebe a continuación Configuraciones keycloak Opciones de autenticación class set CallbackPath = RedirectUri, // esta propiedad debe configurarse de lo contrario, mostrará un error de redirecti no válido
Me enfrenté al mismo error. En mi caso, el problema era que los URI de redireccionamiento válidos no eran correctos. Entonces estos son los pasos que seguí.
Primero inicie sesión en keycloack como usuario administrador. Luego seleccione su reino (tal vez lo dirija automáticamente al reino). Entonces verá la siguiente pantalla
Seleccione Clientes en el panel izquierdo. Luego seleccione el cliente relevante que configuró para su aplicación. De forma predeterminada, estará en la pestaña Configuración , si no la selecciona. Mi aplicación se estaba ejecutando en el puerto 3000, por lo que mi configuración correcta es la siguiente. digamos que tiene una aplicación que se ejecuta en localhost: 3000, por lo que su configuración debería ser así
fuente
Si recibe este error debido a un nuevo reino que creó
En la URL a la que se le redirige (es posible que tenga que buscar esta URL en las herramientas de desarrollo de Chrome), cambie el dominio por
master
el que acaba de crear y, si no lo está usandohttps
, asegúrese de que redirect_uri también lo esté usandohttp
.Si recibe este error porque está intentando configurar Keycloak en un dominio público (no localhost)
Paso 1) Siga esta documentación para configurar una base de datos MySql. También es posible que deba consultar la documentación oficial .
Paso 2) Ejecuta el comando
update REALM set ssl_required = 'NONE' where id = 'master';
Nota: En este punto, técnicamente debería poder iniciar sesión, pero la versión 4.0 de Keycloak está usando https para redireccionar uri a pesar de que simplemente desactivamos el soporte de https. Hasta que Keycloak solucione esto, podemos solucionarlo con un proxy inverso. Un proxy inverso es algo que querremos usar de todos modos para crear fácilmente certificados SSL / TLS sin tener que preocuparnos por los almacenes de claves de Java.
Nota 2: Keycloak ha salido desde entonces con su propio proxy. No he probado esto todavía, pero en este punto, es posible que desee dejar de seguir mis instrucciones y verificar (keycloak gatekeeper) [ https://www.keycloak.org/downloads.html] . Si tiene problemas para configurar Keycloak Gatekeeper, guardaré mis instrucciones para configurar un proxy inverso con Apache.
Paso 3) Instale Apache. Usaremos Apache como proxy inverso (probé NGINX, pero NGINX tenía algunas limitaciones que se interpusieron en el camino). Vea yum instalando Apache (CentOs 7) y apt-get install Apache (Ubuntu 16), o busque las instrucciones para su distribución específica.
Paso 4) Ejecuta Apache
Utilice
sudo systemctl start httpd
(CentOs) osudo systemctl start apache2
(Ubuntu)Utilice
sudo systemctl status httpd
(CentOs) osudo systemctl status apache2
(Ubuntu) para comprobar si Apache se está ejecutando. Si ves las palabras en texto verdeactive (running)
o si la última entrada diceStarted The Apache HTTP Server.
, estás bien.Paso 5) Estableceremos una conexión SSL con el proxy inverso, y luego el proxy inverso se comunicará con keyCloak a través de http. Debido a que esta comunicación http ocurre en la misma máquina, aún estás seguro. Podemos usar Certbot para configurar certificados de renovación automática.
Si este tipo de cifrado no es lo suficientemente bueno y su política de seguridad requiere un cifrado de extremo a extremo, tendrá que averiguar cómo configurar SSL a través de WildFly , en lugar de utilizar un proxy inverso.
Nota: En realidad, nunca pude hacer que https funcionara correctamente con el portal de administración. Quizás esto haya sido un error en la versión beta de Keycloak 4.0 que estoy usando. Se supone que puede configurar el nivel de SSL para que solo lo requiera para solicitudes externas, pero esto no pareció funcionar, por lo que configuramos https en ninguno en el paso 2. De aquí en adelante, continuaremos usando http sobre un túnel SSH para administrar la configuración de administrador.
Paso 6) Siempre que intente visitar el sitio a través de https, activará una política HSTS que forzará automáticamente las solicitudes http para redirigir a https. Siga estas instrucciones para borrar la regla HSTS de Chrome y, por el momento, no vuelva a visitar la versión https del sitio.
Paso 7) Configurar Apache. Primero busque dónde se encuentra su archivo httpd.conf . Su archivo httpd.conf probablemente incluye archivos de configuración de un directorio separado. En mi caso, encontré todo mi archivo de configuración en un
conf.d
directorio ubicado junto a la carpeta en la que estaba el archivo httpd.conf.Una vez que encuentre sus archivos conf, cambie o agregue las siguientes entradas de host virtual en sus archivos conf. Asegúrese de no anular las opciones SSL ya presentes que fueron generadas por certbot. Cuando termine, su archivo de configuración debería verse así.
Paso 8) Reinicie Apache. Utilice
sudo systemctl restart httpd
(CentOs) osudo systemctl restart apache2
(Ubuntu).Paso 9) Antes de que tenga la oportunidad de intentar iniciar sesión en el servidor, ya que le dijimos a Keycloak que usara http, necesitamos configurar otro método de conexión segura. Esto se puede hacer instalando un servicio VPN en el servidor de capa de claves o usando SOCKS. Usé un proxy SOCKS. Para hacer esto, primero deberá configurar el reenvío de puertos dinámico.
ssh -N -D 9905 [email protected]
O configúrelo a través de Putty .
Todo el tráfico enviado al puerto 9905 ahora se enrutará de forma segura a través de un túnel SSH a su servidor. Asegúrese de incluir el puerto 9905 en la lista blanca en el firewall de su servidor.
Una vez que haya configurado el reenvío de puerto dinámico, deberá configurar su navegador para usar un proxy SOCKS en el puerto 9905. Instrucciones aquí .
Paso 10) Ahora debería poder iniciar sesión en el portal de administración de Keycloak. Para conectarse al sitio web, vaya a http://127.0.0.1 y el proxy SOCKS lo llevará a la consola de administración. Asegúrese de apagar el proxy SOCKS cuando haya terminado, ya que utiliza los recursos de su servidor, y resultará en una velocidad de Internet más lenta para usted si se mantiene encendido.
Paso 11) No me pregunte cuánto tiempo me tomó darme cuenta de todo esto.
fuente
Vaya a la consola de administración de keycloak> SpringBootKeycloak> Clientes> página de inicio de sesión de la aplicación. Aquí, en la sección uris de redireccionamiento válido, agregue http: // localhost: 8080 / sso / login
Esto ayudará a resolver el problema de uri indirecto
fuente
web-context
configuración de KeycloakSi observa este problema después de haber realizado una modificación en la ruta de contexto de Keycloak, deberá realizar un cambio adicional en la configuración de la URL de redireccionamiento:
<web-context>yourchange/auth</web-context>
de nuevo a<web-context>auth</web-context>
en standalone.xml/auth/admin
)/auth/admin/master/console/*
a/yourchange/auth/admin/master/console/*
<web-context>yourchange/auth</web-context>
ingrese su cambio original en standalone.xml Reinicie Keycloak y navegue a la página de inicio de sesión (que es ahora/yourchange/auth/admin
)fuente
redirect_uris
en la base de datos y ajustar los campos de valorInicie sesión en el sitio web de la consola de administración de Keycloak, seleccione el reino y su cliente, luego asegúrese de que todos los URI del cliente tengan el prefijo del protocolo, es decir,
http://
por ejemplo. Un ejemplo seríahttp://localhost:8082/*
Otra forma de resolver el problema es ver la salida de la consola del servidor Keycloak, ubicar la línea que indica que la solicitud fue rechazada, copiar el
redirect_uri
valor mostrado y pegarlo en el* Valid Redirect URIs
campo del cliente en el sitio web de la consola de administración de Keycloak. El URI solicitado es entonces uno de los aceptables.fuente
Me enfrenté al problema del parámetro Invalid: redirect_uri mientras seguía el ejemplo de arranque de primavera y keycloak disponible en http://www.baeldung.com/spring-boot-keycloak . al agregar el cliente desde el servidor keycloak tenemos que proporcionar el URI de redireccionamiento para ese cliente para que el servidor keycloak pueda realizar la redirección. Cuando me enfrenté al mismo error varias veces, seguí copiando la URL correcta de la consola del servidor de capa clave y la proporcioné en el espacio de URI de redireccionamiento válido, ¡y funcionó bien!
fuente
incluso me enfrenté al mismo problema. Lo rectifiqué yendo al cliente en particular bajo el reino, respectivamente, en él, redireccione la URL agregue * después de su URL completa.
EL PROBLEMA SE RESOLVERÁ
Ejemplo: redireccionar URI: http: localhost: 3000 / myapp / generator / *
fuente
Si está utilizando el flujo de código de autorización, el
response_type
parámetro de consulta debe ser igual acode
. Ver https://www.keycloak.org/docs/3.3/server_admin/topics/sso-protocols/oidc.htmlfuente
Debe verificar la consola de administración de keycloak para la configuración frontal. Debe estar configurado incorrectamente para redireccionar URL y orígenes web.
fuente
Si está intentando redirigir a la página de inicio de sesión de keycloak después de cerrar la sesión (como yo), eso no está permitido de forma predeterminada, pero también debe configurarse en la configuración "URI de redireccionamiento válido" en la consola de administración de su cliente.
fuente
Este error también se produce cuando su Usuario no tiene el rol esperado delegado en la definición de Usuario (Establecer rol para el Reino en el menú desplegable).
fuente
Enfrenté el mismo problema. Lo rectifiqué yendo al cliente en particular bajo el reino, respectivamente, en él, redireccione la URL agregue * después de su URL completa.
fuente
Para mí, faltaba una barra al final
/
en el valor deValid Redirect URIs
fuente
Su URI de redireccionamiento en su código (keycloak.init) debe ser el mismo que el URI de redireccionamiento configurado en el servidor de Keycloak (cliente -> Uri válido)
fuente
Verifique que el valor del parámetro redirect_uri esté en la lista blanca para el cliente que está utilizando. Puede gestionar la configuración del cliente a través de la consola de administración.
El URL de redireccionamiento debe coincidir exactamente con uno de los URL de redireccionamiento de la lista blanca, o puede usar un comodín al final del URL que desea incluir en la lista blanca. Ver: https://www.keycloak.org/docs/latest/server_admin/#_clients
Tenga en cuenta que Keycloak permite el uso de comodines para redirigir uri en la lista blanca, pero en realidad es una violación de la especificación OpenId Connect. Vea la discusión sobre esto en https://lists.jboss.org/pipermail/keycloak-dev/2018-December/011440.html
fuente
Parece que este problema puede ocurrir si coloca espacios en blanco en el nombre de su Reino. Tenía el nombre configurado
Debugging Realm
y recibí este error. Cuando me cambié aDebuggingRealm
funcionó.Todavía puede tener espacios en blanco en el nombre para mostrar. Es extraño que keycloak no verifique esto en la entrada del administrador.
fuente