繁体   English   中英

Spring Security 3.1 LDAP Active Directory问题

[英]Spring Security 3.1 LDAP Active Directory Issue

我正在尝试使用Active Directory设置LDAP并遇到错误,我是Spring Security的新手。 我正在使用Spring Core 3.2和Spring Security 3.1,可能会有帮助。

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.filterChains': Cannot resolve reference to bean 'org.springframework.security.web.DefaultSecurityFilterChain#13' while setting bean property 'sourceList' with key [13]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.DefaultSecurityFilterChain#13': Cannot resolve reference to bean 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0' while setting constructor argument with key [1]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0': Cannot resolve reference to bean 'org.springframework.security.authentication.ProviderManager#0' while setting bean property 'authenticationManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.authentication.ProviderManager#0': Cannot resolve reference to bean 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.authenticationManager': Cannot resolve reference to bean 'myLdapAuthProvider' while setting constructor argument with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myLdapAuthProvider' defined in ServletContext resource [/WEB-INF/context/webappContext-security.xml]: Resolution of declared constructors on bean Class [org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider] from ClassLoader [WebappClassLoader
  context: /myApp
delegate: false
 repositories:
/WEB-INF/classes/
----------> Parent Classloader:
 org.apache.catalina.loader.StandardClassLoader@75e4fc
 ] failed; nested exception is java.lang.NoClassDefFoundError:     org/springframework/ldap/NamingException
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:329)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107)

我的wepappSecuroty-context.xml是,

     <?xml version="1.0" encoding="UTF-8"?>
     <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:sec="http://www.springframework.org/schema/security"
   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.0.xsd
    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">

<sec:http pattern="/public/login.jsp" security="none"/>
<sec:http pattern="/index.jsp*" security="none"/>
<sec:http pattern="/images/**" security="none"/>
<sec:http pattern="/js/**" security="none"/>
<sec:http pattern="/public/**" security="none"/>
<sec:http pattern="/styles/**" security="none"/>
<sec:http pattern="/services/**" security="none"/>
<sec:http pattern="/public/login.jsp" security="none"/>


<sec:http use-expressions="true" entry-point-ref="loginUrlAuthenticationEntryPoint">
    <sec:intercept-url pattern="/ui/login.do" access="permitAll"/>
    <sec:intercept-url pattern="/ui/**" access="isAuthenticated()"/>
    <sec:intercept-url pattern="/**" access="isAuthenticated()"/>
    <sec:form-login login-page="/public/login.jsp"/>
</sec:http>
<bean id="loginUrlAuthenticationEntryPoint"
      class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
    <property name="loginFormUrl" value="/ui/login.do"/>
</bean>
<bean id="securityFilter"
      class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter">
     <property name="authenticationManager" ref="authenticationManager"/>
    <!--  When user provides correct username/password and authentication is successful -->
    <property name="authenticationSuccessHandler"
              ref="authenticationSuccessHandler"/>
</bean>
<sec:authentication-manager alias="authenticationManager">
    <sec:authentication-provider ref="myLdapAuthProvider"/>
</sec:authentication-manager>
<bean id="myLdapAuthProvider"
      class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
    <constructor-arg value="xxxx"/>
    <constructor-arg value="ldaps://xxxxx:1111/DC=ent,DC=yyy,DC=xxxx,DC=corp"/>
    <property name="convertSubErrorCodesToExceptions" value="true"/>
    <property name="useAuthenticationRequestCredentials" value="true"/>
    <property name="authoritiesMapper" ref="grantedAuthoritiesMapper"/>
</bean>

<bean id="grantedAuthoritiesMapper" class="com.blah.security.MyAuthorityMapper"/>

<bean id="authenticationSuccessHandler"
      class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
    <property name="defaultTargetUrl" value="/ui/home.do"/>
</bean>

java.lang.NoClassDefFoundError:     org/springframework/ldap/NamingException

您是否已将相应的jar(spring-ldap.jar)添加到类路径中?

如果是这样,请对照spring-core.jar的版本检查spring-ldap.jar的版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM