【问题标题】:Spring Boot 2.2.4 - disable securitySpring Boot 2.2.4 - 禁用安全性
【发布时间】:2020-06-11 08:31:12
【问题描述】:

我在 stackoverflow 上发现了大量关于如何在 Spring Boot 中禁用安全性的博客文章和问题 - 但似乎没有一个适用于 Spring Boot 2.2.4。

我问这个问题是因为我想通过配置禁用我的开发和测试配置文件的安全性,这样我们就可以在不生成 jwt 令牌的情况下进行部署。

从我的角度来看,最有希望的方法是通过属性文件排除 SecurityAutoConfiguration 类,但如上所述,排除没有效果。

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

management.security.enabled 等其他属性似乎已被弃用。

【问题讨论】:

  • 排除自动配置并根据配置文件启用自己。此外,出于安全考虑,还有多个排除项,特别是在执行 oauth 或手动配置安全性时(由于您使用 JWT,您似乎会这样做)。

标签: java spring spring-boot security


【解决方案1】:

我在 spring boot github 问题中找到了一个可行的解决方案。

禁用整个应用程序的安全性:

@SpringBootApplication ( exclude = {SecurityAutoConfiguration.class} )
@Import(MySecurityConfiguration.class)
public class MyApplication{
 }

...并通过安全配置中的参数启用:

@Configuration
@ConditionalOnProperty (  "my.security.enabled" )
@Import ( SecurityAutoConfiguration.class 
public class MySecurityConfiguration extends WebSecurityConfigurerAdapter {

}

来源:https://github.com/spring-projects/spring-boot/issues/12323#issuecomment-370519882

【讨论】:

  • 如果有人只是试图禁用安全性,甚至不需要第二部分(以及 MyApplication 上的 Import)。仅供参考。
【解决方案2】:

您可以为您的配置文件创建一个 WebSecurityConfigurerAdapter Bean,其中包含以下覆盖方法实现,以从 Spring Security 中排除所有端点:

    @Override
    public void configure(WebSecurity web) {
        web.ignoring().antMatchers(
                "/**"
        );
    }

【讨论】:

    猜你喜欢
    • 2014-07-16
    • 2016-05-03
    • 2016-01-02
    • 2019-12-28
    • 2018-04-26
    • 2019-03-30
    • 2020-02-02
    相关资源
    最近更新 更多