Spring Boot 2.2.4 - 禁用安全性

3
我发现大量的博客文章和stackoverflow上的问题都在讨论如何在Spring Boot中禁用安全性,但是这些方法似乎都不适用于Spring Boot 2.2.4。
我之所以提出这个问题,是因为我想在开发和测试配置文件中禁用安全性,以便我们可以在不生成jwt令牌的情况下部署应用程序。
从我的角度来看,最有前途的方法是通过属性文件排除SecurityAutoConfiguration类,但是排除没有任何效果。
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration

其他属性,例如management.security.enabled似乎已被弃用。

根据配置文件自行启用,而非使用自动配置。此外,出于安全考虑,有多个排除项,特别是在进行OAuth或手动配置安全性时(由于您使用JWT,因此似乎正在执行此操作)。 - M. Deinum
2个回答

6

我在 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

这是一个来自Github的链接,包含了一个基于Spring Boot框架的IT技术相关内容。其中使用了@Configuration、@ConditionalOnProperty、@Import等注解,并继承了WebSecurityConfigurerAdapter类,用于实现安全性配置。

2
如果有人只是想禁用安全性,第二部分(以及MyApplication上的Import)甚至都不需要。只是提供信息。 - zookastos

2
您可以为您的配置文件创建一个WebSecurityConfigurerAdapter Bean,其中包含以下重写方法实现,以从Spring Security中排除所有端点:
    @Override
    public void configure(WebSecurity web) {
        web.ignoring().antMatchers(
                "/**"
        );
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接