Keycloak -跨集群Keycloak服务器共享OAUTH2令牌



我在独立集群模式下运行两个keycloak服务器。两者具有相同的配置(docker映像是相同的)。它们被配置为共享ldap和db服务器。我已经确认keycloak的两个实例都可以访问数据库,并且在keycloak服务器上添加的用户可以在另一个keycloak服务器上看到。使用"username"password"允许我登录到服务器,而不管我经过哪个keycloak实例。但是,OAUTH2令牌似乎没有被共享。其中一个keycloak实例后面的微服务是不可访问的,因为我有一个从另一个keycloak实例发出的OAUTH2令牌。

我的假设是我的配置错误,但我还没有发现任何看起来不正确的东西。

如何跨keycloak服务器共享OAUTH2令牌?这些服务器在同一个docker覆盖网络上。

Keycloak不会在db中保存令牌,而是将它们保存在Infinispan缓存中。默认情况下,这些缓存配置为分布式。这意味着只有一个节点被认为是缓存项的所有者,所有其他节点都将向所有者询问该特定缓存项的值。

你确定你的WildFly服务器的Infinispan子系统可以相互通信吗?(例如防火墙可以防止这种情况发生,或者网络/WildFly配置错误)

在一个类似的场景中,我们有一个由两个节点组成的集群,因此当node1关闭时,缓存在该节点上的所有令牌都将消失。所以我们改变了配置,复制了它们,它们都开始像预期的那样工作。我们首先确保这些节点上的Infinispan能够相互通信。

最新更新