我们正在Spring Boot2应用程序中使用基于令牌的身份验证(带有Spring Security)。现在我介绍Spring引导执行器到它。我想配置/healt
endpoint,使其在没有任何权限的情况下可见,但仅在经过授权后才显示健康检查详细信息。
我找到了management.endpoint.health.show-details=when_authorized
属性,该属性应该很有帮助,但现在我正在与Spring Security配置作斗争,以便让每个人都能看到:
{
"status": "UP"
}
在/acture/healt
下,使用令牌授权的用户应看到:
{
"status": "UP",
"details": { ... }
}
你也面临过类似的问题吗?你是怎么处理的?
好了,现在我明白了,如果您关闭应用程序中的安全性,并保留management.endpoint.health.show-details=when_authorized
字段,那么您得到的只是status
字段?如果我是对的,这不是一个问题,看看spring类HealthWebEndpointResponseMapper
中的Map
方法。我发现这个方法会覆盖(从响应中删除details
字段)if
中的条件为true:
public WebEndpointResponse<Health> map(Health health, SecurityContext securityContext,
ShowDetails showDetails) {
if (showDetails == ShowDetails.NEVER
|| (showDetails == ShowDetails.WHEN_AUTHORIZED
&& (securityContext.getPrincipal() == null
|| !isUserInRole(securityContext)))) {
health = Health.status(health.getStatus()).build();
}
Integer status = this.statusHttpMapper.mapStatus(health.getStatus());
return new WebEndpointResponse<>(health, status);
}
在您的例子中,我猜您已经将上面提到的属性设置为when_authorized
并且您已经关闭了身份验证,因此主体为NULL。不确定我是不是对,但我希望我给了你一个线索。:)
我们已经看到了一些与Spring Boot的1.5+版本的健康执行器endpoint相关的问题。经历了其中的一些,我们仍然不知所措。 我们的目标是: 要利用Spring Boot/Spring security对安全筛选器链接的自动配置(即不必完全实现/配置) 启用安全的运行状况访问(查看应用程序的运行状况信息的完整视图) 启用不安全的运行状况访问(允许endpoint在Kubernetes中充当
我正在将一个项目从Spring Boot1.x迁移到Spring Boot2.x。唯一剩下的,给我带来麻烦的是Spring引导执行器。 现在我使用了执行器库的较新版本,我不再接收那些附加信息(在提供凭据时)。我只看到: 一开始我想也许我没有正确设置凭据,但通过故意提供无效凭据,我得到了401未经授权。所以不可能是身份验证。 有什么建议吗?
{“Status”:“Down”} 我需要做什么才能显示自定义健康状况指示器?
我正在使用SpringBoot执行器返回应用程序的运行状况。 我看到了下面的回复 我想返回一个类似于下面的响应 有办法做到吗?
但我想要一些我可以调用从AWS弹性负载均衡器/自动缩放组。默认情况下,如果一个实例未通过健康检查,ELB/ASG将终止它并用一个新的实例替换它。问题是一些健康检查,如DataSourceHealthIndicator,会在数据库关闭时向下报告,但我的应用程序实例在其他方面是完全健康的。如果我使用默认行为,AWS将抛出完全正常的实例,直到数据库重新启动,这将导致我的账单增加。 我可以去掉DataSo
我想做的事 使用Spring Boot执行器创建两个(不同)endpoint 我的环境 null 要实现健康检查特性,我想使用Spring Boot执行器是最快的方法(默认情况下,/health映射到健康检查endpoint)。我还理解我们可以通过扩展AbstractHealthIndicator来配置这个endpoint(这样它将包括DB健康检查)。 但就我所见,我无法找到一种方法来创建多个en