在Keycloak中使用离线Cookie实施单一登录(SSO)

时间:2019-11-29 14:43:37

标签: java oauth-2.0 single-sign-on openid-connect keycloak

我们可以使用Keycloak中的脱机cookie实现单点登录(SSO)吗?

我已将应用程序'A'连接到Keycloak 7.0.1(KC)服务器以进行身份​​验证。 KC在“ clientA ”下为用户生成活动会话和脱机会话,并将访问令牌和脱机令牌返回给用户。离线令牌的有效期为X天。因此,当用户再次尝试连接到应用程序“ A”时,它将使用脱机cookie获取访问令牌并进行身份验证。因此,使用该脱机cookie对应用程序“ A”进行身份验证是可行的。

现在我有另一个应用程序'B',可以说它托管在相同或不同的域中。 KC可以访问相同的脱机cookie,但不允许身份验证。此应用程序的客户端是“客户端B” 。我收到的错误是“会话没有必需的客户端”

查看错误并阅读文章,我了解到两个不同的客户端无法访问相同的脱机cookie。但是我仍然想知道是否有人遇到过这种情况,以及允许这两个应用程序使用相同的脱机cookie的方式是什么,或者我们是否缺少任何密钥斗篷配置。

编辑此问题: 我们可以拥有任何REALM级别的脱机令牌,而不是为领域中的每个客户端创建不同的脱机令牌吗?

1 个答案:

答案 0 :(得分:0)

那里有密钥斗篷,用于为不同的应用程序生成凭据,您需要在同一领域中为应用程序b创建第二个客户端(您说已经做到了)。

我认为您不能使用从应用程序a到应用程序b的访问令牌。如果两个应用程序共享相同的私钥,也许可以根据生成令牌的方式来执行此操作,但是如果这样做,则可能不需要密钥隐藏。

然后在此客户端中进行授权请求,因为您已经在keycloak中进行了会话,这应该自动发生并生成应用程序b所需的凭据。

要查看此方法是否正常运行,我将尝试直接在应用程序b中登录,转到keycloak,在那里登录,然后查看提供的令牌是否可以在应用程序b中登录我。

很抱歉获得高层答复,但您自己的问题本身也很高水平。