我正在尝试做的事情:
我正在尝试使用嵌入式 Jolokia 运行示例 Spring Boot 应用程序,在其上配置基本身份验证并从 hawt.io 连接到它,我有点像试点项目。
我的设置(本地主机上的所有内容,没有防火墙):
- 端口 8080 上的 Spring 应用程序(默认)
- 端口 5555 上的 Hawtio
我正在使用可用于使用 jolokia 和 hawt.io 的示例应用程序的最新 Spring Boot(免责声明我对 Spring Boot 和 Spring Security 相当陌生)
Spring Boot 版本:1.5.2 发布 Spring Security:4.2.2 发布 Jolokia:1.3.5
测试 1:在没有 spring 安全性的情况下运行(我已经设置management.security.enabled=false
)application.properties
- 一切都按预期工作,我能够从我的浏览器和 hawt.io 应用程序连接到 localhost:8080/jolokia 而无需任何用户/密码我在本地运行
测试2:注释掉该行management.security.enabled=false
并创建如下配置文件来插入spring security:
@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
现在,当我在输入 localhost:8080 / jolokia 连接的详细信息(它没有任何用户/密码文本字段)后在 hawt.io UI 上点击“连接”时,它会将我带到 hawt.io 登录屏幕。当我在那里输入 admin/admin 时,我会看到“无法连接,禁止”的 UI 消息。
我试图查看 hawt.io 发送到我的 localhost:8080 的请求(使用 burp 套件),我看到在看到 hawt.io 登录屏幕之前,我在尝试查询时看到了很多 401(未经授权)响应8080 上的 jolokia(我当然会这样做,因为它在进入 admin/admin 之前 - 所以没有机会提前知道)。在我进入 hawtio 的登录屏幕后,输入 admin/admin 并按“登录” - 我根本看不到 hawt.io 到 8080 的任何请求。我只看到一个从 UI 到 hawt.io 服务器的请求,它以 403 响应。所以我怀疑它是 hawt.io 本身的内部身份验证窗口,它与 jolokia 无关。
所以我要问的是 - 我在这个设置中缺少什么,我应该如何配置 hawt.io 才能连接到我的设置?
非常感谢提前