启用具有 JWT 安全性的 Spring Boot 2.0 执行器端点

Posted

技术标签:

【中文标题】启用具有 JWT 安全性的 Spring Boot 2.0 执行器端点【英文标题】:Enable Spring Boot 2.0 Actuator Endpoints With JWT security 【发布时间】:2018-09-11 15:36:06 【问题描述】:

首先,我是 Spring Boot 框架的新手。我已经在执行器上工作了几天,并且能够设置端点来监控系统。当我为了安全而集成 JWT 时,我的所有执行器端点都坏了。

如何禁用 Spring Boot 安全性之上的执行器端点的 JWT 安全性? 以下是我的 application.yml 文件属性。

management:
  endpoint:
    metrics:
      enabled: true
  endpoints:
    web:
      exposure:
        include: health, metrics

【问题讨论】:

您是否为 Actuator 和您的主应用程序使用相同的端口?如果您只是想禁用 Actuator management.security.enabled=false 的安全性应该这样做。 @dur 这个属性在 Spring Boot 2 中被移除 - 现在相当于 management.endpoints.web.exposure.include=* 【参考方案1】:

如果您确实依赖 Spring Security,则必须专门为 /actuator 端点配置(禁用)它。

您必须按照official documentation 中的说明扩展WebSecurityConfigurerAdapter,并允许对所需端点的所有访问。查看这个 Spring Boot 2 安全示例Disabling actuator security but not user-defined endpoints。

这是禁用执行器端点安全性的方法:

@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter 

    @Override
    protected void configure(HttpSecurity http) throws Exception 
        http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests()
            .anyRequest().permitAll()
    


custom security example 也很有用。

【讨论】:

【参考方案2】:

补充 hovanessyan 的答案,如果您在配置中使用 @EnableResourceServer,您还需要将 @Order(-1) 注释添加到您的“ActuatorSecurity”类。

在此处查看更多信息:https://***.com/a/50048440/9697259

【讨论】:

以上是关于启用具有 JWT 安全性的 Spring Boot 2.0 执行器端点的主要内容,如果未能解决你的问题,请参考以下文章

具有 OAuth 2 和 JWT 安全性的 Spring Boot 微服务

在 Spring Boot 中使用 jwt 令牌的具有 http 安全性的 CrossOrigin

如何从 Spring Boot 应用程序调用外部 JWT API 服务 [关闭]

Spring Boot:使用 Junit 模拟具有安全上下文的用户身份验证

使用 JWT 令牌的 Spring Boot webflux 安全性

在 Spring Boot 安全性中使用公钥/私钥创建和验证 JWT 签名