Безопасность Spring в веб — приложении, развернутом на Tomcat

#java #tomcat #spring-security

Вопрос:

Я новичок в spring security и пытаюсь создать простой RestConstroller, который использует аутентификацию Ldap. Мое приложение имеет следующую структуру

  • springapplication-servlet.xml (диспетчер)
  • application-context.xml (корневой контекст)
  • web.xml * загружает контекст приложения * определяет сервлет диспетчера для сопоставления /сводки URL-адресов
  • RestController с сопоставлением запросов /сводкой
  • SpringConfig с использованием аннотации @Configuration @EnableWebSecurity и расширяет WebSecurityConfigurerAdapter, в котором я объявил авторизацию с помощью

    http.csrf().отключить(); http.authorizeRequests().mvcMatchers(«/summary»).permitAll().anyRequest().authenticated().and().httpBasic()

и аутентификация ldap

Я запускаю приложение с помощью Tomcat 8 и Java 8, и я получаю сообщение об ошибке, в котором говорится, что «springSecurityFilterChain» не найден и

Одним из решений, которое я пробовал, была попытка определить безопасность фильтра, но ошибка сохраняется и выбрасывает не найденный компонент вместе с «Пожалуйста, убедитесь, что Spring Security и Spring MVC настроены в общем контексте приложения».

  <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/summary</url-pattern>
    </filter-mapping>
 

Большинство примеров, которые я нахожу в Интернете, используют приложение spring-boot, мне понадобится решение для моего приложения с помощью Tomcat

Спасибо, мы ценим любую помощь

Как было предложено в комментариях, я добавил web.xml фрагмент

 <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/application-context.xml </param-value> </context-param>
 

также фрагмент контекста приложения

   <context:component-scan base-package="com.myapp"/>

    <util:properties id="myProperties" location="classpath:myProps.properties"/>
 

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

1. добавьте jar в путь к классу

2. Вам нужен ContextLoaderListener файл, который загружает application-context.xml и который также должен содержать ваши компоненты/конфигурацию безопасности. Этого не должно быть в springapplication-servlet.xml том, что должно быть загружено DispatcherServlet .

3. Не уверен, что понимаю. мой web.xml содержит следующую информацию <контекст-парам> <контекст-парам><имя парама>Контекстная конфигурация<имя парама></имя парама> </имя парама><значение парама> /WEB-INF/application-context.xml <значение параметра></значение параметра> </значение параметра></параметр контекста>, у меня определен список загрузчиков контекста

4. @ScaryWombat что ты имеешь в виду? У меня все банки на месте