Spring Boot HttpSecurity流利的api命令?

时间:2018-07-10 21:23:48

标签: java spring spring-boot spring-security spring-boot-actuator

Spring 2.0.3.RELEASE

目标:在/actuator/health/actuator/info/ping(仅返回ResponseEntity.status(HttpStatus.NO_CONTENT).build()的自定义控制器)以外的所有端点上实现Spring Boot Security(启动程序的基本身份验证)。

以下内容为我提供了401。任意组合似乎都可以让我完全匿名访问所有端点,也可以401全部访问。

我在spring.security.user.name中设置了...passwordapplication.yml,并且它可以正常工作。

我已经实现了...

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

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

        super.configure(http);

        // just trying to get health working for starters
        http.authorizeRequests().antMatchers("/actuator/health").permitAll()
            .anyRequest().authenticated()
            .and().formLogin().permitAll();
    }
}

以下内容似乎仅限于执行器的/health/info端点,但同时也开放了我的自定义/ping端点(不在此列表中)。 / p>

http.requestMatcher(EndpointRequest.to("health", "info"))
    .authorizeRequests().anyRequest().permitAll();

1 个答案:

答案 0 :(得分:0)

问题最终成为Spring Tool Suite中的错误。在Gradle项目中使用Boot Dashboard并不总是能够获得构建输出。似乎正在使用其他目录,我无法弄清楚。

最终对我有用的HttpSecurity配置是:

@Override
protected void configure(final HttpSecurity http) throws Exception {
    // @formatter:off
    http.
        authorizeRequests().
            antMatchers("/ping", "/actuator/health", "/actuator/info", "/login").permitAll().
            anyRequest().authenticated().and().
        httpBasic().and().
        // CSRF tokens for API access
        csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
    // @formatter:on
}