Keycloak-如何使用Java客户端刷新令牌?

时间:2019-08-26 15:11:07

标签: java spring-boot keycloak

我正在使用Java Admin Client https://github.com/keycloak/keycloak/tree/master/integration/admin-client

寻找刷新令牌

找不到任何相关内容

致谢

编辑:

最后我去了:

public AccessTokenResponse executeRefresh(String refreshToken) {
    String url = "https://url/auth" + "/realms/" + keycloakRealm + "/protocol/openid-connect/token";
    Configuration kcConfig = new Configuration(authServerUrl, keycloakRealm, keycloakInternalClientId, null, null);
    Http http = new Http(kcConfig, (params, headers) -> {
    });
    return http.<AccessTokenResponse>post(url)
            .authentication()
            .client()
            .form()
            .param("grant_type", "refresh_token")
            .param("refresh_token", refreshToken)
            .param("client_id", keycloakInternalClientId)
            .param("client_secret", keycloakInternalClientSecret)
            .response()
            .json(AccessTokenResponse.class)
            .execute();
}

2 个答案:

答案 0 :(得分:0)

org.keycloak.admin.client.Keycloak.tokenManager().refreshToken()可以刷新令牌。例如:

// Create a Keycloak client
Keycloak kc = KeycloakBuilder.builder()
        .serverUrl("http://localhost:8080/auth")
        .realm("master")
        .username("admin")
        .password("password")
        .clientId("admin-cli")
        .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build())
        .build();

TokenManager tokenManager = kc.tokenManager();
// get access token
AccessTokenResponse accessTokenResponse = tokenManager.getAccessToken();
System.out.println(accessTokenResponse.getRefreshToken());
// Refresh token
accessTokenResponse = tokenManager.refreshToken();
System.out.println(accessTokenResponse.getRefreshToken());

答案 1 :(得分:0)

不幸的是,Java Admin Client没有这种功能(希望将来会具有这种功能)

现在,请看以下答案: Refresh access_token via refresh_token in Keycloak