当前位置: 首页 > 知识库问答 >
问题:

参数无效:redirect_uri

华懿轩
2023-03-14

当我试图从我的api中点击以从keydove对用户进行身份验证时,它给了我一个错误无效参数:keydove页面上的redirect_uri。除了师父,我创造了自己的王国。KeyClope正在http上运行。请帮帮我。

共有3个答案

施德运
2023-03-14

您可以直接在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步)不要问我花了多长时间才弄明白这一切。

  • 邬弘化
    2023-03-14

    如果你是一名教师。Net devlooper请检查以下配置keydepeauthentication options类set CallbackPath=RedirectUri,//此属性需要以其他方式设置它将显示无效的RedirectUri错误

    我也面临同样的错误。在我的例子中,问题是有效的重定向URI不正确。这就是我遵循的步骤。

    首先以管理员用户身份登录keyCloack。然后选择您的领域(也许您将自动定向到该领域)。然后你会看到下面的屏幕

    从左面板中选择客户端。然后选择为应用程序配置的相关客户端。默认情况下,您将设置选项卡,如果不选择它。我的应用程序在端口3000上运行,因此我的正确设置如下所示。假设您有一个应用程序在localhost:3000上运行,那么您的设置应该如下

    毕黎昕
    2023-03-14

    对我有效的是添加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参数,但