Как установить пользовательскую область на встроенном сервере tomcat? Я использую Spring Boot.

#tomcat7 #spring-boot #embedded-tomcat-7

#tomcat7 #spring-boot #встроенный-tomcat-7

Вопрос:

Как установить пользовательскую область для встроенного tomcat? я использую SpringBoot, однако не вижу способа добавить пользовательскую область через Embeddedservletcontainercustomizer.

Ответ №1:

Похоже, вы должны определить этот компонент:

 @Bean
public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {
    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
    factory.addContextCustomizers(new TomcatContextCustomizer() {
        @Override
        public void customize(Context context) {
            context.setRealm(new CombinedRealm());
        }
    });
    return factory;
}
  

И предоставьте желаемую Realm реализацию.

Комментарии:

1. большое спасибо за это, это решило проблему, я вижу, что valve инициализируется в журналах. однако мои запросы полностью обходят valve. есть идеи, почему бы сначала не пройти через valve? нужно ли нам делать дополнительную конфигурацию из web.xml связано с <security-constrain>/<security-role> ?

2. Верно. Вы можете сделать это через ServletContextInitializer компонент и предоставить ServletContext.declareRoles . Я думаю…

3. Как насчет добавления метода customize() выше? SecurityConstraint sc = new SecurityConstraint(); //добавить конфигурацию здесь context.addConstraint( sc); context.addSecurityRole(«all_auth_users»);

4. В идеале он должен перенаправить запрос на нашу централизованную форму веб-аутентификации, и после проверки подлинности он обработает запрос. Однако похоже, что запрос напрямую попадает в сервлет диспетчера, а затем в контроллер, хотя я вижу в журналах 2014-06-26 14:47:51.528 INFO 4048 — [ost-StartStop-1]: GSAuthNAuthenticator (gsauthn-j версии 4.1.1) успешно запущен. Есть еще мысли?