一、开启端点:
1.首先要引入相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.在application.properties中进行相关配置,开发者可以使用执行器中的端点对应用进行监控或者应用进行交互,端点大部分默认开启的,如果开发者不想暴露太多端点,只开启info端点可以用以下语句
management.endpoints.enabled-by-default=false
management.endpoint.info.enabled=true
项目中该语句是非必写
二、暴露端点
web应用中,默认只有health和info两个端点暴露,如果想暴露更多端点可以进行配置,如想暴露mappings和metrics端点可以进行如下配置
management.endpoints.web.exposure.include=mappings,metrics
项目中该语句是非必写
三、端点保护
对外提供端点服务的时候,需要将端点保护起来,步骤如下
1.添加相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2.新建ActuatorSecurity添加spring security配置
@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatcher(EndpointRequest.toAnyEndpoint())
.authorizeRequests()
.anyRequest().hasRole("ADMIN")
.and()
.httpBasic();
}
}
这段代码中,HttpSecurity 配置所有的Endpoint都需要具有ADMIN角色才能访问(注意不包括@RequestMapping注解定义的接口)
演示如下:
在application.properties中添加一个用户来代替数据库里新建客户信息:
spring.security.user.name=sang
spring.security.user.password=123
spring.security.user.roles=ADMIN
使用postman进行访问http://localhost:8080/actuator/health
当不写入账号密码时访问报错
当输入账号为sang,密码为123后,返回端点信息
总结来说,就是先开启端点保证端点可用,然后是端点暴露保证客户端可以访问端点,最后为了安全需要对端点进行保护