1

ejb-jar.xml に次の構成があります。

 <assembly-descriptor>
    <security-role>
        <role-name>userRole</role-name>
    </security-role>

    <method-permission>
        <role-name>userRole</role-name>
        <method>
            <ejb-name>MyBean</ejb-name>
            <method-name>*</method-name>
        </method>
    </method-permission>
</assembly-descriptor>

そして、セキュリティドメインとして jboss.xml で次のように構成しました(次のように追加した追加のユーザーを持つデフォルトドメイン;

....
<security-domain>java:/jaas/JBossWS</security-domain>
...

User Properties Files Have Following;
SSOUSER=123456

User Roles Files have Following;
SSOUSER=userRole

JNP に接続するために、クライアントに次のコードを記述しました。

Hashtable environment = new Hashtable();
    environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
    environment.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099"); // remote machine IP
    environment.put(Context.SECURITY_PRINCIPAL, "SSOUSER"); // User Context
    environment.put(Context.SECURITY_CREDENTIALS, "123456");

そして、Bean メソッドにアクセスしようとしているときに jBoss コンソールで次のエラーが発生します (メソッドを呼び出そうとするとすぐに、ルックアップは正常に機能します)。

16:43:42,987 ERROR [RoleBasedAuthorizationInterceptor] Insufficient permissions, principal=null, requiredRoles=[userRole], principalRoles=[]

私の構成に欠けているものはありますか?

ありがとう

--

シュネホ

4

1 に答える 1

1

かなり長い間検索した後、次のことがわかりました。

https://community.jboss.org/message/251308

私が行った変更は次のとおりです。

Hashtable environment = new Hashtable();
environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.security.jndi.JndiLoginInitialContextFactory");
environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
environment.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099"); // remote machine IP
environment.put(Context.SECURITY_PRINCIPAL, "SSOUSER"); // User Context
environment.put(Context.SECURITY_CREDENTIALS, "123456");

すべてが変更されないままです。間違ったINTIAL_CONTEXT_FACTORY、つまり 'org.jnp.interfaces.NamingContextFactory' を使用していました。

于 2012-12-21T13:05:18.770 に答える