写点什么

修复 Spring Boot Actuator 未授权访问问题的指南

作者:Apifox
  • 2023-09-22
    广东
  • 本文字数:1799 字

    阅读完需:约 6 分钟

修复 Spring Boot Actuator 未授权访问问题的指南

Spring Boot Actuator 的作用是提供了一组管理和监控端点,允许你查看应用程序的运行时信息,例如健康状态、应用程序信息、性能指标等。这些端点对于开发、测试 和运维团队来说都非常有用,可以帮助快速诊断问题、监控应用程序的性能,并采取必要的措施来维护和管理应用程序。


Spring Boot Actuator 未授权访问的配置

Spring Boot Actuator 提供了许多有关应用程序运行时信息的有用端点(endpoints),如/health、/info、/metrics 等。这些端点可以帮助开发人员和运维人员监控和管理 Spring Boot 应用程序。默认情况下,这些端点需要授权才能访问,以确保安全性。


如果你遇到 Spring Boot Actuator 未授权访问的问题,你可以采取以下步骤来解决:

1.添加 Spring Security 依赖

要启用授权,你可以在项目中添加 Spring Security 依赖。在 Maven 项目中,你可以添加以下依赖:


  <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-security</artifactId>  </dependency>
复制代码


在 Gradle 项目中,你可以添加以下依赖:


 implementation 'org.springframework.boot:spring-boot-starter-security'
复制代码

2.配置 Spring Security 权限

创建一个配置类来配置 Spring Security,以控制 Actuator 端点的访问权限。以下是一个示例配置类:


   import org.springframework.context.annotation.Bean;   import org.springframework.context.annotation.Configuration;   import org.springframework.security.config.annotation.web.builders.HttpSecurity;   import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;   import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/actuator/**").hasRole("ACTUATOR") .anyRequest().authenticated() .and() .httpBasic(); } }
复制代码


这个示例配置允许授权用户访问以"/actuator/"开头的所有 URL,并要求用户具有"ACTUATOR"角色。你可以根据自己的需求进行自定义配置。

3.配置 Actuator 端点的角色

在 Spring Boot 的应用属性文件(如 application.properties 或 application.yml)中,你可以配置 Actuator 端点的角色要求。例如,在 application.properties 中:


 management.endpoint.health.roles=ACTUATOR management.endpoint.metrics.roles=ACTUATOR
复制代码


这将指定只有具有"ACTUATOR"角色的用户才能访问/actuator/health 和/actuator/metrics 端点。

4.为用户分配角色

确保为授权用户分配了正确的角色。你可以在自己的用户认证和授权服务中配置角色。

5.测试访问

使用具有正确角色的凭证(用户名和密码)进行测试,以确保访问受限制的 Actuator 端点时不再出现未授权访问的问题。通过这些步骤,你可以配置 Spring Boot Actuator 以要求授权访问,并限制只有特定角色的用户才能访问这些端点。这有助于保护你的应用程序的敏感信息。

注意事项

在使用 Spring Boot Actuator 时,你需要注意以下事项:


  • 角色分配:确保为授权用户分配了正确的角色,以便访问 Actuator 端点。角色的分配可以在用户认证和授权服务中进行。

  • 版本兼容性:不同版本的 Spring Boot Actuator 可能会有一些配置差异,因此在升级或降级时要谨慎检查文档和配置。

  • 安全性:Spring Boot Actuator 端点包含敏感信息,因此请确保适当地保护它们,以防止未授权的访问。

使用 Apifox 测试和管理接口

Apifox 是一个比 Postman 更强大的接口测试工具,Apifox = Postman + Swagger + Mock + JMeter,它支持调试 http(s)、WebSocket、Socket、gRPC、Dubbo 等协议的接口,并且集成了 IDEA 插件。在开发完接口后,可以通过 Apifox 的 IDEA 插件一键自动生成接口文档,多端同步,非常方便测试和维护。




知识扩展:



参考链接:


用户头像

Apifox

关注

Apifox 2022-05-17 加入

Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化平台。Apifox = Postman + Swagger + Mock + JMeter

评论

发布
暂无评论
修复 Spring Boot Actuator 未授权访问问题的指南_Java_Apifox_InfoQ写作社区