【发布时间】: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。之后的所有请求似乎都被转发到登录页面。
我有以下问题:
- 如果对应用程序的一个请求失败,为什么我会退出?这是一个错误吗?
- 401 的来源是什么? SBA 还是我的应用程序?我知道 SBA 代理对应用程序的请求。根据我的应用程序的访问日志,当我登录 SBA 时,没有完成对
/jolokia的请求。这是否意味着SBA直接返回401?但它的日志没有任何相关性。 - 直接访问
/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