Keycloak:注销会话撤销脱机令牌

时间:2020-02-20 16:37:11

标签: spring-security keycloak offline logout

我正在通过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吗? 适配器的标准操作是否应该撤销令牌?

0 个答案:

没有答案