Springboot actuator refresh 和 bus-refresh 总是返回 401 Unauthorized

Posted

技术标签:

【中文标题】Springboot actuator refresh 和 bus-refresh 总是返回 401 Unauthorized【英文标题】:Springboot actuator refresh and bus-refresh always return 401 Unauthorized 【发布时间】:2020-12-15 03:44:51 【问题描述】:

我正在使用我的 Jenkins 访问 bus-refresh 端点,我希望该端点是安全的。

下面是我的application.yml

management:
  endpoints:
    web:
      exposure:
        include: health,refresh,bus-refresh
      base-path: /
  health:
    ldap:
      enabled: false

下面是我在 spring-boot 中的 http 配置

http
                    .anonymous()
                    .and()
                    .authorizeRequests()
                    .antMatchers("/swagger-ui.html", "/error", "/swagger-resources/**", "/webjars/**", "/v2/api-docs", "/test/**", "/api/v1/calculate/**").permitAll()

                    .antMatchers("/health", "/refresh/", "/bus-refresh/").permitAll()

                    .anyRequest().authenticated()
                    .and()
                    .oauth2ResourceServer()

现在当我点击curl --request GET http://localhost:8080/health 时,我会得到如下正确响应

"status":"UP"

但是当我点击curl --request POST http://localhost:8080/bus-refresh

curl --request POST http://localhost:8080/refresh

我得到 403 和 401

"timestamp":"2020-08-26T10:46:26.370+00:00","status":403,"error":"Forbidden","message":"","path":"/bus-refresh"

我尽我所能,但仍然无法将refreshbus-refresh 都带出安全性。需要帮助

【问题讨论】:

你明白了吗?我遇到了同样的问题,我不知道出了什么问题。 不.. 我宁愿保护端点,并让我的管道在每次到达端点时获取承载令牌 【参考方案1】:

我问这个是为了以防万一,因为我在你的例子中没有看到它。在您的配置中,您有:

http
...
.antMatchers("/health", "/refresh/", "/bus-refresh/").permitAll()
...

在健康端点中,您没有设置尾部斜杠,因此当您调用 curl --request GET http://localhost:8080/health 时,您会得到如您所说的正确响应。但是随后您调用了refreshbus-refresh,没有尾部斜杠,并且两个端点都是用它定义的。您是否尝试像在 http 配置中定义的那样卷曲那些端点? (带有斜杠)

希望有帮助,如果有效,请告诉我。

【讨论】:

以上是关于Springboot actuator refresh 和 bus-refresh 总是返回 401 Unauthorized的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# springboot整合Actuator监控

springboot源码研究actuator,自定义actuator路径

[转]springboot 监控 Actuator和Admin

SpringBoot系列:SpringBoot使用Actuator

SpringBoot系列: Actuator监控

SpringCloud SpringBoot 组件使用SpringBoot Actuator