Мне интересно, есть ли способ настроить Spring Security для обеспечения базовой аутентификации только для порта управления.Я хочу ограничить доступ к конечным точкам привода, но все же не ограничить доступ к конечной точке обслуживания через базовую аутентификацию.Можно ли это сделать весной?
ОБНОВЛЕНИЕ:
Так что я понял это.Ниже помогли достичь того, что указано выше
package com.foo.bar;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.util.matcher.AndRequestMatcher;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
@EnableWebSecurity
public class WebSecurityConfiguration {
@Value("${server.port}")
private static int serverPort;
@Value("${management.server.port}")
private static int managementPort;
@Order(1)
@Configuration
public static class ServerSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/api/**").authorizeRequests()
.requestMatchers(new AndRequestMatcher(httpServletRequest -> serverPort == httpServletRequest.getLocalPort(),
new AntPathRequestMatcher("/foo/bar/api/**"))).permitAll().anyRequest().anonymous();
}
}
@Configuration
public static class ManagementSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.requestMatchers(new AndRequestMatcher(httpServletRequest -> managementPort == httpServletRequest.getLocalPort(),
new AntPathRequestMatcher("/actuator/**"))).authenticated().anyRequest().authenticated().and().httpBasic();
}
}
}