首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >keycloak:使用react用户可以登录,但当我尝试退出时,我会收到一条消息“无效参数: redirect_uri”

keycloak:使用react用户可以登录,但当我尝试退出时,我会收到一条消息“无效参数: redirect_uri”
EN

Stack Overflow用户
提问于 2022-04-24 01:32:26
回答 4查看 7.6K关注 0票数 5

我试图用一个react应用程序来使用keycloak,这是我当前的客户端配置.我在主领域中这样做了

这是我的keycloak配置

代码语言:javascript
运行
复制
export const keycloakConfig = {
  "realm": "master",
  "auth-server-url": "http://localhost:8180/",
  "ssl-required": "external",
  "resource": "demo",
  "public-client": true,
  "confidential-port": 0,
  "clientId" : "demo",
  "url" : "http://localhost:8180/"
};

我的代码是基于这个回购

现在.我可以在我的应用程序中毫无问题地登录,显示的网址是

代码语言:javascript
运行
复制
http://localhost:8180/realms/master/protocol/openid-connect/auth?client_id=demo&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2F&state=ba9daf04-ffdb-4ad3-b912-8be846f0684b&response_mode=fragment&response_type=code&scope=openid&nonce=558d71b7-2c66-44f8-9297-84694dc571a8

但当我试图退出时,我会收到一条信息

代码语言:javascript
运行
复制
Invalid parameter: redirect_uri

注销网址是这样的

代码语言:javascript
运行
复制
http://localhost:8180/realms/master/protocol/openid-connect/logout?redirect_uri=http%3A%2F%2Flocalhost%3A3000%2F

我不确定我的客户端配置是否正确,因为在我找到的几乎所有教程中都缺少几个参数

你知道这里有什么问题吗?谢谢你们

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-04-26 09:59:40

来自发行说明

OpenID连接注销 早期版本的Keycloak支持用户的自动注销,并通过打开注销端点URL (如http(s)://example-host/auth/realms/my-realm-name/protocol/openid-connect/logout?redirect_uri=encodedRedirectUri. )重定向到应用程序。虽然这种实施很容易使用,但它可能对性能和安全产生负面影响。新版本更好地支持基于OpenID连接RP启动的注销规范。参数redirect_uri不再受支持;此外,在新版本中,用户需要确认注销。当您包括参数post_logout_redirect_uri和参数id_token_hint以及用于登录的ID令牌时,可以省略确认并自动重定向到应用程序。 现有的部署以下列方式受到影响: 如果应用程序直接使用带有redirect_uri参数的注销端点的链接,则可能需要将其更改为 上文所述。考虑完全删除redirect_uri参数,或者用id_token_hint和post_logout_redirect_uri参数替换它。 如果使用java适配器,并且应用程序通过调用httpServletRequest.logout()进行注销,则不会受到影响,因为此调用 使用注销端点的后向通道变体,且该端点未被更改。 如果使用最新的javascript适配器,也不会受到影响。但是,如果应用程序使用的是较早版本的 JavaScript适配器,您将受到影响,因为此适配器使用带有不推荐的redirect_uri参数的注销端点的变体。在这种情况下,您可能需要升级到JavaScript适配器的最新版本。 对于Node.js适配器,同样的准则适用于JavaScript适配器。我们鼓励您更新最新版本。 由于适配器的旧版本使用了不推荐的redirect_uri参数。使用最新的Node.js适配器,只要您根据文档或Node.js适配器示例中描述的/logout URL使用注销,就不会受到影响。但是,在应用程序直接使用keycloak.logoutUrl方法时,可以考虑向该方法添加idTokenHint作为第二个参数。添加idTokenHint作为第二个参数的可能性是在这个版本中新添加的。idTokenHint需要是登录期间获得的有效ID令牌。添加idTokenHint是可选的,但是如果您省略了它,您的用户将需要确认前面描述的注销屏幕。此外,在注销后,它们将不会被重定向回应用程序。 有一个向后兼容性选项,它允许应用程序仍然使用redirect_uri参数的旧格式。 通过输入以下命令,可以在启动服务器时启用此参数: bin/kc.sh\bat --spi-login-protocol-openid-connect-legacy-logout-redirect-uri=true启动 使用此配置,仍然可以使用redirect_uri参数的格式。注意,如果省略id_token_hint,则需要确认屏幕。警告向后兼容性开关将在一些未来的版本中删除--可能是Keycloak 21。我们鼓励您像上面所描述的那样尽快更新您的客户端,而不是依赖这个开关。

票数 11
EN

Stack Overflow用户

发布于 2022-04-25 12:45:14

我已经有同样的问题好几个小时了。找到解决办法的唯一方法是手动将用户发送到:

/realms//protocol/openid-连接/注销

几天后,我开始使用Keycloak 18.0.0,我找不到解决这个问题的任何其他解决方案。我想只有在使用最新版本时才会发生这种情况。也许我们应该更好地阅读文件。

票数 2
EN

Stack Overflow用户

发布于 2022-08-23 14:51:20

对于最后的Keycloack版本,您必须显式地重定向到

代码语言:javascript
运行
复制
https://you server url/auth/realms/matrix/protocol/openid-connect/logout
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71984843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档