我正在使用Spring-Boot-Admin来监控 SpringBoot 应用程序,其执行器端点使用基本身份验证进行保护。如文档中所述,所需的凭据将传输到 Spring-Boot-Admin (SBA) 。SBA 本身也使用spring-boot-admin-server-ui-login
提供的 SecurityConfiguration 进行保护(基于文档和示例应用程序,请参阅Github Repo获取代码)。要监控的应用程序和 SBA 都是通过 docker 部署的。
登录到 SBA 工作正常,我可以看到应用程序状态以及运行状况结果。不过,对于某些内容,我看到了一个嵌套的登录掩码。当我点击“Logging”或“JMX”时,我被重定向到登录掩码:
/jolokia
在浏览器网络选项卡中,我可以看到端点返回了 401 。之后的所有请求似乎都被转发到登录页面。
我有以下问题:
- 如果对应用程序的一个请求失败,为什么我会退出?那是一个错误吗?
- 401的来源是什么?SBA 还是我的应用程序?我知道 SBA 代理对应用程序的请求。根据我的应用程序的访问日志,
/jolokia
当我登录 SBA 时没有完成任何请求。这是否意味着SBA直接返回401?它的日志虽然没有任何相关性。 - 直接访问
/jolokia
端点工作正常。当我使用 SBA 使用的相同(代理)URL(例如http://XXX:8090/api/applications/XXX/jolokia/
)时,它甚至可以工作。从 SBA 内部执行时有什么不同?
我试图在 SBA 中找到更多错误详细信息,但到目前为止未能找到正确的日志记录选项。它们要么不包含任何相关信息,要么包含太多似乎不相关的信息(例如 Spring Security)。记录完整的响应可能会有所帮助......
编辑:我刚刚意识到,对/jolokia
端点的请求实际上包含与对工作端点的请求(例如)不同的 cookie(Cookie:JSESSIONID=4E51B84AE15A6890500F967B23EB92AC /metrics
)。这很奇怪,但可能解释了为什么/jolokia
端点返回 401。现在的问题是:为什么它会发送不同的 cookie?