3

我正在尝试做的事情:

我正在尝试使用嵌入式 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=falseapplication.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 才能连接到我的设置?

非常感谢提前

4

2 回答 2

2

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

于 2017-07-03T15:12:25.663 回答
0

尝试添加endpoints.jolokia.sensitive=false到 Spring Boot application.properties

默认情况下,Spring Boot 将 Jolokia 视为“敏感”资源,这可能会导致访问 Jolokia 的授权错误。

于 2017-04-04T13:48:39.800 回答