Получение ошибки org.springframework.beans.factory.NoSuchBeanDefinitionException: не определен бин с именем springSecurityFilterChain - PullRequest
34 голосов
/ 23 февраля 2011

Я использую NTLM с помощью Spring Security, получаю следующую ошибку

org.springframework.beans.factory.NoSuchBeanDefinitionException: не определен боб с именем springSecurityFilterChain

Как я могу устранить эту ошибку?

У меня есть следующее определение в web.xml

<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>/*</url-pattern>
</filter-mapping>

Обновление 1

Я исправил эту ошибку, теперь я получаю

org.springframework.beans.factory.NoSuchBeanDefinitionException: не определен bean-компонент с именем filterSecurityInterceptor

и у меня есть следующее

<bean id="springSecurityFilterChain" class="org.acegisecurity.util.FilterChainProxy">
    <property name="filterInvocationDefinitionSource">
    <value>
    CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
    PATTERN_TYPE_APACHE_ANT
    /**=httpSessionContextIntegrationFilter, exceptionTranslationFilter, ntlmFilter, filterSecurityInterceptor
    </value>
    </property>
    </bean>`

Я изменил свой applicationContext.xml следующим образом, потому что, как @Sean, Патрик Флойд упоминал, что некоторые элементы были старыми, мертвыми и похороненными. Однако теперь у меня есть другие ошибки, которые необходимо исправить: -)

Спасибо

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:security="http://www.springframework.org/schema/security"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.2.xsd">
  <!--<authentication-manager alias="_authenticationManager"></authentication-manager>-->
  <security:authentication-provider>
    <security:user-service>
      <security:user name="testuser" password="PASSWORD" authorities="ROLE_USER, ROLE_ADMIN"/>
      <security:user name="administrator" password="PASSWORD" authorities="ROLE_USER,ROLE_ADMIN"/>
    </security:user-service>
  </security:authentication-provider>
  <bean id="userDetailsAuthenticationProvider"
        class="com.icesoft.icefaces.security.UserDetailsAuthenticationProvider">
    <security:custom-authentication-provider/>
  </bean>
  <bean id="ntlmEntryPoint"
        class="org.springframework.security.ui.ntlm.NtlmProcessingFilterEntryPoint">
    <property name="authenticationFailureUrl" value="/accessDenied.jspx"/>
  </bean>
  <bean id="ntlmFilter" class="org.springframework.security.ui.ntlm.NtlmProcessingFilter">
    <security:custom-filter position="NTLM_FILTER"/>
    <property name="stripDomain" value="true"/>
    <property name="defaultDomain" value="domain"/>
    <property name="netbiosWINS" value="domain"/>
    <property name="authenticationManager" ref="_authenticationManager"/>
  </bean>
  <bean id="exceptionTranslationFilter"
        class="org.springframework.security.ui.ExceptionTranslationFilter">
    <property name="authenticationEntryPoint" ref="ntlmEntryPoint"/>
  </bean>
  <security:http access-decision-manager-ref="accessDecisionManager"
                 entry-point-ref="ntlmEntryPoint">
    <security:intercept-url pattern="/accessDenied.jspx" filters="none"/>
    <security:intercept-url pattern="/**" access="ROLE_USER"/>
  </security:http>
  <bean id="accessDecisionManager" class="org.springframework.security.vote.UnanimousBased">
    <property name="allowIfAllAbstainDecisions" value="false"/>
    <property name="decisionVoters">
      <list>
        <bean id="roleVoter" class="org.springframework.security.vote.RoleVoter"/>
      </list>
    </property>
  </bean>
</beans>

Ответы [ 4 ]

41 голосов
/ 23 февраля 2011

Из DelegatingFilterProxy документов:

Обратите внимание, что фильтр на самом деле Делегирование FilterProxy, а не класс, который на самом деле будет реализовывать логика фильтра. Какие DelegatingFilterProxy делает это делегат методы фильтра до бобов который получен из весны контекст приложения . Это позволяет бин, чтобы извлечь выгоду из весенней паутины поддержка жизненного цикла контекста приложения и гибкость конфигурации. The боб должен реализовать javax.servlet.Filter и он должен иметь то же имя, что и в элемент имени фильтра . Прочитайте Javadoc для DelegatingFilterProxy для более информация

Вам необходимо определить компонент с именем springSecurityFilterChain, который реализует javax.servlet.Filter в контексте вашего приложения.

С Начало работы с настройкой пространства имен безопасности :

Если вы знакомы с предварительным пространством имен Версии фреймворка можно наверное уже догадаешься примерно что здесь происходит Элемент <http> ответственность за создание FilterChainProxy и фильтр фасоли который он использует . Общие проблемы, такие как неправильный порядок фильтров нет больше проблема как фильтр позиции предварительно определены.

Так вам нужно минимум Минимум <http> Конфигурация

6 голосов
/ 07 июля 2013

Шон Патрик Флойд абсолютно прав, но я думаю, что стоит упомянуть одно решение, которое заняло у меня много времени.

Вы просто добавляете аннотацию @ImportResource.

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"org.company"})
@ImportResource({"classpath:security.xml"})
public class CompanyWebMvcConfiguration extends WebMvcConfigurerAdapter {
}

security.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
             xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security-3.1.xsd">


    <http use-expressions="true">
        <access-denied-handler error-page="/error"/>
    </http>

3 голосов
/ 10 июля 2015

В конфигурации Java вы можете использовать следующие аннотации:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity
public class MySecurityConfig extends WebSecurityConfigurerAdapter {

}

Это импортирует класс конфигурации org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration, который определяет компонент springSecurityFilterChain.

1 голос
/ 31 декабря 2015

Пожалуйста, предоставьте файл безопасности Spring с минимальной конфигурацией

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">

<http auto-config='true'>
    <intercept-url pattern="/**" access="ROLE_USER" />
</http>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...