keycloak Invalid parameter: redirect_uri
当我尝试从我的api击中Keycloak的用户身份,但是它给我错误信息:Invalid parameter:keycloak页面上的redirect_uri。 除了主人,我已经建立了自己的境界。 keycloak在http上运行。 请帮我。
对我有用的是添加通配符'*'。尽管对于生产版本,我将更具体地介绍该领域的价值。但是出于开发目的,您可以执行此操作。
在keycloak管理控制台下-> Realm_Name-> Cients-> Client_Name下可用的设置。
编辑:我不建议将上述解决方案用于生产版本,因为这可能会导致安全漏洞。
我遇到了同样的错误。就我而言,问题是有效重定向URI不正确。这就是我遵循的步骤。
首先以管理员用户身份登录keycloack。
然后选择您的领域(也许您将自动定向到该领域)。然后你会看到下面的屏幕
从左侧面板中选择客户端。
然后选择您为应用程序配置的相关客户端。
默认情况下,您将处于"设置"选项卡,如果未选择它。
我的应用程序在端口3000上运行,因此我的正确设置如下所示。
假设您有一个运行在localhost:3000上的应用程序,因此您的设置应如下所示
如果由于创建的新领域而出现此错误
在您重定向到的URL中(您可能必须在Chrome开发工具中查找此URL),将域从
好。
如果由于尝试在面向公众的域(而非本地主机)上设置Keycloak而收到此错误,
第1步)
请按照本文档设置MySql数据库。您可能还需要参考官方文档。
好。
第2步)
运行命令
好。
注意:
此时,从技术上来说,您应该可以登录,但是即使我们只是关闭了https支持,Keycloak的4.0版也将https用于重定向uri。在Keycloak修复此问题之前,我们可以使用反向代理解决此问题。我们将希望使用反向代理轻松地创建SSL / TLS证书,而不必担心Java密钥库。
好。
注2:此后,Keycloak附带了自己的代理。我还没有尝试过,但是在这一点上,您可能想停止按照我的指示去检查(keycloak Gatekeeper)[https://www.keycloak.org/downloads.html]。如果您在设置Keycloak Gatekeeper时遇到问题,我将不遗余力地指导您使用Apache设置反向代理。
好。
步骤3)安装Apache。我们将使用Apache作为反向代理(我尝试了NGINX,但NGINX遇到了一些限制)。请参阅yum安装Apache(CentOs 7)和apt-get安装Apache(Ubuntu 16),或查找特定发行版的说明。
好。
步骤4)运行Apache
好。
使用
好。
使用
(Ubuntu)检查Apache是??否正在运行。如果您看到绿色的文字
好。
好。
步骤5)我们将与反向代理建立SSL连接,然后反向代理将通过http与keyCloak进行通信。由于此HTTP通信是在同一台计算机上进行的,因此您仍然是安全的。我们可以使用Certbot来设置自动更新证书。
好。
如果这种类型的加密还不够好,并且您的安全策略需要端到端加密,那么您将必须弄清楚如何通过WildFly而不是使用反向代理来设置SSL。
好。
注意:
我从来没有真正能够使https与管理门户正常工作。也许这可能只是我正在使用的Keycloak 4.0 beta版中的一个错误。您假设能够将SSL级别设置为仅对外部请求需要它,但这似乎不起作用,这就是为什么我们在步骤2中将https设置为none的原因。从这里开始,我们将继续通过SSH隧道使用http来管理管理员设置。
好。
步骤6)
每当您尝试通过https访问该网站时,都会触发HSTS策略,该策略将自动强制http请求重定向到https。请按照以下说明从Chrome清除HSTS规则,然后暂时不要再次访问该网站的https版本。
好。
步骤7)
配置Apache。
首先找到您的httpd.conf文件所在的位置。您的httpd.conf文件可能包含来自单独目录的配置文件。就我而言,我的所有配置文件都位于
好。
找到conf文件后,更改或在conf文件中添加以下虚拟主机条目。确保您不覆盖由certbot生成的现有SSL选项。完成后,您的配置文件应如下所示。
好。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <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> |
步骤8)重新启动Apache。使用
好。
步骤9)
由于我们告诉Keycloak使用http,因此在您有机会尝试登录服务器之前,我们需要设置另一种安全连接方法。这可以通过在密钥斗篷服务器上安装VPN服务或使用SOCKS来完成。我使用了SOCKS代理。为此,您首先需要设置动态端口转发。
好。
好。
或通过腻子进行设置。
好。
现在,所有发送到端口9905的流量都将通过SSH隧道安全地路由到您的服务器。确保将服务器防火墙上的端口9905列入白名单。
好。
一旦进行了动态端口转发设置,就需要将浏览器设置为在端口9905上使用SOCKS代理。此处的说明。
好。
步骤10)您现在应该能够登录Keycloak管理门户。要连接到网站,请访问http://127.0.0.1,SOCKS代理将带您进入管理控制台。确保完成后关闭SOCKS代理,因为它确实利用了服务器的资源,如果继续使用,将会导致互联网速度变慢。
好。
步骤11)不要问我花了多长时间才能弄清所有这些。
好。
好。
转到keycloak管理控制台> SpringBootKeycloak> Cients>登录应用程序页面。
在有效重定向uris部分中添加
http:// localhost:8080 / sso / login
这将有助于解决间接uri问题
修改Keycloak上下文路径后,如果发现此问题,则需要对重定向URL设置进行其他更改:
standalone.xml中的
standalone.xml中的
重新启动Keycloak并导航到登录页面(现在是
登录Keycloak管理控制台网站,选择领域及其客户端,然后确保客户端的所有URI都带有协议前缀,例如
解决此问题的另一种方法是,查看Keycloak服务器控制台输出,找到表明请求被拒绝的行,从中复制
在http://www.baeldung.com/spring-boot-keycloak上提供spring boot和keycloak示例后,我遇到了Invalid parameter:redirect_uri问题问题。从keycloak服务器添加客户端时,我们必须为该客户端提供重定向URI,以便keycloak服务器可以执行重定向。
当我多次遇到相同的错误时,我接着从keycloak服务器控制台复制了正确的URL,并在有效的Redirect URIs空间中提供了它,并且工作正常!
您需要检查keycloak管理控制台以进行前端配置。必须为重定向URL和Web来源错误地配置了它。
如果您的用户没有在用户定义中委派的预期角色(在下拉菜单中设置领域的角色),也会引发此错误。
如果您尝试注销后重定向到keycloak登录页面(就像我以前一样),则默认情况下不允许这样做,但还需要在客户端管理控制台的"有效重定向URI"设置中进行配置。
如果使用的是授权码流,则