我正在使用Java管理客户端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();
}
4条答案
按热度按时间mjqavswn1#
org.keycloak.admin.client.Keycloak.tokenManager().refreshToken()
可以刷新令牌。例如:v09wglhw2#
遗憾的是,Java管理客户端没有这种功能(希望将来会有)
现在,看看这个答案:Refresh access_token via refresh_token in Keycloak
aij0ehis3#
我已经通过我的spring-boot应用程序中的RestTemplate实现了它。
下面是我用来获取刷新令牌的代码:-
刷新令牌响应:-
密钥隐藏v19.0.0
authUrl:-keycloak服务器正在运行的位置。我的案例http://localhost:8080/
ream:-您的域名
13z8s7eq4#
实际上,在花了一些时间处理这个问题之后,我设法让Keycloak客户端为我完成了这项工作。在我的情况下,我必须连接到一个带有密码授权类型的Keycloak服务器,并使用访问令牌从Sping Boot 服务器端应用程序中的第三方受保护端点获取数据。
最后,我提出了一个服务,它在初始身份验证后提供一个访问令牌,并根据需要自动刷新/重新身份验证。
我添加了一个
@Configuration
bean,它包含到第三方Keycloak示例的连接参数:在我创建了一个能够进行身份验证、获取和刷新访问令牌的Spring
Service
之后:TokenCallable
隐藏了按需刷新/重新验证的所有复杂性。希望它能帮助一些在这个问题上挣扎的人。