在 Spring 引导应用程序和 hawt.io 中使用基本身份验证的 Jolokia
Jolokia with basic authentication in Spring Boot application and hawt.io
我想做什么:
我正在尝试 运行 一个带有嵌入式 Jolokia 的示例 spring 引导应用程序,在其上配置基本身份验证并从 hawt.io 连接到它,我是一个试点项目.
我的设置(一切都在本地主机上,没有防火墙):
- Spring 端口 8080 上的应用程序(默认)
- 端口 5555 上的 Hawtio
我使用的是最新的 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
为我完成了工作。
我想做什么:
我正在尝试 运行 一个带有嵌入式 Jolokia 的示例 spring 引导应用程序,在其上配置基本身份验证并从 hawt.io 连接到它,我是一个试点项目.
我的设置(一切都在本地主机上,没有防火墙):
- Spring 端口 8080 上的应用程序(默认)
- 端口 5555 上的 Hawtio
我使用的是最新的 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
为我完成了工作。