Я использую Keycloak 4.8.3 в приложении весенней загрузки с KeycloakWebSecurityConfigurerAdapter.
Я пытаюсь использовать автономный токен refre sh для использования этого токена после выхода из сеанса, но когда я вызываю URL выхода из системы (поскольку мой клиент находится на моем сервере), KeycloakLogoutHandler использует мой автономный токен refre sh для вызова Keycloak, а мой автономный токен отзывается.
В документации по Keycloak автономный токен может использовать после выхода из сеанса, но я нахожу проблему с 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? Должна ли стандартная работа адаптера отзывать токен?