我正在通过KeycloakWebSecurityConfigurerAdapter在Spring Boot应用程序中使用Keycloak 4.8.3。
我正在尝试使用脱机刷新令牌在会话注销后使用此令牌,但是当我调用注销URL(因为我的服务器上的客户端)时,KeycloakLogoutHandler使用脱机刷新令牌来调用Keycloak而且我的离线令牌正在撤消。
在Keycloak的文档中,可以在会话注销后使用脱机令牌,但是我发现an issue on Keycloak,并且适配器调用LogoutEndpoint,其中令牌的类型是检查并吊销的,因为令牌的类型是脱机的
我的Spring安全配置如下:
public class SpringSecurityConfig extends KeycloakSecurityAdapter
{
...
@Override
protected void configure(HttpSecurity http) throws Exception
{
super.configure(http);
RequestMatcher requestMatcher = new RequestMatcher()
{
@Override
public boolean matches(HttpServletRequest request)
{
if(csrfMatcher.matches(request))
{
return true;
}
return false;
}
};
http
.csrf()
.csrfTokenRepository(csrfTokenRepository())
.requireCsrfProtectionMatcher(requestMatcher)
.and()
.authorizeRequests()
.antMatchers("/actuator/**").permitAll()
.antMatchers("/landing").permitAll()
.antMatchers("/about-cookie", "/browsernotsupported").permitAll()
.antMatchers("/webview").permitAll()
.antMatchers("/*", "/**").hasRole("USER")
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/");
http
.headers()
.frameOptions().sameOrigin().httpStrictTransportSecurity().disable();
}
...
}
我真的想知道这样的令牌(离线)的用处...
应该定义我的KeycloakLogoutHandler吗? 适配器的标准操作是否应该撤销令牌?