我正在使用keypocat(4.3.0)openid connect flow。对于我的客户端应用程序,我正在使用:
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。
注意:我没有在KeyCovert 3.4.3中遇到这个问题。但它开始出现在4.1.0和4.3.0上
我发现3.4.3和4.x上的cookies有以下区别:
3.4.3:(首次登录或随后登录时相同)
4.x首次登录:
4.x后续登录: