当前位置: 首页 > 知识库问答 >
问题:

Springboot执行器刷新和总线刷新始终返回401未授权

蓝鸿哲
2023-03-14

我正在从我的Jenkins点击总线刷新endpoint,我希望该endpoint是安全的。

下面是我的申请。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时——请求GEThttp://localhost:8080/health我得到如下正确的回答

{"status":"UP"}

但是当我点击curl时——请求POSThttp://localhost:8080/bus-刷新

curl-请求POSThttp://localhost:8080/refresh

我得到403和401

{时间戳:2020-08-26T10:46:26.370 00:00,状态:403,错误:禁止,消息:路径:/bus刷新}

我尽了我所能,但仍然无法将刷新和总线刷新都带出安全性。需要帮助

共有1个答案

甘骞尧
2023-03-14

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

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

在健康endpoint中,您没有设置尾部斜杠,因此当您调用curl时,请求GEThttp://localhost:8080/health正如你所说,你得到了正确的回答。但是,然后调用了不带尾随斜杠的刷新和总线刷新,并用它定义了两个endpoint。您是否尝试像http配置中定义的那样卷曲这些endpoint?(带尾随斜杠)

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

 类似资料:
  • 我正在将一个旧的java Spring项目重构为springboot,并以传统的war风格部署它。出于某种原因,我必须坚持传统的web.xml来启动应用程序。多亏了Springboot遗产,我可以通过web.xml实现这一点: 此外,我添加了springboot执行器依赖项。应用程序。属性如下所示: 应用程序可以正常启动,但当我尝试从浏览器访问endpoint时,它只返回一个“401需要完全身份验

  • 我发现Spring Cloud总线不支持在Spring Cloud版本2020.0.0上对/执行器/总线刷新的POST请求。当我尝试发送它时,我收到405“方法不允许”。是否有任何方法可以在不使用/monitor和git webhooks或降级Spring云版本的情况下自动刷新所有客户端服务的配置? 我已经包括了spring cloud starter总线amqp和spring boot star

  • 我正在尝试刷新从wso2 identity server获得的访问令牌(基于https://docs.wso2.com/display/IS510/Refresh令牌授权);服务器返回无效的授权类型响应 访问令牌是使用openid范围的“授权代码”授权类型获得的。 我已经打开了服务器上的日志记录;然而,我无法确定无效授权类型响应的原因。如何让WSO2 Identity Server使用刷新令牌刷新

  • 我在自己的Web API上使用Oauth2,在Web应用程序上使用ASP.NET C#来使用该API。在我的web应用程序上,我正在进行HttpWebRequests。当我的访问令牌过期时,我调用一个方法“refreshToken”,该方法发出请求以获取新的访问令牌。这工作很好,没有问题...除了我得到的响应包含一个新的刷新令牌???我在等新的访问令牌。我甚至认为在没有再次传递凭据的情况下这是不可

  • 我可以通过oauth过程获得一个令牌,我可以成功地使用该令牌与GDrive交互。该令牌有AccessToken,但没有RefreshToken。如何获得刷新令牌? 这是在web服务中。以下是启动oauth授权过程的代码: 以下是调用/gdrivecb时调用的相关代码(oauthconfig与前面相同,code是URL参数: 该令牌包含AccessToken,但不包含refreshToken。它工作

  • 问题内容: 如果将新文档索引到Elasticsearch索引,则可在索引操作后1秒钟左右搜索新文档。但是,可以通过调用或对索引进行操作来强制使该文档可立即搜索。这两个操作之间有什么区别- 结果似乎对他们来说是相同的,可以立即搜索文档。 这些操作中的每一项到底是什么? ES文档似乎并未深入解决此问题。 问题答案: 您得到的答案是正确的,但我认为值得详细说明。 刷新有效地调用了Lucene索引读取器上