我有一个 Java 项目,我正在使用 keycloak 进行登录/身份验证。
我定义了一个组级别属性,我们在其中为该组中的用户设置会话空闲超时。
我希望该组中的用户从 UI 注销或在上述分钟后结束用户会话。 例如,如果组级别属性值为 5 分钟,领域级别会话空闲超时值为 30 分钟,则用户应在 5 分钟而不是 30 分钟后注销。
我希望所有用户的相应组级别属性覆盖领域 sso 会话空闲超时。
无法找到方法,因为我们无法修改我的项目的 keycloak 代码。
我是Keycloak版本20.0.1
尝试操作会话的lastAccessTime,但它不起作用,因为要在领域级别设置之前结束会话,我们需要设置一个过去的时间,以便keycloak默认在领域sso空闲时间后结束会话。
也许你可以像这样在前端实现它:
在前端应用程序中获取组级超时属性(例如,从 ID Token 或后端 API)。
监控前端应用程序中的使用活动以确定空闲时间(例如监听鼠标移动、点击和键盘事件)。
当空闲时间超过组级超时时,将浏览器重定向到 Keycloak 注销端点 (
/realms/{realm-name}/protocol/openid-connect/logout
)。