搜索

15.18. 限制身份验证会话

download PDF

当在网页浏览器中第一次打开登录页面时,红帽构建的 Keycloak 会创建一个名为身份验证会话的对象,该对象存储了有关该请求的一些有用信息。每当从同一浏览器中的不同标签页打开新的登录页面时,Red Hat build of Keycloak 会创建一个名为 authentication 子会话的新记录,该记录存储在身份验证会话中。身份验证请求可能来自任何类型的客户端,如 Admin CLI。在这种情况下,也会创建一个新的身份验证会话,并带有一个身份验证子会话。请注意,除使用浏览器流外,还可以以其他方式创建身份验证会话。无论源流是什么,以下文本都适用。

注意

本节论述了使用 Data Grid 供应商进行身份验证会话的部署。

身份验证会话内部存储为 RootAuthenticationSessionEntity。每个 RootAuthenticationSessionEntity 可以有多个身份验证子会话存储在 RootAuthenticationSessionEntity 中,作为 AuthenticationSessionEntity 对象的集合。红帽构建的 Keycloak 将身份验证会话存储在专用 Data Grid 缓存中。每个 Root AuthenticationSessionEntity 的 AuthenticationSessionEntity 数量为每个缓存条目的大小贡献。身份验证会话缓存的内存占用总量由存储的 RootAuthenticationSessionEntity 数以及每个 Root AuthenticationSessionEntity 中的 AuthenticationSessionEntity 的数量决定。

维护的 RootAuthenticationSessionEntity 对象的数量对应于浏览器中未完成登录流的数量。要将 RootAuthenticationSessionEntity 的数量保持在控制下,建议使用高级防火墙控制来限制入口网络流量。

对于有很多活跃 Root AuthenticationSessionEntity 且有很多身份验证会话的部署,可能会进行更高的内存用量。如果负载均衡器不支持或没有为会话粘性配置,则集群中网络的负载可能会显著提高。此负载的原因是,位于没有适当身份验证会话的节点上的每个请求都需要检索和更新所有者节点中的身份验证会话记录,这涉及检索和存储的独立网络传输。

可以通过设置 authSessionsLimit 属性在 authenticationSessions SPI 中配置每个 Root AuthenticationSessionEntity 的最大 AuthenticationSessionEntity 数量。默认值为每个 Root AuthenticationSessionEntity 设置为 300 AuthenticationSessionEntity。当达到这个限制时,最旧的身份验证子会话将在新的身份验证会话请求后删除。

以下示例演示了如何将每个 Root AuthenticationSessionEntity 数量限制为 100。

bin/kc.[sh|bat] start --spi-authentication-sessions-infinispan-auth-sessions-limit=100
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.