JMXConnector(Factory)使用与提供的用户名不同的用户名

时间:2019-03-28 17:33:34

标签: java ssl weblogic jmx

我们有一些运行的代码:

JMXConnectorFactory.connect(domainServiceURL, hashTable);

“哈希表”包含以下内容(以及3个超时值,此处不包括):

Hashtable<String, Object> hashTable = new Hashtable<String, Object>();
hashTable.put(WLContext.SECURITY_PRINCIPAL, username);
hashTable.put(WLContext.SECURITY_CREDENTIALS, password);
hashTable.put(WLContext.SECURITY_PROTOCOL, "ssl");
hashTable.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
    "weblogic.management.remote");

用户名是“ ADMIN_USER”。

在许多情况下,此代码有效。但是,在经过特定的代码路径(太多粘贴)之后,它将引发以下异常:

java.io.IOException: User USER2/GROUP1/GROUP2/ROLE1/ROLE2 does not have access to the administrator port.
    at weblogic.management.remote.common.ClientProviderBase.makeConnection(ClientProviderBase.java:244)
    at weblogic.management.remote.common.ClientProviderBase.newJMXConnector(ClientProviderBase.java:120)
    at javax.management.remote.JMXConnectorFactory.newJMXConnector(JMXConnectorFactory.java:369)
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:267)
    ...

注意,我已经通过日志语句确认,在两种情况下,我们仍将ADMIN_USER传递给connect方法。但是,该异常而是指向USER2。

我被告知Weblogic代码可以使用某些系统属性并更改其行为,但是我还比较了System.getenv()的工作时间和无效的时间,没有发现任何差异。还要注意,USER2在密钥库ssl.properties文件中,但是我看不到设置了任何一种SSL变量,这种变量会使connect方法在一种情况下使用该变量,而在另一种情况下不使用该变量。

我还尝试使用JMXConnector.CREDENTIALS代替上面的2个属性,并且没有变化。

似乎有些东西在重写(或添加)提供给connect方法的凭据。但是,正如我提到的,使这种情况发生的代码路径相当广泛,所以也许有人知道什么样的事情可能会覆盖登录凭据?

0 个答案:

没有答案