У меня есть приложение 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 **