亲爱的Java专业人士,我正在尝试使用LDAP机制来保护Spring MVC应用程序,使用来自以下链接的说明:https://spring.io/guides/gs/authenticating-ldap/。
但是,我面临的下一个问题是:
通过工厂方法创建名为“org.springframework.beans.factory.BeanCreationException:”的类路径资源org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class: bean实例化的
错误;嵌套异常是org.springframework.beans.BeanInstantiationException:未能实例化javax.servlet.Filter:工厂方法'springSecurityFilterChain‘抛出的异常;嵌套异常为java.lang.NoClassDefFoundError: org/springframework/security/ldap/DefaultSpringSecurityContextSource
我不知道为什么我会犯这个错误。我试着搜索这个论坛,认为发现了类似的问题,但没有成功:https://stackoverflow.com/questions/28616569/error-creating-bean-with-name-springsecurityfilterchain
有人能告诉我我做错了什么吗?提前谢谢。
WebSecurityConfig类是这样的:
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
// .antMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userDnPatterns("uid={0},ou=people")
.groupSearchBase("ou=groups")
.contextSource()
.url("ldap://localhost:8389/dc=springframework,dc=org")
.and()
.passwordCompare()
.passwordEncoder(new LdapShaPasswordEncoder())
.passwordAttribute("userPassword");
}
}这是MvcConfig类:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MvcConfig implements WebMvcConfigurer {
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
}
}pom.xml文件的相关部分:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>ba.epbih.zastoji</groupId>
<artifactId>Zastoji_v1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>MyApp</name>
<description>lalala</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>com.unboundid</groupId>
<artifactId>unboundid-ldapsdk</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap-core</artifactId>
</dependency>发布于 2020-05-27 04:14:38
我遇到了一个类似的问题,尝试了各种方法来消除错误。我想你也遵循了这里的例子:
https://spring.io/guides/gs/authenticating-ldap/
因为我使用的spring引导版本比示例更新,所以没有一个简单的匹配。
最后,经过多次添加和删除依赖项的尝试.我发现缺少的依赖是(对于gradle):
implementation 'org.springframework.security:spring-security-ldap'所以在Maven中,应该是这样的:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
</dependency>https://stackoverflow.com/questions/59448103
复制相似问题