У нас есть микросервисная архитектура с ценными бумагами для прямой и обратной связи с JWT и взаимной защитой с HTTP Basic.
Вот наш класс конфигурации для JWT:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.requestMatchers()
.antMatchers(endpointsProperties.getJwtWithWildcard())
.and()
.csrf().disable()
.authorizeRequests().anyRequest().authenticated()
.and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().addFilterBefore(jwtFilter(), UsernamePasswordAuthenticationFilter.class);
}
jwtFilter - простой фильтр, который читает заголовок авторизации и устанавливает SecurityContextHolder.
И HTTP Basic:
@Override
public void configure(final AuthenticationManagerBuilder auth) throws Exception {
for (Map<String, String> userData : properties.getUsers()) {
auth.inMemoryAuthentication().passwordEncoder(NoOpPasswordEncoder.getInstance())
.withUser(userData.get("login")).password(userData.get("password")).authorities(BASIC_AUTH_AUTHORITY);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatchers().antMatchers(endpoints.getBasicWithWildcard() )
.and().csrf().disable()
.authorizeRequests().anyRequest().authenticated()
.and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().httpBasic();
}
Эти классы конфигурации используются в разных сервисах с разными конечными точками аутентификации JWT и HTTP. Они используются либо одновременно, либо независимо. EndpointsProperties загружаются из application.yml.
Но теперь у нас есть некоторые ссылочные микросервисы, к которым мы хотим, чтобы другие сервисы или директивы были доступны (веб) веб-приложению. Мы хотим знать, возможно ли защитить один и тот же URL-адрес (например, «/ api / referential») двумя разными методами. Объединение этих классов конфигурации с одинаковыми конечными точками не работает, и кажется, что одна конфигурация стирает другую.
Можно ли обезопасить один и тот же путь URL разными способами? Если да, что нам нужно изменить, чтобы включить его?
Спасибо за вашу поддержку.