【问题标题】:Spring Security LDAP on Weblogic ServerWeblogic 服务器上的 Spring Security LDAP
【发布时间】:2010-10-01 14:52:42
【问题描述】:

我正在尝试在 Weblogic Server 中使用 ldap 进行身份验证,但我总是遇到这个问题:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name '(inner bean)#8': Unsatisfied dependency expressed through constructor argument with index 0 of type [org.springframework.ldap.core.support.BaseLdapPathContextSource]: Could not convert constructor argument value of type [org.springframework.security.ldap.authentication.LdapAuthenticationProvider] to required type [org.springframework.ldap.core.support.BaseLdapPathContextSource]: Failed to convert value of type 'org.springframework.security.ldap.authentication.LdapAuthenticationProvider' to required type 'org.springframework.ldap.core.support.BaseLdapPathContextSource'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [org.springframework.security.ldap.authentication.LdapAuthenticationProvider] to required type [org.springframework.ldap.core.support.BaseLdapPathContextSource]: no matching editors or conversion strategy found
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:670)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
    Truncated. see log file for complete stacktrace

我的 security-application-context.xml:

<beans:bean id="contextSource"
            class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
      <beans:constructor-arg value="ldap://127.0.0.1:7001/DC=base_domain"/>
      <beans:property name="userDn" value="CN=Admin"/>
      <beans:property name="password" value="weblogic"/>
    </beans:bean>

    <beans:bean id="ldapAuthProvider"
        class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
      <beans:constructor-arg>
       <beans:bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
         <beans:constructor-arg ref="contextSource"/>
         <beans:property name="userDnPatterns">
           <beans:list><beans:value>uid={0},ou=people</beans:value></beans:list>
         </beans:property>
       </beans:bean>
     </beans:constructor-arg>
      <beans:constructor-arg>
       <beans:bean
         class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
         <beans:constructor-arg ref="contextSource"/>
         <beans:constructor-arg value="ou=groups"/>
         <beans:property name="groupRoleAttribute" value="ou"/>
       </beans:bean>
     </beans:constructor-arg>
    </beans:bean>
<authentication-manager>
        <ldap-authentication-provider server-ref="ldapAuthProvider" />
    </authentication-manager>

我正在使用:

<spring.version>3.0.0.RELEASE</spring.version>
<spring.security.version>3.0.0.RELEASE</spring.version>

我们将不胜感激,

很多!!!

维尼狗

【问题讨论】:

    标签: spring-security weblogic


    【解决方案1】:

    &lt;ldap-authentication-provider&gt; 自己配置 LdapAuthenticationProvider,因此您不需要将 ldapAuthProvider 作为单独的 bean。

    因此,您应该使用&lt;ldap-authentication-provider&gt;,如docs 中所述:

     <ldap-authentication-provider user-dn-pattern="uid={0},ou=people" ... />
    

    或者使用&lt;authentication-provider&gt;手动创建的提供者作为单独的bean:

     <authentication-provider ref = "ldapAuthProvider" />.
    

    【讨论】:

      猜你喜欢
      • 2020-07-18
      • 2016-08-29
      • 2022-10-04
      • 1970-01-01
      • 2014-11-18
      • 2012-07-19
      • 2014-11-30
      • 1970-01-01
      • 2018-04-15
      相关资源
      最近更新 更多