启用具有 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 和您的主应用程序使用相同的端口?如果您只是想禁用 Actuatormanagement.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 模拟具有安全上下文的用户身份验证