【问题标题】:Spring Boot Admin: 401 on Jolokia endpoint causes authentication to failSpring Boot Admin:Jolokia 端点上的 401 导致身份验证失败
【发布时间】:2018-03-16 04:36:03
【问题描述】:

我正在使用Spring-Boot-Admin 来监控 SpringBoot 应用程序,该应用程序的执行器端点使用基本身份验证进行保护。所需的凭据将传输到 Spring-Boot-Admin (SBA),如 documentation 中所述。 SBA 本身也使用spring-boot-admin-server-ui-login 和提供的 SecurityConfiguration 进行保护(基于文档和示例应用程序,请参阅Github Repo 获取代码)。 被监控的应用和 SBA 都是通过 docker 部署的。

登录 SBA 工作正常,我可以看到应用程序状态以及运行状况结果。不过,对于某些内容,我看到了一个嵌套的登录掩码。当我点击“Logging”或“JMX”时,我被重定向到登录掩码:

在浏览器网络选项卡中,我可以看到 /jolokia 端点返回了 401。之后的所有请求似乎都被转发到登录页面。

我有以下问题:

  1. 如果对应用程序的一个请求失败,为什么我会退出?这是一个错误吗?
  2. 401 的来源是什么? SBA 还是我的应用程序?我知道 SBA 代理对应用程序的请求。根据我的应用程序的访问日志,当我登录 SBA 时,没有完成对 /jolokia 的请求。这是否意味着SBA直接返回401?但它的日志没有任何相关性。
  3. 直接访问/jolokia 端点可以正常工作。当我使用 SBA 使用的相同(代理)URL(例如http://XXX:8090/api/applications/XXX/jolokia/)时,它甚至可以工作。在 SBA 中执行此操作有什么不同?

我已尝试在 SBA 中查找更多错误详细信息,但到目前为止未能找到正确的日志记录选项。它们要么不包含任何相关信息,要么包含太多似乎不相关的信息(例如 Spring Security)。记录完整的响应可能会有所帮助...

编辑:我刚刚意识到,对/jolokia 端点的请求实际上包含与对工作端点的请求(例如/metrics)不同的 cookie(Cookie:JSESSIONID=4E51B84AE15A6890500F967B23EB92AC)。这很奇怪,但可能解释了为什么/jolokia 端点返回 401。现在的问题是:为什么它会发送不同的 cookie?

【问题讨论】:

    标签: spring spring-boot spring-security spring-boot-actuator spring-boot-admin


    【解决方案1】:

    我尝试了各种方法,但最终无法解决这个问题。

    我最终得到了不同的配置:端点 (management.security.enabled=false) 根本没有安全性,而是将它们暴露在不同的端口 (management.port=8081) 上。此管理端点被完全阻止外部访问系统。

    这样,SBA 表现良好,应用程序仍然安全。最后,它的设置要简单得多,这也很好。

    【讨论】:

      猜你喜欢
      • 2021-06-24
      • 2022-08-16
      • 2015-03-13
      • 2019-01-06
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      相关资源
      最近更新 更多