搜索

16.16. 限制身份验证会话

download PDF

在 Web 浏览器中第一次打开登录页面时,Red Hat Single Sign-On 会创建一个名为 authentication session 的对象,以存储请求的一些有用信息。每当从同一浏览器中的不同标签页打开新的登录页面时,Red Hat Single Sign-On 会创建一个名为 authentication sub-session (存储在身份验证会话内)的新记录。身份验证请求可以来自任何类型的客户端,如管理 CLI。在这种情况下,也会使用一个身份验证子会话创建一个新的身份验证会话。请注意,除使用浏览器流外,也可以以其他方式创建身份验证会话。无论源流是什么,以下文本都适用。

注意

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

身份验证会话在内部存储为 RootAuthenticationSessionEntity。每个 RootAuthenticationSessionEntity 可将多个身份验证子会话存储在 RootAuthenticationSessionEntity 中,作为 AuthenticationSessionEntity 对象的集合。红帽单点登录将身份验证会话存储在专用的 RHDG 缓存中。Root AuthenticationSessionEntityRootAuthenticationSessionEntity 的 AuthenticationSessionEntity 有助于每个缓存条目的大小。身份验证会话缓存的内存占用总量由存储 RootAuthenticationSessionEntity 数以及每个 Root AuthenticationSessionEntity 中的 AuthenticationSessionEntity 数决定。

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

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

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

以下示例演示了如何将每个 RootAuthenticationSessionEntity 的活跃 AuthenticationSessionEntity 数限制为 100。

<subsystem xmlns="urn:jboss:domain:keycloak-server:1.2">
    ...
    <spi name="authenticationSessions">
        <default-provider>infinispan</default-provider>
        <provider name="infinispan" enabled="true">
            <properties>
                <property name="authSessionsLimit" value="100"/>
            </properties>
        </provider>
    </spi>
    ...
</subsystem>

使用 CLI 命令进行等同的配置:

/subsystem=keycloak-server/spi=authenticationSessions:add(default-provider=infinispan)
/subsystem=keycloak-server/spi=authenticationSessions/provider=infinispan:add(properties={authSessionsLimit => "100"},enabled=true)
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.