使用 Spring Security 实现 LDAP 身份验证时出现 Gradle 依赖关系错误

Posted

技术标签:

【中文标题】使用 Spring Security 实现 LDAP 身份验证时出现 Gradle 依赖关系错误【英文标题】:Gradle Dependency error while implementing LDAP Authentication using Spring Security 【发布时间】:2018-11-02 01:51:40 【问题描述】:

即使在 build.gradle 中有以下依赖项后,我仍然收到以下两个错误:

compile group: 'org.springframework.ldap', name: 'spring-ldap-core', version: '2.3.1.RELEASE'
compile group: 'org.springframework.security', name: 'spring-security-ldap', version: '4.0.4.RELEASE'

引起:java.lang.ClassNotFoundException: org.springframework.ldap.core.ContextSource 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 26 常见 框架省略

引起:java.lang.ClassNotFoundException: org.springframework.security.ldap.search.LdapUserSearch 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 26 常见 框架省略

你能帮我解决这个错误吗,这里的依赖项之间是否存在版本冲突?

【问题讨论】:

【参考方案1】:

这确实看起来像是版本冲突。根据MVNRepository,spring-security-ldap 4.0.4.RELEASE 取决于 spring-ldap-core 2.0.2.RELEASE 版本。

我认为您可以安全地删除对 spring-ldap-core 的依赖项并看到它解决了您的问题。

当您使用它时,您也可以考虑升级到更高版本。

【讨论】:

嗨 MuratOzkan,我按照建议删除了“spring-ldap-core”依赖项,但仍然收到错误“由:java.lang.ClassNotFoundException:org.springframework.security.ldap.search 引起。 LdapUserSearch" 你还有哪些依赖? MuratOzkan ,上面提供的依赖是父 build.gradle ,子模块中还有许多其他依赖。我刚刚将上述依赖项添加到子模块 build.gradle 中,它运行良好,谢谢。

以上是关于使用 Spring Security 实现 LDAP 身份验证时出现 Gradle 依赖关系错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring WebFlux 中使用 Spring Security 实现身份验证的资源是啥

使用 Spring Security 登录失败

如何使用 Spring Security 实现登录页面以使其与 Spring Web 流一起使用?

在Spring Boot中使用Spring Security实现权限控制

如何使用 Spring Security 实现具有两级令牌认证的 Spring Boot 微服务?

如何使用 grails 1.3.2 和插件 spring-security-core 1 实现自定义 FilterSecurityInterceptor?