首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring安全- BeanCreationException

Spring安全- BeanCreationException
EN

Stack Overflow用户
提问于 2019-12-22 21:18:27
回答 1查看 940关注 0票数 0

亲爱的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类是这样的:

代码语言:javascript
复制
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类:

代码语言:javascript
复制
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文件的相关部分:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2020-05-27 04:14:38

我遇到了一个类似的问题,尝试了各种方法来消除错误。我想你也遵循了这里的例子:

https://spring.io/guides/gs/authenticating-ldap/

因为我使用的spring引导版本比示例更新,所以没有一个简单的匹配。

最后,经过多次添加和删除依赖项的尝试.我发现缺少的依赖是(对于gradle):

代码语言:javascript
复制
implementation 'org.springframework.security:spring-security-ldap'

所以在Maven中,应该是这样的:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-ldap</artifactId>
</dependency>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59448103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档