如何在Spring Boot中将自定义AbstractHealthIndicator设置为不敏感,以便显示/ health端点?

时间:2017-07-24 21:21:31

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

我正在运行Spring Boot v1.5.2.RELEASE。

如何在不禁用整个Spring Boot项目的安全性的情况下显示DEFINER以下内容?

/health

以下是TestingHealthIndicator.java的代码:

{
    "status": "UP",
    "testing": {
        "status": "UNKNOWN",
        "foo": "bar"
    }
}

"测试"仅当我在import org.springframework.boot.actuate.health.AbstractHealthIndicator; import org.springframework.boot.actuate.health.Health.Builder; import org.springframework.stereotype.Component; @Component public class TestingHealthIndicator extends AbstractHealthIndicator { @Override protected void doHealthCheck(Builder builder) throws Exception { builder.withDetail("foo", "bar"); } }

中设置以下内容时才显示/ health
application.properties

但我不想禁用整个项目的安全性。

我确实在这里看到了一些有用的信息:https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html,但没有看到将自定义management.security.enabled=false management.health.defaults.enabled=false 设置为非敏感的特定方式。

1 个答案:

答案 0 :(得分:0)

假设您只想禁用Security for healthcheck。对于apis的其余部分,您希望正常进行身份验证。因此,健康需要显示所有信息。我曾经在Springboot 4.4中拥有相同的项目。这是我在application.yml

中配置的内容
endpoints:
  health: 
    sensitive:  false 

management:
  security:
    enabled: false
  health:
    defaults:
      enabled: true

在安全性方面,将其他apis做为完全身份验证。

<intercept-url pattern="/health access="permitAll" />
<intercept-url pattern="/api/**" access="isFullyAuthenticated()" />

希望这有帮助。