在 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 相互发现和同步