2.3. 持久性用户会话
新功能 persistent-user-sessions
将在线用户会话和在线客户端会话存储在数据库中。即使红帽构建的 Keycloak 的所有实例都已重启或升级,这个更改也允许用户保持登录。
以前的红帽构建的 Keycloak 版本只会在数据库中存储离线用户和离线客户端会话。这个行为与以前的红帽构建的 Keycloak 版本相同。
迁移到此版本时,所有现有的在线用户会话和在线客户端会话都会被清除,用户将被注销。离线用户会话和离线客户端会话不会受到影响。
2.3.1. 启用持久的用户会话
在 Red Hat build of Keycloak 26 中,所有用户会话都默认保留在数据库中。通过禁用该功能,可以将此行为恢复到以前的状态。配置分布式缓存 指南中的 Volatile 用户会话 流程。
启用持久会话后,在线用户会话、离线用户会话、在线客户端会话和离线客户端会话的内存缓存会默认限制为每个节点 10000 个条目,这会减少 Keycloak 用于大型安装的总内存用量。根据需要,从内存驱除的项目将从数据库按需加载。启用这个功能后,预期会减少内存用量以及每次登录时数据库利用率增加,注销和刷新令牌请求。
要在红帽构建的 Keycloak 多站点设置中配置外部 Data Grid 中的缓存大小,请参阅使用 Data Grid Operator 部署 HA。
启用此功能后,选项 spi-user-sessions-infinispan-offline-session-cache-entry-lifespan-override
和 spi-user-sessions-infinispan-offline-client-session-cache-entry-lifespan-override
不再可用,因为它们之前用来覆盖离线会话已保持在内存中。
2.3.2. 签署现有用户
要在启用了 persistent-user-sessions
时注销一个域的所有在线用户会话,请执行以下步骤:
- 登录管理控制台。
- 选择菜单条目 会话。
- 选择操作 Sign out all active sessions。
2.3.3. 限制会话缓存的大小
由于数据库现在是用户会话的真实来源,因此可以限制会话缓存的大小来减少内存用量。如果您使用默认的 conf/cache-ispn.xml
文件,则存储用户和客户端会话的缓存默认配置为仅存储 10000 会话和每个条目的一个所有者。
使用选项 cache-embedded-sessions-max-count
, cache-embedded-client-sessions-max-count ,
和 cache-
embedded-offline-sessions-max-countcache-embedded-offline-client-sessions-max-count
来更新缓存的大小。
有关更新的资源要求的详情,请参阅 调整 CPU 和内存资源概念。