Sea*_*art 6 spring-security jwt spring-boot spring-security-oauth2 spring-boot-actuator
我们已经看到了许多与 Spring Boot 1.5+ 版本的 Health Actuator 端点相关的问题。在经历了其中的一些之后,我们仍然不知所措。
我们的目标是:
HttpSecurity)我们尝试过:
WebSecurityConfigurerAdapter并配置WebSecurity对象以忽略/health端点的安全性,然后/health根据将多个 URL 路由到 Spring Boot Actuator 的健康端点,将单独的端点映射到端点,以希望启用安全路径。security.oauth2.resource.filter-order=3按照https://github.com/spring-projects/spring-boot/issues/5072中的建议进行。这将放在OAuth2AuthenticationProcessingFilterActuator 的 Mvc 端点之前,并允许处理包含预验证Authorization: Bearer ...标头(例如 JWT 授权)的请求。但是,它规定所有请求都包含授权——否则,FilterSecurityInterceptor触发器Secure object: FilterInvocation: URL: /health; Attributes: [#oauth2.throwOnError(authenticated)]和AccessDeniedException/health对其他所有内容使用基本身份验证和 OAuth2 是行不通的(请参阅Spring boot oauth2 management httpbasic authentication & https://github.com/spring-projects/spring-boot/issues/5072)。
我们不断回到的问题是我们如何获得:
/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");
}
}
Run Code Online (Sandbox Code Playgroud)
这仅作为准备/活跃度探测器非常有效。但是,当用户实际通过身份验证时,它不会提供查看哪些支持服务可能行为不当的好处。
提前致谢!
小智 0
我遇到了类似的事情,这有点有效:为执行器添加一个 hacky 访问规则,例如: #oauth2.clientHasRole('ROLE_CLIENT') 或 hasRole('ROLE_ANONYMOUS') ,它允许为执行器端点填充安全上下文(对于经过身份验证的端点)和未经身份验证的请求)并调整“敏感”执行器端点配置。在这种情况下,/health 应返回匿名的基本信息和经过身份验证的完整信息,前提是您启用管理安全并将其标记为不敏感。您仍然需要保留过滤器配置。
| 归档时间: |
|
| 查看次数: |
3927 次 |
| 最近记录: |