【问题标题】:JMX RMI authentication not workingJMX RMI 身份验证不起作用
【发布时间】:2013-11-13 19:20:39
【问题描述】:

我已将我的 Java 应用程序配置为需要身份验证但不需要 SSL

JVM 参数:

-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=localIpAddress 

management.properties:

com.sun.management.jmxremote.rmi.port=39998
com.sun.management.jmxremote.port=39999
com.sun.management.jmxremote.authenticate=true
com.sun.management.jmxremote.ssl=false

jmxremote.access

monitorRole readonly
dev readwrite
tester readwrite

jmxremote.password

monitorRole guest
dev dev
tester test

但是,我无需输入任何凭据即可访问此应用程序。

jconsole ipOfApplication:39998

我可以直接访问,无需任何密码提示。如何确保系统提示我登录?

注意:即使在启用 SSL 之后,也会发生相同的行为。

【问题讨论】:

  • 使用自定义 RMI 代理有什么特殊原因吗? IMO,问题是由代理引起的。开箱即用的配置按预期工作(在 JDK7u45、JDK8b115 上测试)
  • 如果没有自定义 RMI 代理,我将无法访问 JMX 应用程序
  • 我想您需要通过防火墙路由 JMX 流量,对吧?
  • 是的,根据这篇文章的答案,默认情况下,远程连接必须打开广泛的端口才能工作。 stackoverflow.com/questions/151238/…
  • 实际上,从 JDK7u4 开始,您可以指定 RMI 注册表端口 - 这就是导致问题的部分 - 请参阅此处 stackoverflow.com/questions/19442719/remote-jmx-technology/…

标签: java authentication jmx jconsole


【解决方案1】:

您可以使用以下配置:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=6002
-Dcom.sun.management.jmxremote.rmi.port=6003
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

并在您的 FW 上为 JMX 流量打开端口 6002、6003。这将使您能够远程访问 JMX 服务器,而无需引入任何自定义 RMI 代理。

【讨论】:

  • 我已验证该属性对我有效,因此我不必使用自定义代理。但是,我仍然面临与以前相同的问题:无需身份验证即可访问。我想确保所有访问都经过身份验证。
猜你喜欢
  • 2012-10-04
  • 1970-01-01
  • 2011-10-06
  • 2012-04-29
  • 2012-03-18
  • 2011-07-05
  • 2013-12-02
相关资源
最近更新 更多