16.18. 限制身份验证会话
身份验证会话 跟踪身份验证的状态。无论源流是什么,以下文本都适用。
本节介绍将 Data Grid 供应商用于身份验证会话的部署。
身份验证会话在内部存储为 RootAuthenticationSessionEntity
。每个 RootAuthenticationSessionEntity
都可以将多个身份验证子会话存储在 RootAuthenticationSessionEntity
中,作为 AuthenticationSessionEntity
对象的集合。红帽构建的 Keycloak 将身份验证会话存储在专用 Data Grid 缓存中。每个 Root
的 AuthenticationSessionEntity 数量贡献到每个缓存条目的大小。身份验证会话缓存的内存占用总量由存储的 AuthenticationSessionEntity
的数量和每个 Root RootAuthenticationSessionEntity
AuthenticationSessionEntity
中的 AuthenticationSessionEntity 的数量决定。
维护的 RootAuthenticationSessionEntity
对象数量对应于浏览器中未完成登录流的数量。为了保持控制下的 RootAuthenticationSessionEntity
数量,建议使用高级防火墙控制来限制入站网络流量。
对于有很多活跃的 Root
,则可能会出现更高的内存用量。如果负载均衡器不支持或者没有为会话粘性配置,集群中的网络负载可能会显著增加。这个负载的原因是,每个请求都处于没有适当身份验证会话的节点上,都需要检索和更新所有者节点中的身份验证会话记录,该记录涉及检索和存储的单独网络传输。
AuthenticationSessionEntity
通过设置属性 authSessionsLimit
,可在 authenticationSessions
SPI 中配置每个 Root
的最大 AuthenticationSessionEntity 数。默认值为,每个 AuthenticationSessionEntity
Root
均设置为 300 AuthenticationSessionEntity。达到这个限制后,会在新的身份验证会话请求后删除最旧的身份验证子会话。
AuthenticationSessionEntity
以下示例演示了如何将每个 RootAuthenticationSessionEntity
的活跃 AuthenticationSessionEntity
数量限制为 100。
bin/kc.[sh|bat] start --spi-authentication-sessions-infinispan-auth-sessions-limit=100