Keycloak无法在浏览器中维护会话

时间:2018-07-30 11:10:04

标签: java keycloak

我正在使用keycloak(4.3.0)openid-connect流。对于我的客户端应用,我正在使用:

public class AuthenticationTest {

public static void main(String[] args) {

    final String KEYCLOAK_JSON = Constants.KC_CONFIG_JSON_PATH;
    InputStream config = Thread.currentThread().getContextClassLoader().getResourceAsStream(KEYCLOAK_JSON);
    KeycloakInstalled keycloak;

    try {
        keycloak = new KeycloakInstalled(config);
        config.close();
        keycloak.loginDesktop();

        AccessToken token = keycloak.getToken();
        System.out.printf("UserId: %s%n", token.getSubject());
        System.out.printf("Username: %s%n", token.getPreferredUsername());
        System.out.printf("Email: %s%n", token.getEmail());

        System.out.println(keycloak.getTokenString());          
        System.in.read();
    } catch (IOException | VerificationException | OAuthErrorException | URISyntaxException | HttpFailure
            | InterruptedException e) {
        e.printStackTrace();
    }       
}

}

我已经提到了此处提到的示例:https://gist.github.com/thomasdarimont/ca16080145d226e50628d5696ffb9508

第一次启动应用程序并登录时,我得到

  

“登录成功。您可以关闭此浏览器窗口,然后返回到   您的控制台应用程序。”

但是,如果我启动了应用程序的第二个实例/即使没有关闭前一个浏览器窗口也重新启动了应用程序,仍然会显示登录页面,而不是您已经登录消息。

(新的登录页面显示在与第一个登录页面相同的窗口中的新选项卡中,因此这不是无法在不同窗口之间保持状态的问题。我也尝试了20秒重新启动该应用程序,因此似乎也不是超时的问题)

浏览器:Firefox,chrome。

任何想法我在做什么错。期望浏览器必须为同一用户维护一个密钥隐藏会话,直到关闭至少几分钟。

注意:我在Keycloak 3.4.3中没有遇到这个问题。但是它开始出现在4.1.0和4.3.0

我看到3.4.3和4.x上的cookie有所不同:

3.4.3 :(与第一次登录或后续登录相同)

enter image description here

4.x首次登录: enter image description here

4.x后续登录:(可以看到另一个KC_RESTART cookie) enter image description here

0 个答案:

没有答案