3
我試圖連接到JBoss MBean,但由於身份驗證失敗而被阻止。遠程連接到JBoss 4.2.3的身份驗證
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "jnp://"+testIP+":"+testPort);
env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
env.put(Context.SECURITY_PRINCIPAL, "admin");
env.put(Context.SECURITY_CREDENTIALS, "admin");
InitialContext ic = new InitialContext(env);
RMIAdaptor server = (RMIAdaptor) ic.lookup("jmx/invoker/RMIAdaptor");
// Get the MBeanInfo for the JNDIView MBean
ObjectName name = new ObjectName("my.service:service=MyBean");
MBeanInfo info = server.getMBeanInfo(name);
一切似乎都在連接,直到最後一行的方面表現得很好,當我得到:
java.lang.SecurityException: Failed to authenticate principal=null, securityDomain=jmx-console
at org.jboss.jmx.connector.invoker.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:97)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.invocation.jrmp.server.JRMPProxyFactory.invoke(JRMPProxyFactory.java:179)
:
:
的安全域配置爲使用JAAS(在JMX-調用-service.xml中) :
<interceptor code="org.jboss.jmx.connector.invoker.AuthenticationInterceptor"
securityDomain="java:/jaas/jmx-console"/>
並且用戶在jmx-console-users.properties中正確定義。
在我看來,校長根本沒有被正確閱讀。 JBoss是否使用Context.SECURITY_PRINCIPAL/CREDENTIALS以外的內容?它從Their Naming Documentation出現,他們沒有,但爲什麼這是失敗呢?
非常感謝,
-C
感謝尼古拉。這是我需要的暗示。不幸的是,使用該上下文工廠在客戶端需要一些額外的配置文件。在試圖找出需要什麼的時候,我發現另一個上下文工廠插入並且似乎按照期望行事:'org.jboss.security.jndi.JndiLoginInitialContextFactory' – cneller
我正要建議下一個... :) – Nicholas