3

JBoss MBean に接続しようとしていますが、認証の失敗によりブロックされています。

        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-invoker-service.xml 内)。

<interceptor code="org.jboss.jmx.connector.invoker.AuthenticationInterceptor"
                 securityDomain="java:/jaas/jmx-console"/>

また、ユーザーは jmx-console-users.properties で適切に定義されています。

プリンシパルが正しく読み取られていないように思えます。JBoss は Context.SECURITY_PRINCIPAL/CREDENTIALS 以外のものを使用しますか? 彼らの命名文書からはそうではないように見えますが、なぜこれが失敗するのですか?

どうもありがとう、

-C

4

1 に答える 1

1

次のように初期コンテキスト ファクトリを設定してみてください。

env.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.security.jndi.LoginInitialContextFactory");
于 2012-12-13T15:24:04.390 に答える