在 Spring 引导应用程序和 hawt.io 中使用基本身份验证的 Jolokia

Jolokia with basic authentication in Spring Boot application and hawt.io

我想做什么:

我正在尝试 运行 一个带有嵌入式 Jolokia 的示例 spring 引导应用程序,在其上配置基本身份验证并从 hawt.io 连接到它,我是一个试点项目.

我的设置(一切都在本地主机上,没有防火墙):

我使用的是最新的 spring 引导程序,可用于我使用 jolokia 和 hawt.io 的示例应用程序(免责声明我对 spring 引导程序和 spring 安全)

Spring启动版本:1.5.2 RELEASE Spring 安全:4.2.2 发布 Jolokia: 1.3.5

测试 1:运行ning 完全没有 spring 安全性(我在 application.properties 中设置了 management.security.enabled=false) - 一切都按预期工作,我能够连接到 localhost:8080/jolokia,而无需任何 user/password 从我的浏览器和 hawt.io 应用程序,我在本地 运行ning

测试 2: 注释掉行 management.security.enabled=false 并创建以下配置文件以插入 spring 安全性:

@Configuration
@EnableWebSecurity
public class SpringSecurityConfiguration extends WebSecurityConfigurerAdapter {

@Autowired
public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication()
            .withUser("admin")
            .password("admin")
            .roles("ACTUATOR");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .authorizeRequests()
            .antMatchers("/").permitAll()
            .antMatchers("/error").permitAll()
            .antMatchers("/jolokia/**").hasRole("ACTUATOR")
            .and().httpBasic();
 }
}

完成此步骤后,我看到当从浏览器连接到 localhost:8080/jolokia 时,我看到一个基本身份验证弹出窗口,我输入 admin/admin 并看到 Jolokia 响应,所以我得出结论,我的 spring 安全设置正常

现在 运行 hawt.io:

java -jar hawtio-app-1.5.0.jar --port 5555

现在,当我在 hawt.io UI 上输入 localhost:8080 / jolokia 连接的详细信息后点击 "connect"(它没有任何 user/password 文本字段)它会将我带到 hawt.io 登录屏幕。当我输入 admin/admin 时,我会看到 "Failed to Connect, Forbidden" UI 消息。

我试图查看 hawt.io 发送到我的 localhost:8080 的请求(使用 burp 套件),在看到 hawt.io 登录屏幕之前我看到了尝试在 8080 上查询 jolokia 时出现很多 401(未经授权)响应(当然我这样做了,因为它在输入 admin/admin 之前 - 所以没有机会提前知道)。 在我进入 hawtio 的登录屏幕后,输入 admin/admin 并按 "login" - 我根本没有看到从 hawt.io 到 8080 的任何请求。我只看到一个从 UI 到 hawt.io 服务器的请求,它以 403 响应。所以我怀疑它是 hawt.io 本身的内部身份验证 window,它与 jolokia 无关.

所以我要问的是 - 我在此设置中缺少什么,我应该如何配置 hawt.io 才能连接到我的设置?

非常感谢

尝试将 endpoints.jolokia.sensitive=false 添加到 Spring 启动 application.properties

默认情况下Spring Boot 将 Jolokia 视为 "sensitive" 资源,这可能会导致访问 Jolokia 时出现授权错误。

将 jolokia 主机名添加到 属性 hawtio.proxyWhitelist 为我完成了工作。