Spring boot安全性禁用安全性

时间:2014-05-27 16:03:23

标签: spring-security spring-boot

当我使用 security.basic.enabled = false 来禁用具有以下依赖项的Spring Boot项目的安全性时:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

我看到以下例外:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration$ManagementWebSecurityConfigurerAdapter': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.setObjectPostProcessor(org.springframework.security.config.annotation.ObjectPostProcessor); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.config.annotation.ObjectPostProcessor] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}

为了修复此异常,我必须添加属性 - management.security.enabled = false 。我的理解是,当执行器位于类路径中时, security.basic.enabled = false management.security.enabled = false 都应设置为禁用安全性。

如果我的理解错了,有人可以告诉我吗?

20 个答案:

答案 0 :(得分:69)

似乎工作得很好的是创建一个包含以下内容的文件application-dev.properties

security.basic.enabled=false
management.security.enabled=false

如果您随后使用dev个人资料启动Spring Boot应用,则无需登录。

答案 1 :(得分:54)

如果包装中有弹簧启动器,则应添加以下内容

@EnableAutoConfiguration(exclude = {
        org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
        org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration.class})

使用较旧的Spring-boot,该类称为ManagementSecurityAutoConfiguration

在较新的版本中,这已更改为

@SpringBootApplication(exclude = {
        org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
        org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class}
        )

答案 2 :(得分:35)

如果您需要安全性作为依赖项但不希望Spring Boot为您配置它,则可以使用此排除项:

    @EnableAutoConfiguration(exclude = { 
        org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class 
    })

答案 3 :(得分:14)

对于春季启动2用户,必须

@EnableAutoConfiguration(exclude = {
    org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
})

答案 4 :(得分:10)

步骤1:在安全配置中注释注释@EnableWebSecurity

//@EnableWebSecurity

第2步:将其添加到 application.properties 文件中。

security.ignored=/**
spring.security.enabled=false
management.security.enabled=false
security.basic.enabled=false

有关详细信息,请查看此处:http://codelocation.com/how-to-turn-on-and-off-spring-security-in-spring-boot-application/

答案 5 :(得分:6)

如果您在测试课程中使用@WebMvcTest注释

@EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class })
@TestPropertySource(properties = {"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration"})

没有帮助。

您可以在此处禁用安全性

@WebMvcTest(secure = false)

答案 6 :(得分:4)

请允许如下所示在WebSecurityConfigurerAdapter中允许所有请求。

您可以在现有班级或新班级中这样做。

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll();
    }

请注意:如果该类是现有的GlobalMethodSecurityConfiguration类,则必须将其禁用。

答案 7 :(得分:4)

对于 Spring Boot 2 application.yml 配置中已弃用以下属性

  security.basic.enabled: false
  management.security.enabled: false

要为 Sprint Boot 2 Basic + Actuator Security禁用安全性,可以在 application.yml 文件中使用以下属性,而不是基于注释的排除项 (@ EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class,ManagementWebSecurityAutoConfiguration.class}))

  spring:
    autoconfigure:
      exclude[0]: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
      exclude[1]: org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration

对于 application.properties 语法就像

spring.autoconfigure.exclude[0]=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration

答案 8 :(得分:3)

为了避免安全性,您可以使用注释。 在configure类之上使用此批注:

@EnableWebSecurity

例如:

@EnableWebSecurity
@Configuration
public class AuthFilter{
   // configured method 
}

答案 9 :(得分:3)

允许使用antMatchers(“/”)

访问所有内容
     protected void configure(HttpSecurity http) throws Exception {
            System.out.println("configure");
                    http.csrf().disable();
                    http.authorizeRequests().antMatchers("/").permitAll();
        }

答案 10 :(得分:3)

我只是在security.ignored=/**中添加了application.properties,这就是魅力所在。

答案 11 :(得分:0)

使用 Gradle 和 Spring boot v2.4.4,您可以通过在您的 build.gradle 中添加此配置来完全排除 Spring 安全性

configurations.all {
    exclude group:"org.springframework.boot", module: "spring-boot-starter-security"
}

答案 12 :(得分:0)

Spring Boot 2中没有依赖项或代码更改的最简单方法是:

spring:
  autoconfigure:
    exclude: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration

答案 13 :(得分:0)

唯一对我有用的东西

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable().authorizeRequests().anyRequest().permitAll();
    }

security.ignored=/**

可能是属性部分是多余的,或者可以用代码完成,但没有时间进行试验。无论如何都是暂时的。

答案 14 :(得分:0)

如前所述,有多种解决方案通过注释

来禁用安全性。
  

@EnableWebSecurity

注释和其他注释是通过application.properties或yml中的属性进行的。但是这些属性在最新的春季启动版本中显示为已弃用。

因此,我想分享另一种在您的 application-dev.properties application-dev.yml 中配置默认​​用户名和密码的方法,并使用它们登录在开发环境中陷入困境等。

spring.security.user.name=admin
spring.security.user.password=admin

因此,此方法还将为您提供某种安全性,并且您可以与开发团队共享此信息。您也可以配置用户角色,但是在开发级别不需要。

答案 15 :(得分:0)

将以下课程添加到您的代码中

import org.springframework.context.annotation.Configuration;
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;

/**
 * @author vaquar khan
 */
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.authorizeRequests().antMatchers("/**").permitAll().anyRequest().authenticated().and().csrf().disable();
    }

}

然后在application.properties中添加

security.ignored=/**
security.basic.enabled=false
management.security.enabled=false

答案 16 :(得分:0)

我在application.yml中添加了以下设置,并且工作正常。

security:
    route-patterns-to-be-skipped:
      - /**/*

对于application.properties,可以将其转换为security.route-paterns-to-be-skipped=/**/*

答案 17 :(得分:0)

您可以按照以下2个步骤配置为在项目中切换弹簧安全性

步骤1:   在SecurityConfig类的顶部添加一个@ConditionalOnProperty批注。请参阅以下内容:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity (prePostEnabled = true)
@ConditionalOnProperty (name = "myproject.security.enabled", havingValue = "true", matchIfMissing = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
   // your security config
}

步骤2: 将以下配置添加到您的application.propertiesapplication.yml文件中。

application.properties

security.ignored=/**
myproject.security.enabled=false

OR

application.yml

security:
  ignored: /**

myproject:
  security:
    enabled: false

答案 18 :(得分:0)

您需要将此条目添加到 application.properties 中,以绕过 Springboot默认安全性

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration

然后将没有任何身份验证框。 otrws,凭据为:- user99b962fa-1848-4201-ae67-580bdeae87e9 (随机生成的密码)

Note: my springBootVersion = '1.5.14.RELEASE'

答案 19 :(得分:0)

将以下行添加到您的主应用中。

如果你没有使用activiti,请删除org.activiti.spring.boot.SecurityAutoConfiguration.class。

同样,如果您没有使用弹簧启动执行器,请移除执行器。

@EnableAutoConfiguration(exclude = {
org.activiti.spring.boot.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration.class,
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class })