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
中设置了...password
和application.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();
答案 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
}