我们已经看到了许多与Spring Boot的Health Actuator端点相关的问题。经历了其中的一些,我们仍然处于亏损状态。
我们的目标是:
HttpSecurity
)我们尝试过:
WebSecurityConfigurerAdapter
并配置WebSecurity
对象以忽略/health
端点的安全性,然后根据{{3将单独的端点映射到/health
端点希望能够启用安全路径。security.oauth2.resource.filter-order=3
。这会将OAuth2AuthenticationProcessingFilter
放在Actuator的Mvc端点之前,并允许处理包含预先认证的Authorization: Bearer ...
标头(例如JWT授权)的请求。但是,它规定所有请求都包含授权 - 否则,FilterSecurityInterceptor
触发器Secure object: FilterInvocation: URL: /health; Attributes: [#oauth2.throwOnError(authenticated)]
和AccessDeniedException
对/health
和OAuth2使用基本身份验证,其他所有内容都是免费的(请参阅https://github.com/spring-projects/spring-boot/issues/5072& Spring boot oauth2 management httpbasic authentication)。
我们一直在回答的问题是我们如何得到:
/health
端点充当不安全 Authorization: Bearer ...
标头的请求)到/health
端点没有相应的授权或角色才能充当不安全 Authorization: Bearer ...
标头的请求)到/health
端点具有相应的授权或角色,以充当安全 我们可以通过以下方式轻松允许任何请求访问/health
:
@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
super.configure(web);
web.ignoring().antMatchers(HttpMethod.GET, "/health", "/info");
}
}
这完全可以作为准备/活力探测器。但是,当用户实际进行身份验证时,它不会提供查看哪些支持服务可能行为不正常的好处。
提前致谢!
答案 0 :(得分:0)
我遇到了类似的东西,这有点起作用: 为执行器添加一个hacky访问规则,例如:#oauth2.clientHasRole(' ROLE_CLIENT')或hasRole(' ROLE_ANONYMOUS'),可以为执行器端点填充安全上下文(两者都是经过身份验证和未经过身份验证的请求)并调整“敏感”信息。执行器端点配置。 / health应返回匿名和完整信息的基本信息,以便在此情况下进行身份验证,前提是您启用了管理安全性并将其标记为非敏感。 您仍然需要保留过滤器配置。
答案 1 :(得分:0)
尝试一下,为我工作
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**").authorizeRequests()
.antMatchers("/actuator/**","/assets/**")
.permitAll()
........
;
}