当我试图从我的api中点击以从keydove对用户进行身份验证时,它给了我一个错误无效参数:keydove页面上的redirect_uri。除了师父,我创造了自己的王国。KeyClope正在http上运行。请帮帮我。
您可以直接在URL栏中更改URL以克服此错误。在重定向到的URL中(您可能需要在Chrome开发工具中查找此URL),将域从master
更改为您刚刚创建的域,如果您没有使用https
,则确保重定向uri也使用http
。
步骤1)按照此文档设置MySql数据库(链接已断开。如果您找到适合您的好的替代文档,请随时更新此链接并删除此消息)。您可能还需要参考本文档。
步骤2)运行命令updaterealmset ssl_required='NONE',其中id='master'
注意:在这一点上,从技术上讲,您应该能够登录,但是KeyCloak的4.0版本正在使用https进行重定向uri,尽管我们刚刚关闭了https支持。在KeyCloak解决这个问题之前,我们可以通过反向代理绕过这个问题。反向代理是我们无论如何都想使用的东西,可以轻松创建SSL/TLS证书,而无需担心Java密钥库。
注2:在写完这些说明后,KeyCloak拿出了自己的代理。然后他们停止支持它,并建议使用oAuth2代理代替。它缺乏KeyCloak代理的一些功能,并且该代理的非官方版本仍在此处维护。我还没有尝试使用这些代理中的任何一个,但是在这一点上,您可能希望停止遵循我的指示,转而使用其中一个。
步骤3)安装Apache。我们将使用Apache作为反向代理(我尝试了NGINX,但NGINX有一些限制)。请参阅yum安装Apache(CentOs 7)和apt get安装Apache(Ubuntu 16),或查找特定发行版的说明。
步骤4)运行Apache
>
使用
sudo system ctl start http
(Centos)或sudo system ctl start apache2
(Ubuntu)
使用
sudo systemctl status httpd
(CentOs)或sudo systemctl status apache2
(Ubuntu)检查Apache是否正在运行。如果您在绿色文本中看到单词active(running)
,或者如果最后一个条目显示为启动了Apache HTTP服务器
那么你就很好了。
步骤5)我们将与反向代理建立SSL连接,然后反向代理将通过超文本传输协议与keyCloak通信。因为这种超文本传输协议通信发生在同一台机器上,所以您仍然是安全的。我们可以使用Certbot设置自动更新证书。
如果这种类型的加密不够好,并且您的安全策略需要端到端加密,您将必须弄清楚如何通过WildFly设置SSL,而不是使用反向代理。
注意:我从未真正能够让https与管理门户正常工作。也许这只是我正在使用的KeyClope 4.0测试版中的一个bug。假设您能够将SSL级别设置为仅在外部请求时需要它,但这似乎不起作用,这就是为什么我们在步骤2中将https设置为“无”。从这里开始,我们将继续通过SSH隧道使用http来管理管理员设置。
步骤6)每当您尝试通过https访问网站时,您将触发HSTS策略,该策略将自动强制超文本传输协议请求重定向到https。按照这些说明从Chrome清除HSTS规则,然后暂时不要再次访问网站的https版本。
步骤7)配置Apache。在下面的代码块中添加虚拟主机配置。如果您从未这样做过,那么您需要做的第一件事就是找出在哪里添加这个配置文件。
在RHEL和其他一些发行版上,您需要找到您的httpd的位置。conf或apache2。conf文件位于。该配置文件应该从另一个文件夹(如
conf.d
)加载虚拟主机配置文件。
如果你使用Ubuntu或Debian,
你的配置文件将位于/etc/apache2/site-可用/
,你将有一个额外的步骤,需要通过运行命令sudo a2ensite<--plhd--0来启用它们/>
.这将创建一个符号链接在/etc/apache2/site-启用/
,这是Apache在Ubuntu/Debian上查找配置文件的地方(请记住配置文件被放置在站点可用的,略有不同)。
所有发行版
一旦你找到配置文件,改变,或添加,以下虚拟主机条目在你的配置文件。请确保您不会覆盖由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>
步骤8)重新启动Apache。使用
sudo systemctl restart httpd
(CentOs)或sudo systemctl restart apache2
(Ubuntu)。
步骤9)在您有机会尝试登录到服务器之前,因为我们告诉KeyClope使用http,所以我们需要设置另一种安全连接方法。这可以通过在KeyClope服务器上安装VPN服务或使用SOCKS来实现。我用了一个袜子代理。为此,首先需要设置动态端口转发。
ssh-N-d9905user@example.com
或者通过油灰来设置。
发送到9905端口的所有流量现在都将通过SSH隧道安全路由到您的服务器。确保在服务器的防火墙上列出9905端口的白名单。
完成动态端口转发设置后,您需要将浏览器设置为在端口9905上使用SOCKS代理。这里有说明。
步骤10)您现在应该能够登录到KeyClope管理门户。要连接到该网站,请转到http://127.0.0.1,SOCKS代理将带您进入管理控制台。确保在完成操作时关闭SOCKS代理,因为它确实利用了服务器的资源,如果继续打开,将导致您的internet速度降低。
第11步)不要问我花了多长时间才弄明白这一切。
如果你是一名教师。Net devlooper请检查以下配置keydepeauthentication options类set CallbackPath=RedirectUri,//此属性需要以其他方式设置它将显示无效的RedirectUri错误
我也面临同样的错误。在我的例子中,问题是有效的重定向URI不正确。这就是我遵循的步骤。
首先以管理员用户身份登录keyCloack。然后选择您的领域(也许您将自动定向到该领域)。然后你会看到下面的屏幕
从左面板中选择客户端。然后选择为应用程序配置的相关客户端。默认情况下,您将设置选项卡,如果不选择它。我的应用程序在端口3000上运行,因此我的正确设置如下所示。假设您有一个应用程序在localhost:3000上运行,那么您的设置应该如下
对我有效的是添加Wildchar'*'。虽然对于生产构建,我将更具体地描述这个领域的价值。但出于开发目的,您可以这样做。
设置在KeyClope管理控制台下可用-
编辑:不要在生产中这样做。这样做会产生一个很大的安全漏洞。
问题内容: 有人知道为什么chrome参数不起作用吗? 我也尝试过在切换台之前不加“-”并仅给出一个参数… Chrome启动,但没有激活的标志。 我使用最新的chromedriver。 问题答案: 我最近发现的类不与当前的硒和铬出于某种原因(如硒2.33.0,铬30和2013年7月)正常工作。 我相信,我链接的答案也是您解决问题的方法。只需使用,这些对我来说一直很好:
我想让它在每天每小时的第5,15,25,35,45和55分钟运行。这似乎与这里的AWS调度事件文档一致http://docs.AWS.amazon.com/amazoncloudwatch/latest/Events/scheduledevents.html。 上面的文档允许用0到59之间的逗号分隔值表示分钟,并使用*通配符反映小时、月日(或周日)、月和年。 我尝试在Lambda控制台(创建函数并
我正在上载excel工作表,并希望将其数据移动到数据库中的另一个表中。最近两天我收到了一个错误(),但是,如果我设计了一个非常简单的应用程序,它就可以正常工作。请帮帮我
我正在用Java实现oauth,顺序如下: 1) 发送帖子https://api。啁啾com/oauth/request_token(带回调)Twitter响应包含oauth_token、oauth_token_secret和oauth_callback_confirm=true 2) 正在重定向到https://api。啁啾com/oauth/authenticate?oauth_token={
当用户单击“登录”时,会重定向到KeyClope登录页面 [Server:node-00]13:40:00709警告[org.keydape.adapters.OAuthRequestAuthenticator](默认任务-30)状态参数无效 我的申请是: 应用程序URL为https://localhost:8443/app 当我使用超文本传输协议时,它可以工作。但是当我使用https时,错误就来
问题内容: 上面的代码因以下错误而失败 SQLSTATE [HY093]:参数号无效:参数未定义 虽然什么时候才执行? 这里发生了什么? 问题答案: 您收到的此错误: SQLSTATE [HY093]:参数号无效:参数未定义 是因为&中的元素数不相同或包含1个以上的元素。 如果包含多个元素,则插入操作将失败,因为query()中仅引用了1个列名 如果&不包含相同数量的元素,则由于查询期望x参数,但