Мне бы хотелось сделать следующее:
- Создать одну службу, используя Spring boot.
- Позволяет получать несколько обращений http (https) на разных портах.
ex)
1. ClientA -----> http: // Сервер: 8080 -----> Служба (без базовой аутентификации)
2. ClientA ----> https: // Сервер: 8443 -----> Служба (с обычной аутентификацией)
3. ClientA -----> https: // Сервер: 9443 -----> Служба (снет базовой аутентификации)
Я не хочу использовать способ указания номера порта в "application.properties".
Я думал об использовании следующего кода, но я не знаю, как связать "WebSecurityConfigurerAdapter "с" TomcatServletWebServerFactory ".
Я хотел бы знать, как настроить способ аутентификации для каждого разъема.
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
authenticationManagerBuilder.inMemoryAuthentication().withUser("userid").password("{noop}passwd").roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/DocumentB/**");
http.authorizeRequests().anyRequest().authenticated();
http.httpBasic(); // Basic authentication
http.csrf().disable();
}
}
public class HttpsConnectorA {
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(createSslConnector());
return tomcat;
}
private Connector createSslConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
try {
connector.setScheme("https");
connector.setSecure(true);
connector.setPort(8443);
protocol.setSSLEnabled(true);
protocol.setKeystoreType("PKCS12");
protocol.setKeystoreFile("C:\\ssl\\server.p12");
protocol.setKeystorePass("pass1");
protocol.setKeyAlias("tomcat");
return connector;
}
catch (Exception ex) {
throw new IllegalStateException("can't access keystore: [" + "keystore" + "] or truststore: [" + "keystore" + "]", ex);
}
}
}