У меня есть приложение Spring Boot с Spring Security. Я настроил порт http 8000 и порт https 8080. Я ожидаю, что когда я нажму localhost: 8000 в браузере, он будет перенаправлен на https://localhost: 8080 , но поскольку конечная точка "/" защищена, вместо этого будет перенаправлен на https://localhost: 8080 / логин . Это код:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated().and().formLogin();
http.portMapper().http(8000).mapsTo(8080);
http.requiresChannel().anyRequest().requiresSecure();
}
@Configuration
public class HttpsConfig {
@Bean
public ServletWebServerFactory serverFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
factory.addAdditionalTomcatConnectors(connector());
return factory;
}
private Connector connector() {
Connector connector = new Connector();
connector.setPort(8000);
connector.setRedirectPort(8080);
return connector;
}