我试图用一个react应用程序来使用keycloak,这是我当前的客户端配置.我在主领域中这样做了
这是我的keycloak配置
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/"
};
我的代码是基于这个回购的
现在.我可以在我的应用程序中毫无问题地登录,显示的网址是
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
但当我试图退出时,我会收到一条信息
Invalid parameter: redirect_uri
注销网址是这样的
http://localhost:8180/realms/master/protocol/openid-connect/logout?redirect_uri=http%3A%2F%2Flocalhost%3A3000%2F
我不确定我的客户端配置是否正确,因为在我找到的几乎所有教程中都缺少几个参数
你知道这里有什么问题吗?谢谢你们
发布于 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。我们鼓励您像上面所描述的那样尽快更新您的客户端,而不是依赖这个开关。
发布于 2022-04-25 12:45:14
我已经有同样的问题好几个小时了。找到解决办法的唯一方法是手动将用户发送到:
/realms//protocol/openid-连接/注销
几天后,我开始使用Keycloak 18.0.0,我找不到解决这个问题的任何其他解决方案。我想只有在使用最新版本时才会发生这种情况。也许我们应该更好地阅读文件。
发布于 2022-08-23 14:51:20
对于最后的Keycloack版本,您必须显式地重定向到
https://you server url/auth/realms/matrix/protocol/openid-connect/logout
https://stackoverflow.com/questions/71984843
复制相似问题