在整理-Spring Boot Actuator(一)中说到了actuator的基本配置,包括如何查看health、info,如何自定义一个health,这偏文章整理一下如何对spring boot提供的健康信息加入安全策略。
安全策略有以下几种方式,
- 增加身份认证
- 增加https
身份认证
身份认证就是在访问/health
的时候提供认证口令,在pom.xml中增加依赖,如下,
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
接着在application.properties中增加配置,如下,
# 取消默认健康检查
management.health.defaults.enabled=false
# 安全帐号、密码
security.user.name=admin1
security.user.password=admin2
# 会话创建策略使用 (always, never, if_required, stateless).
management.security.sessions=stateless
management.security.enabled=true
endpoints.health.sensitive=true
启动springboot程序,浏览器输入http://127.0.0.1:9090/health
可以看到会让你输入用户名和密码,输入完成以后可以看到健康信息。
==这里遇到一个奇怪的问题,management.security.sessions
提供的四种会话状态(always, never, if_required, stateless)貌似都没有起到作用,我首次安全认证通过以后,后面关闭浏览器然后重新在浏览器输入health的地址,不需要任何认证也可以看到health信息,感觉就像是认证通过一次以后就不需要认证了==
增加https
首先生成一个证书,如下,一路回车就好,
keytool -genkey -alias ranong -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/ranong.keystore -storepass 123456
接着在application.properties中加入如下代码,
management.ssl.enabled=true
management.ssl.key-store=classpath:ranong.jks
management.ssl.key-password=123456
启动springboot程序,浏览器输入https://127.0.0.1:9090/health
可以看到健康信息。
==手机QQ扫描下方二维码,快速加入Java架构师交流群==