尝试使用Spring LDAP进行编码

SJS*_*SJS 7 java spring spring-security spring-ldap apacheds

我正在尝试使用Spring LDAP进行编码

<ldap-server ldif="classpath:my-ldap-clone.ldif" />
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误

NoClassDefFoundError: org/apache/directory/server/core/DirectoryService
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

小智 13

使用maven:

    <dependency>
        <groupId>org.apache.directory.server</groupId>
        <artifactId>apacheds-all</artifactId>
        <version>1.5.7</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

  • 我怀疑如果你只需要它的一小部分那么添加那个大的依赖(10MB!)是个好主意.例如,spring-security-ldap只需要5个罐子,请参见此处:http://mvnrepository.com/artifact/org.springframework.security/spring-security-ldap/3.2.3.RELEASE (3认同)

Did*_*r L 5

如果您使用 Maven,这些实际上来自spring-security-ldap.

使用apacheds-all是一个坏主意,因为它嵌入了许多相当常见的依赖项,例如 slf4j 和 dom4j。你会很容易陷入类加载器的问题。

相反,您应该查看spring-security-ldap您正在使用的版本的 pom 中的apacheds可选依赖项,并将它们复制到您的 pom 中,而没有<scope><optional>元素(不幸的是,没有更好的方法来处理 Maven 的可选依赖项)。

例如,使用spring-security-ldap4.2.2,它将给出:

<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-core</artifactId>
    <version>1.5.5</version>
</dependency>
<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-core-entry</artifactId>
    <version>1.5.5</version>
</dependency>
<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-protocol-ldap</artifactId>
    <version>1.5.5</version>
</dependency>
<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-protocol-shared</artifactId>
    <version>1.5.5</version>
</dependency>
<dependency>
    <groupId>org.apache.directory.server</groupId>
    <artifactId>apacheds-server-jndi</artifactId>
    <version>1.5.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

(看起来它至少从 3.2 开始就没有改变)


Sen*_*hil 2

从下面的链接http://directory.apache.org/下载 ApcheDS 或从这里获取完整的 jar 我曾经使用带有 LDAP 的 Spring Security 3.0.5 (Spring LDAP 1.3)。那一次我没有满足ApacheDS的要求。检查您的 Spring Secuirty 版本,该版本可能与 ApacheDS 存在依赖关系。