微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Keycloack:注销后,访问令牌仍然可以使用

如何解决Keycloack:注销后,访问令牌仍然可以使用

我有一个到 keycloack 服务器的 Nginx/openresty 客户端,用于使用 openid 进行授权。 我正在使用 lua-resty-openidc 来允许访问代理背后的服务。

用户可以访问他的个人资料 https://<my-server>/auth/realms/<real-name>/account 并通过注销 https://<my-server>/auth/realms/<real-name>/protocol/openid-connect/logout

问题是,即使注销后,用户仍然可以访问服务器后面的服务,基本上看起来他从keycloak得到的token还是有效的什么的....这也是观察到的行为其他用户,请参阅例如 this question on how to logout from keycloak 来自 ch271828n 的评论

如何确保用户在注销后在重新登录之前无法再访问?

解决方法

我不得不检查 lua source code,但我想我已经弄清楚了注销行为:Lua-resty-openidc 建立会话,当检测到特定的 url 访问时它们被终止(它由 { 控制) {1}} 我们需要将其设置为服务路径中的地址,例如 .../service/logout)

本质上有两个url需要点击,一个是keycloack注销,一个是openresty session注销。在我们访问 val orderPrefs = getSharedPreferences("order",Context.MODE_PRIVATE) val editor = orderPrefs.edit() editor.putStringSet("recentlyViewedRestaurant",test).apply()

处的 opts.logout_path 后,访问 keycloack 注销 url opts.logout_path 是由 lua 完成的

所以在正确设置一切之后我们要做的就是注销点击https://<keycloak-server>/auth/realms/<my-realm>/protocol/openid-connect/logout。这将破坏会话并将我们注销。

我认为我们需要将 https://<our-nginx-server>/service/logout 设置为 https://<our-nginx-server>/service/logout,另外请注意,根据我的实验,出于某种原因,设置 opts.revoke_tokens_on_logout 可能会导致用户由于以下原因无法退出重定向。

这是一个示例,说明我们需要 nginx.conf 来完成这项工作....

true

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。