Как настроить способ аутентификации для каждого соединителя - PullRequest
0 голосов
/ 15 октября 2019

Мне бы хотелось сделать следующее:

  1. Создать одну службу, используя Spring boot.
  2. Позволяет получать несколько обращений 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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...