Spring Boot 2.0:如何禁用特定端点的安全性

Spring Boot 2.0: how to disable security for a particular endpoint

提问人:kycrow32 提问时间:6/14/2018 最后编辑:kycrow32 更新时间:11/17/2023 访问量:12007

问:

我需要完全绕过Spring Boot 2.0应用程序中某些端点的安全性(身份验证/授权) - 端点,如“/version”和“/robots.txt” - 但保持所有其他端点的安全性。

更复杂的是,我正在从事一个项目,而这个项目是更大项目的一部分。我的公司还有另一个小组,他们提供了一个利用 Spring Security 的库。这之所以相关,是因为这意味着我不能简单地覆盖一个 spring 安全类来使它工作——这些类已经被我无法控制的代码覆盖了。

有没有办法将 spring boot 2.0 配置为绕过某些端点的身份验证?

在 sprint boot 1.5 中,我们可以在 application.yml 文件中指定以下内容: security.ignored:/版本 但在 Spring Boot 2.0 中,这不再有效。

安全 spring-boot 身份验证

评论

0赞 pvpkiran 6/14/2018
尝试设置management.security.enabled=true
0赞 kycrow32 6/14/2018
感谢您的回复,pvpkiran。我的理解是 management.security.enabled 为执行器配置安全性,而不是为常规 http 端点配置安全性。它在 Spring Boot 2.0 中被删除。无论如何,我都试了一下;没有运气。
0赞 Federico Piazza 6/15/2018
您必须使用像这样的 antMatcher 进行配置configure(HttpSecurity httpSecurity).antMatchers('/swagger-ui.html').permitAll()

答:

8赞 kycrow32 6/15/2018 #1

费德里科的答案是正确的。我在Spring Boot 2.0类中添加了以下类:

package com.example.demo;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    @Configuration
    public class DemoConfigurer extends WebSecurityConfigurerAdapter {
        @Override
        public void configure(HttpSecurity http) throws Exception{
            http.authorizeRequests().antMatchers("/version").permitAll();
            super.configure(http);
        }
    }
}