问题描述:
在使用 Spring Boot 2.x 项目时,当添加了 Actuator 组件后,如果需要关闭 Actuator 组件的安全认证功能,通过在配置文件中加入 management.security.enabled=false
进行了配置,但是访问 Actuator 的端点时,仍然需要输入用户名和密码进行认证。
解决方法:
Spring Boot 2.x 中,Actuator 都需要通过 management.*
前缀的配置来进行管理。因此,关闭 management.security.enabled
配置,需要同时关闭 Actuator 所有的安全认证配置,包括基于用户验证的或者基于 IP 白名单验证的。其实,关闭 management.security.enabled
配置对应的是关闭 Actuator 的所有安全认证配置。
1、关闭 Actuator 的所有安全认证配置
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: always
security:
enabled: false
以上配置意义如下:
endpoints.web.exposure.include: '*'
表示所有端点都暴露出去,可以直接访问。endpoint.health.show-details: always
表示展示详细的健康检查信息。security.enabled: false
表示关闭所有的安全认证配置。
这里需要注意的是,如果只是关闭了 management.security.enabled
并不会生效,需要将上述全部配置一并关闭。
2、示例代码
下面是一个示例代码,演示了如何在 Spring Boot 2.x 中关闭 Actuator 的所有安全认证配置。在示例代码中,我们创建了一个 /actuator
路径下的健康检查端点,并通过 management.security.enabled=false
配置来关闭安全认证配置。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
@GetMapping("/hello")
public String hello() {
return "hello world!";
}
@GetMapping("/actuator/health")
public String health() {
return "OK";
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
application.yml 配置:
management:
security:
enabled: false
在上述示例代码中,我们创建了两个端点,一个是 /hello
,其它人可以直接访问,一个是 /actuator/health
,需要在访问前进行身份验证。通过在配置文件中加入 management.security.enabled=false
配置,可以关闭 /actuator/health
点的安全认证配置,以便其他人也可以访问了。
通过上述两条示例,我们可以很好地了解如何在 Spring Boot 2.x 中关闭 Actuator 的所有安全认证配置。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot2.x中management.security.enabled=false无效的解决 - Python技术站