我有我的JMX服务器,它注册从本地文件读取的bean,并根据需要将它们提供给其他JMX客户端.可以使用"jconsole"或在Tomcat容器下运行的Java应用程序访问服务器.
我想要的是添加身份验证,以防止"未知"身份访问JMX服务器.为此,我使用以下JVM选项添加了Kerberos authentication @ server
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=5555
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.ssl=false
-Djava.security.auth.login.config=./conf/jaas.conf
-Djava.security.krb5.conf=./conf/krb5.conf
-Dcom.sun.management.jmxremote.login.config=MyKrbAuth
-Ddynamic.mbean.store=./conf/mbeans
-Djava.net.preferIPv4Stack=true
Run Code Online (Sandbox Code Playgroud)
我的jaas.conf看起来像这样>>
MyKrbAuth {
com.sun.security.auth.module.Krb5LoginModule required debug=true debugNative=true;
};
Run Code Online (Sandbox Code Playgroud)
当我使用上面的配置启动我的JMX服务器并尝试使用"jconsole"连接它时,我在客户端获得以下异常并且连接失败>>
Cipher: Crypto Permission check failed
Cipher: granted: (CryptoPermission * 128)
Cipher: requesting: (CryptoPermission AES 256)
Run Code Online (Sandbox Code Playgroud)
但在服务器身份验证似乎是成功>>
[java] [STARTED] Mbean Server
[java] Debug is true storeKey false useTicketCache false useKeyTab false doNotPrompt false ticketCache is null isInitiator true KeyTab is null refreshKrb5Config is false principal is null tryFirstPass is false useFirstPass is false storePass is false clearPass is …Run Code Online (Sandbox Code Playgroud)