当我试图从我的api命中来从keycloak验证用户,但它给我错误无效参数:keycloak页面上的redirect_uri.除了大师,我创造了自己的境界.keycloak正在http上运行.请帮我.
try*_*arn 33
对我有用的是添加wildchar '*'.虽然对于生产版本,我将更具体地说明这个领域的价值.但是出于开发目的,你可以做到这一点.
设置可用,keycloak管理控制台 - > Realm_Name - > Cients - > Client_Name.
编辑:我不建议生产构建的上述解决方案,因为这可能会导致安全漏洞.
小智 23
KEYCLOAK 18 的重要更新
在最新的 keycloak 18 中,他们已弃用 openid 连接注销的 redirect_uri 变量 -> https://www.keycloak.org/docs/latest/upgrading/index.html#openid-connect-logout
Men*_*han 19
我遇到了同样的错误.在我的情况下,问题是 有效重定向URI不正确.所以这些是我遵循的步骤.
首先以管理员用户身份登录keycloack.然后选择你的领域(也许你将自动指向领域).然后你会看到下面的屏幕
从左侧面板中选择客户端.然后选择您为应用配置的相关客户端.默认情况下,您将设置选项卡,如果不选择它.我的应用程序在端口3000上运行,所以我的正确设置如下所示.假设你有一个应用程序运行在localhost:3000上,所以你的设置应该是这样的
wp-*_*com 14
在您重定向到的URL中(您可能必须在Chrome开发工具中查找此URL),将领域从更改为master刚创建的域,如果您未使用https,请确保redirect_uri也正在使用http。
步骤1) 按照本文档设置MySql数据库。您可能还需要参考官方文档。
步骤2)
运行命令update REALM set ssl_required = 'NONE' where id = 'master';
注意: 此时,从技术上来说,您应该可以登录,但是即使我们只是关闭了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
使用sudo systemctl start httpd(CentOs)或sudo systemctl start apache2(Ubuntu)
使用sudo systemctl status httpd(CentOs)或sudo systemctl status apache2
(Ubuntu)检查Apache是否正在运行。如果您看到绿色文字,active (running)或者最后一个条目显示为“ Started The Apache HTTP Server.好”。
步骤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.d位于与httpd.conf文件所在的文件夹相邻的目录中。
找到conf文件后,更改或在conf文件中添加以下虚拟主机条目。确保您不覆盖由certbot生成的现有SSL选项。完成后,您的配置文件应如下所示。
<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>
Run Code Online (Sandbox Code Playgroud)
步骤8)重新启动Apache。使用sudo systemctl restart httpd(CentOs)或sudo systemctl restart apache2(Ubuntu)。
步骤9) 在您有机会尝试登录服务器之前,由于我们告诉Keycloak使用http,因此我们需要设置另一种安全连接方法。这可以通过在密钥斗篷服务器上安装VPN服务或使用SOCKS来完成。我使用了SOCKS代理。为此,您首先需要设置动态端口转发。
ssh -N -D 9905 user@example.com
或通过Putty进行设置。
现在,所有发送到端口9905的流量都将通过SSH隧道安全地路由到您的服务器。确保将服务器防火墙上的端口9905列入白名单。
一旦你有动态端口转发设置,您将需要设置你的浏览器上的端口使用SOCKS代理9905. 这里说明。
步骤10)您现在应该能够登录Keycloak管理门户。要连接到该网站,请访问http://127.0.0.1,SOCKS代理将带您进入管理控制台。确保完成后关闭SOCKS代理,因为它确实利用了服务器的资源,如果继续使用,将会导致互联网速度变慢。
步骤11)不要问我花了多长时间才能弄清所有这些。
Ste*_*ane 12
登录Keycloak管理控制台网站,选择领域及其客户端,然后确保客户端的所有URI都以协议为前缀,即例如http://。一个例子是http://localhost:8082/*
解决该问题的另一种方法是查看 Keycloak 服务器控制台输出,找到指示请求被拒绝的行,从中复制显示redirect_uri的值并将其粘贴到* Valid Redirect URIsKeycloak 管理控制台网站的客户端字段中。请求的 URI 就是可接受的之一。
tni*_*ada 10
[适用于 Keycloak 版本 18 或更高版本]
如果您使用的是Keycloak 18或更高版本,则上述解决方案均无效。
根据版本 18 发行说明。Keycloak 不再支持使用redirect_uri注销。您需要包含post_logout_redirect_uri 和id_token_hint作为参数。
请检查此问题的答案以获取更多信息。 keycloak:使用 React 用户可以登录,但是当我尝试注销时,我收到一条消息“无效参数:redirect_uri”
小智 8
转到keycloak管理控制台> SpringBootKeycloak> Cients> login-app页面.在valid-redirect uris部分中添加 http:// localhost:8080/sso/login
这将有助于解决间接问题
修改Keycloak上下文路径后,如果发现此问题,则需要对重定向URL设置进行其他更改:
<web-context>yourchange/auth</web-context>回
<web-context>auth</web-context>standalone.xml/auth/admin)/auth/admin/master/console/*为
/yourchange/auth/admin/master/console/* <web-context>yourchange/auth</web-context>放入standalone.xml中,重新启动Keycloak并导航到登录页面(现在是
/yourchange/auth/admin)如果您在领域名称中添加空格,似乎可能会出现此问题。我已将名称设置为Debugging Realm,但收到此错误。当我改变DebuggingRealm它的工作。
显示名称中仍然可以有空格。奇怪的是 keycloak 不会在管理员输入中检查这一点。
小智 5
也遇到了这个问题。经过两天的绞尽脑汁,我发现 Keycloak 中的 URL 是区分大小写的。然而,浏览器会将 URL 转换为小写,这意味着 Keycloak 中的大写 URL 永远不会工作。
例如,我的服务器名称是 MYSERVER(主机名返回 MYSERVER)
Keycloak URLs are https://MYSERVER:8080/*
Browse to https://myserver:8080 -> fails invalid_url
Browse to https://MYSERVER:8080 -> fails invalid_url
Change Keycloak URLs to https://myserver:8080/*
Browse to https://myserver:8080 -> works
Browse to https://MYSERVER:8080 -> works
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54292 次 |
| 最近记录: |