在 Keycloak 集群的 Infinispan 缓存中存储用户会话的确切用途是啥?

Posted

技术标签:

【中文标题】在 Keycloak 集群的 Infinispan 缓存中存储用户会话的确切用途是啥?【英文标题】:What is the exact use of storing user session in Infinispan cache in a Keycloak cluster?在 Keycloak 集群的 Infinispan 缓存中存储用户会话的确切用途是什么? 【发布时间】:2021-12-30 05:05:20 【问题描述】:

我是 Keycloak 的新手。对不起,如果这是一个菜鸟问题。

假设我们有一个 Keycloak 集群和一个分布式缓存,称为 Infinispan。

当用户登录时,我相信,用户会话和当前身份验证会话存储在缓存中?

访问令牌和该会话如何关联?

访问令牌有自己的到期日期。会话也不能用于验证。

用户会话和身份验证会话是否仅用于刷新令牌?

我不完全知道存储它们的意义以及它有什么用处?

【问题讨论】:

【参考方案1】:

是的,这里发生了很多事情。

用户认证后,客户端会获得一些令牌(access/refresh/Id...)。

但是令牌应该存储在哪里?一些框架所做的一种选择是将它们放在会话 cookie 中并使用会话 cookie 来记住用户并让他保持登录状态。

另一种方法是将它们存储在某个缓存/数据库中,然后使用一个键来检索令牌。然后可以将密钥存储在会话 cookie 中。

接收到的 ID 令牌通常用于创建基于 cookie 的用户会话,以在浏览器中的页面加载之间记住用户。

访问令牌仅用于从客户端访问 API,它可以存储在 cookie 或后端或其他一些“存储”中。

【讨论】:

以上是关于在 Keycloak 集群的 Infinispan 缓存中存储用户会话的确切用途是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Amazon ECS 上的 Keycloak 集群失败(org.infinispan.commons.CacheException:缓存的初始状态传输超时)

如何在一个 Kubernetes 集群中的命名空间之间隔离 Keycloak Infinispan,以防止 KC pod 相互发现和同步

Keycloak 独立集群配置中是不是需要仲裁?

防止Infinispan集群化

Infinispan 集群同步问题

JBoss EAP 6.4 Infinispan 集群缓存网络问题