gpt4 book ai didi

keycloak - keycloak什么时候删除过期 session ?

转载 作者:行者123 更新时间:2023-12-04 17:18:43 27 4
gpt4 key购买 nike

我注意到通过 SSO session idleSSO session max 的 session 不会立即被删除。它们似乎是无效的,因此没有用,但它们并没有立即被删除。我可以在管理控制台的 session 选项卡中查看它们。

因为我找不到对此的解释,或者这个机制在内部是如何工作的(没有查看代码),我想知道是否有人可以详细说明发生了什么?一切正常吗?

最佳答案

Keycloak 严重依赖 Infinispan 进行缓存。许多类型的实体都有直接为其配置的专用缓存,并且不排除 session 。

启动 Keycloak 时,您指定一个配置文件/操作模式(通过 -c 参数)。例如,当我通过 docker 运行我的 keycloak 时,我得到以下命令行:

java -D[Standalone] -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED --add-exports=jdk.unsupported/sun.reflect=ALL-UNNAMED -Dorg.jboss.boot.log.file=/opt/jboss/keycloak/standalone/log/server.log -Dlogging.configuration=file:/opt/jboss/keycloak/standalone/configuration/logging.properties -jar /opt/jboss/keycloak/jboss-modules.jar -mp /opt/jboss/keycloak/modules org.jboss.as.standalone -Djboss.home.dir=/opt/jboss/keycloak -Djboss.server.base.dir=/opt/jboss/keycloak/standalone -Djboss.bind.address=172.19.0.3 -Djboss.bind.address.private=172.19.0.3 -c=standalone-ha.xml -Dkeycloak.profile.feature.token_exchange=enabled -Dkeycloak.profile.feature.admin_fine_grained_authz=enabled

可以看到-D[Standalone](运行模式)和-c=standalone-ha.xml,指向配置XML文件。

在其中,您可以看到类似以下内容的部分:

    <subsystem xmlns="urn:jboss:domain:infinispan:11.0">
<cache-container name="keycloak" module="org.keycloak.keycloak-model-infinispan">
<local-cache name="realms">
<heap-memory size="10000"/>
</local-cache>
<local-cache name="users">
<heap-memory size="10000"/>
</local-cache>
<local-cache name="sessions"/>
<local-cache name="authenticationSessions"/>
<local-cache name="offlineSessions"/>
<local-cache name="clientSessions"/>
<local-cache name="offlineClientSessions"/>
<local-cache name="loginFailures"/>
<local-cache name="work"/>
<local-cache name="authorization">
<heap-memory size="10000"/>
</local-cache>
<local-cache name="keys">
<heap-memory size="1000"/>
<expiration max-idle="3600000"/>
</local-cache>
<local-cache name="actionTokens">
<heap-memory size="-1"/>
<expiration interval="300000" max-idle="-1"/>
</local-cache>
</cache-container>
...
...
...
</subsystem>

您可以尝试调整各种 session 缓存的 expiration/lifespan 属性。

看看Cache-Configuration手册部分,以及 xmlns infinispan-config specification

关于keycloak - keycloak什么时候删除过期 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67557229/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com