2010-03-03 37 views
3

我想根据我们的AD对用户进行身份验证,所以我明白我需要弹簧安全和spring ldap。Spring Security不能使用Spring LDAP

这里是什么在我的POM:

<groupId>org.springframework.security</groupId> 
<artifactId>org.springframework.security.core</artifactId> 
<version>3.0.0.RELEASE</version> 
</dependency> 
... 
<dependency> 
    <groupId>org.springframework.ldap</groupId> 
    <artifactId>spring-ldap</artifactId> 
    <version>1.3.0.RELEASE</version> 
    <type>pom</type> 
    <scope>provided</scope> 
</dependency> 

下面是我secruity上下文的相应条目:

<ldap-authentication-provider user-dn-pattern="CN=0},OU=CAN,OU=NOT,OU=TELL,OU=YOU"/> 
    .. 
<!-- LDAP Security Configuration --> 
<ldap-server url="ldap://10.9.1.1:389/DC=TELL,DC=YOU"/> 

然而,当我运行使用我的应用程序:

mvn jetty:run 

我收到以下错误:

If you are using LDAP with Spring Security, please ensure that you include the spring-ldap jar file in your application; nested exception is java.lang.ClassNotFoundException: org.springframework.ldap.core.support.BaseLdapPathContextSource: 
java.lang.ClassNotFoundException: org.springframework.ldap.core.support.BaseLdapPathContextSource 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195) 
    at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255) 
    at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274) 
    at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
    at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:375) 
    at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337) 
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:258) 
    at org.springframework.security.config.ldap.ContextSourceSettingPostProcessor.postProcessBeanFactory(ContextSourceSettingPostProcessor.java:33) 

回答

6

pom类型的依赖关系不会提供任何类。使用这种依赖关系而不是:

<dependency> 
    <groupId>org.springframework.ldap</groupId> 
    <artifactId>spring-ldap-core</artifactId> 
    <version>1.3.0.RELEASE</version> 
</dependency> 

该工件包含o.s.l.c.s.BaseLdapPathContextSource类,目前下落不明。

1

<type>pom</type>看起来很腥。尝试更改类型为jar

4

只是为了完整。以下是适用于我的依赖列表:

<dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>org.springframework.security.core</artifactId> 
     <version>3.0.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>org.springframework.security.config</artifactId> 
     <version>3.0.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>org.springframework.security.web</artifactId> 
     <version>3.0.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>org.springframework.security.taglibs</artifactId> 
     <version>3.0.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.ldap</groupId> 
     <artifactId>spring-ldap-core</artifactId> 
     <version>1.3.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.ldap</groupId> 
     <artifactId>spring-ldap-core-tiger</artifactId> 
     <version>1.3.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-ldap</artifactId> 
     <version>3.0.1.RELEASE</version> 
    </dependency>