在 Keycloak 禁用多重登录

Leo*_*ira 8 login keycloak

可以在 Keycloak 上禁用多次登录吗?

例子:

我在我的电脑上登录我的浏览器,然后在我的手机上登录……此时,keycloak 使我的另一个浏览器的令牌无效。

有可能的?

Sub*_*shi 3

看起来很多 Keycloak 用户对这个功能感兴趣,所以我发布了一个我在研究中发现的答案,这个功能是由非官方开发人员实现的,以下是他分享的内容

您可以从我的克隆分支获取身份验证器: https://github.com/mfdewit/keycloak/tree/KEYCLOAK-849-configurable-session-limits/services/src/main/java/org/keycloak/authentication/authenticators/会话限制

我创建了 2 个验证器:

`RealmSessionLimitsAuthenticator`: limits the total number of sessions for a realm.
`UserSessionLimitsAuthenticator`: limits the number of session per user account and per client.
Run Code Online (Sandbox Code Playgroud)

现在我建议您将它们(包括工厂)复制到您自己的项目中,并确保它们在META-INF/services. 另外,将AuthenticationFlowError.SESSION_LIMIT_EXCEEDED错误更改为您的 Keycloak 版本中存在的某个值。SESSION_LIMIT_EXCEEDED由我添加,仅存在于我的功能分支上。

缺点是,如果用户的会话被拒绝,您将无法向用户提供正确的反馈。

如果您对如何使用它们有任何疑问,请告诉我!

关于此任务的状态:我仍然需要编写集成测试才能提交合并请求。但我打算很快完成这件事。如果有人愿意帮助编写这些测试,我将不胜感激。

还是 keycloak 官方 JIRA 我没有发现他们是否在 Keycloak 的任何最新版本中合并了此功能

来源

https://github.com/mfdewit/keycloak/tree/KEYCLOAK-849-configurable-session-limits/services/src/main/java/org/keycloak/authentication/authenticators/sessionlimits