Как в Security Context сообщить что пользователь анонимный?

Есть настраиваемый Spring Security 6.2. :

@EnableWebSecurity
@Configuration
public class SecurityConfig {

    private final JwtAuthenticationFilter jwtAuthenticationFilter;

    @Autowired
    public SecurityConfig(JwtAuthenticationFilter jwtAuthenticationFilter) {
       this.jwtAuthenticationFilter = jwtAuthenticationFilter;
    }

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        return http
            .authorizeHttpRequests(auth -> auth
                    .requestMatchers("/api/anonymous").anonymous()
            )
            .addFilterBefore(jwtAuthenticationFilter, AuthorizationFilter.class)
            .build();
    }
}

Как видно из кода, если дернуть за ручку /api/anonymous - то доступ должны получить только анонимные пользователи. Так же есть свой кастомный фильтр, который осуществляет проверка и валидацию JWT токена. Как в этом фильтре я могу сообщить Security Context что пользователь анонимный?

@Override
protected void doFilterInternal(
        HttpServletRequest request,
        HttpServletResponse response,
        FilterChain filterChain
) throws ServletException, IOException {
    final String authorization = request.getHeader(HttpHeaders.AUTHORIZATION);
    if (authorization == null || !authorization.startsWith("Bearer ")) {
        // Сообщить в Security Context что пользователь анонимный
        filterChain.doFilter(request, response);
        return;
    }

    // Валидация токена ..

}

Есть особые причины использовать anonymous(), а не permitAll().

Всем заранее спасибо за помощь


Ответы (0 шт):