Исключить пользовательские URL из сопоставителей муравьев в Spring Security

После обновления некоторых API до версии 2 мне нужно настроить пользовательский фильтр при сбоях аутентификации, чтобы дать пользователю заново отформатированные сообщения об ошибках. Я столкнулся с проблемой, поскольку URL-адреса версии 2 также следуют тому же шаблону URL, для которого был настроен существующий фильтр.

Ранее я добавил следующую конфигурацию для аутентификации шаблонов защищенных URL.

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf().disable() 
        .exceptionHandling()
            .authenticationEntryPoint(this.authenticationEntryPoint)    
            .and()      
        .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
        .authorizeRequests()
            .antMatchers("/*/login").permitAll() 
            .antMatchers(HttpMethod.OPTIONS).permitAll()
            .antMatchers("/auth/refresh-token").permitAll() 
            .antMatchers("/auth/external/login").permitAll()
            .and()
        .authorizeRequests()
            .antMatchers("/api/**").authenticated()// Protected API End-points
            .and()
        .addFilterBefore(buildLoginProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
        .addFilterBefore(buildProgrmmaticAuthProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
        .addFilterBefore(buildJwtTokenAuthenticationProcessingFilter(), UsernamePasswordAuthenticationFilter.class);
}

Как видите, URL начинаются с /api/** настроены для аутентификации и фильтрации с использованием добавленных фильтров.

Теперь проблема в том, что URL версии 2 также начинаются с /api, Но мне нужно настроить другой фильтр, как показано ниже.

http
    .exceptionHandling().authenticationEntryPoint(this.authenticationEntryPoint)

    .and().authorizeRequests()
    .antMatchers("/api/something/v2/**").authenticated().and().
    addFilterBefore(buildJwtAuthProcessingFilterForVersionTwo(), UsernamePasswordAuthenticationFilter.class);

Поскольку URL начинаются с api/ уже были обнаружены первой конфигурацией, новая конфигурация не учитывается.

Есть ли способ, которым я могу добавить шаблон URL в первую конфигурацию, которая принимает URL-адреса, начинающиеся с /api в рассмотрение, но исключает URL-адреса, такие как /api/**/v2/**?

0 ответов

Другие вопросы по тегам