如果启用Jolokia安全性,Hawtio无法连接到Jolokia

时间:2014-10-12 20:45:34

标签: security hawtio jolokia

Hawtio和Jolokia非常新。我不使用JBOSS或任何其他RedHat产品,只使用Tomcat。我下载了Hawtio-default.war(版本1.4.21)和Jolokia.war(版本1.2.2)。我的本地计算机(localhost)上有两个Tomcat(7.0.39)实例,分别在端口18080和38080上运行。

问题:如果我没有为Jolokia启用安全性,我可以毫无问题地从Hawtio(端口18080)连接到Jolokia(端口38080)。但是,如果我启用了Jolokia的安全性,我无法连接并始终遇到以下错误(在FF和Chrome中都尝试过):

这是我所做的细节:
 1.将Hawtio.war部署到运行在端口18080上的Tomcat  2.将Jolokia.war部署到运行在38080端口的Tomcat  3.在没有为Jolokia启用安全性的情况下,我能够从没有代理的Hawtio(端口18080)连接到Jolokia(端口38080)。成功。
 4.然后,我尝试通过取消注释其web.xml中的部分来启用Jolokia的安全性,使其看起来像这样:

<login-config>
   <auth-method>BASIC</auth-method>
   <realm-name>UserDatabase</realm-name>
</login-config>

<security-constraint>
  <web-resource-collection>
     <web-resource-name>Jolokia-Agent Access</web-resource-name>
     <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
     <role-name>Jolokia</role-name>
  </auth-constraint>
</security-constraint>

<security-role>
   <role-name>Jolokia</role-name>
</security-role>

在tomcat / conf / user-tomat.xml文件中,我添加了:

  <role rolename="Jolokia"/>
  <user username="admin" password="hawtorwhat" roles="Jolokia"/>
  1. 将用户名/密码和角色添加到tomcat-users.xml文件中:
  2. 重新启动了两个Tomcat实例。
  3. 试图直接转到Jolokia http://localhost:38080/jolokia,它提示我输入用户名和密码。输入admin和hawtorwhat之后,我在浏览器中显示了以下消息。因此,直接远程连接到启用安全性的Jolokia就好了。
  4. 启动http://localhost:18080/hawtio,点击“连接”标签,提供相同信息以及localhost端口38080(无代理)的用户名和密码,取消成功。错误始终是相同的(不同浏览器的错误,奇怪,以前没有Chrome的hawtio插件):
  5. 在FireFox中:

    Cannot Connect: [Exception... "Failure" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://localhost:18080/hawtio/app/app.js?6f7be3a9a9f2ffe8 :: .send :: line 8" data: no]
    

    在Chrome中:

    Cannot Connect: NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://localhost:38080/jolokia-war-1.2.2/?maxDepth=2&maxCollectionSize=500&ignoreErrors=true&canonicalNaming=false'.
    

    我也尝试检查'使用代理',无论是否启用安全性,它都无法正常工作。错误消息如下:

    java.net.UnknownHostException: http
        java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
        java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
        java.net.Socket.connect(Socket.java:579)
        java.net.Socket.connect(Socket.java:528)
        java.net.Socket.<init>(Socket.java:425)
        java.net.Socket.<init>(Socket.java:208)
        io.hawt.web.OpenShiftProtocolSocketFactory.createSocket(OpenShiftProtocolSocketFactory.java:36)
        org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:122)
        org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
        org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
        org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
        org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
        org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
        io.hawt.web.ProxyServlet.executeProxyRequest(ProxyServlet.java:418)
        io.hawt.web.ProxyServlet.doPost(ProxyServlet.java:273)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        io.hawt.web.RedirectFilter.process(RedirectFilter.java:66)
        io.hawt.web.RedirectFilter.doFilter(RedirectFilter.java:38)
    

    我的IE(第9版)似乎不支持html5,现在就把它留下来......

    我阅读了Hawio和Jolokia的文档和其他网络帖子,不确定我错过了什么。基于上面的#3和#7,Jolokia似乎运行良好。我还该怎么办?我需要在任何地方添加任何配置或其他文件吗?请帮忙。另外,我该如何调试呢?

    谢谢,

    --- misterxy

0 个答案:

没有答案