SecurityConfiguration на основе профиля - PullRequest
0 голосов
/ 18 марта 2019

У меня есть приложение Spring, которое имеет следующую конфигурацию безопасности:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity
                .csrf().disable()
                .
                .
                .antMatchers("/**/*status*/**").permitAll()
                .antMatchers("/**/*swagger*/**").permitAll()
                .and()
                .authorizeRequests()
                .anyRequest().authenticated();
    }
}

Приведенный выше код отображает страницу состояния

http://{{sched_api_hostname_port}}/v1/status

и чванливая страница

http://{{sched_api_hostname_port}}/v1/v2/api-docs

для всех профилей. Я хочу, чтобы страница статуса / чванства отображалась только для профиля "dev" и была заблокирована для "sit", "pat" и "prod".

Итак, я создал 2 конфига SecurityConfigDev и SecurityConfigProd.

@Configuration
@Profile({"sit", "pat", "prod"})
public class SecurityConfigProd extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity
                .csrf().disable()
                .
                .
                .antMatchers("/**/*status*/**").denyAll()
                .antMatchers("/**/*swagger*/**").denyAll()
                .and()
                .authorizeRequests()
                .anyRequest().authenticated();
    }
}

Я все еще вижу URL-адрес status & swagger со всеми данными и кодом статуса Http 200. Я думаю, что это может быть из-за имени класса SecurityConfigProd. Подскажите, пожалуйста, как заблокировать доступ к URL-адресам на основе профилей?

  • URL не должен отображать данные
  • Http Код состояния должен быть 4 ** или 5 **
...