1

現在、Java EE アプリケーションを JBoss 6 から JBoss 7.1.1 に移植しています。このアプリケーションには Web インターフェースはなく、Eclipse RCP に基づくリモート クライアントのみがあります。クライアントを認証するために、リモート クライアントは「javax.security.auth.login.LoginContext」を使用して必要な資格情報を提供します。サーバーは、「DatabaseServerLoginModule」を使用して、アプリケーション セキュリティ ドメインへのすべてのアクセスを認証します。

そのアプリケーションを JBoss 7.1.1 に移植するために、次のことを行いました。

「standalone-full.xml」でセキュリティ ドメインを構成しました。

<security-domain name="myDomain" cache-type="default">
  <authentication>
    <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
      <module-option name="dsJndiName" value="jdbc/myDS"/>
      <module-option name="principalsQuery" value="select u.password from users u left join authorizables a on u.id=a.id where a.name=?"/>
      <module-option name="rolesQuery" value="SELECT 'user', 'Roles' FROM authorizables WHERE name=?"/>
    </login-module>
  </authentication>
</security-domain>   

次に、セキュリティ レルムを構成しました。

<security-realm name="MyAppRealm">
  <authentication>
    <jaas name="myDomain"/>
  </authentication>
</security-realm>

最後に、リモート コネクタをカスタム レルムにバインドしました。

<connector name="remoting-connector" socket-binding="remoting" security realm="MyAppRealm"/>

サーバーにアクセスしようとすると、次の例外がスローされます。

ERROR connection:99 - JBREM000200: Remote connection failed: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed

javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.RuntimeException: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed]
at org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:36)
at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:121)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at my.SampleClient.login(SampleClient.java:110)
... 26 more
Caused by: java.lang.RuntimeException: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed
at org.jboss.naming.remote.protocol.IoFutureHelper.get(IoFutureHelper.java:87)
at org.jboss.naming.remote.client.NamingStoreCache.getRemoteNamingStore(NamingStoreCache.java:56)
at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateCachedNamingStore(InitialContextFactory.java:166)
at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateNamingStore(InitialContextFactory.java:139)
at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:104)
... 31 more
Caused by: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed
at org.jboss.remoting3.remote.ClientConnectionOpenListener$Capabilities.handleEvent(ClientConnectionOpenListener.java:365)
at org.jboss.remoting3.remote.ClientConnectionOpenListener$Capabilities.handleEvent(ClientConnectionOpenListener.java:214)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
at org.xnio.channels.TranslatingSuspendableChannel.handleReadable(TranslatingSuspendableChannel.java:189)
at org.xnio.channels.TranslatingSuspendableChannel$1.handleEvent(TranslatingSuspendableChannel.java:103)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
at org.xnio.nio.NioHandle.run(NioHandle.java:90)
at org.xnio.nio.WorkerThread.run(WorkerThread.java:184)
at ...asynchronous invocation...(Unknown Source)
at org.jboss.remoting3.EndpointImpl.doConnect(EndpointImpl.java:270)
at org.jboss.remoting3.EndpointImpl.doConnect(EndpointImpl.java:251)
at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:349)
at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:333)
at org.jboss.naming.remote.client.EndpointCache$EndpointWrapper.connect(EndpointCache.java:105)
at org.jboss.naming.remote.client.NamingStoreCache.getRemoteNamingStore(NamingStoreCache.java:55)
... 34 more

私が何を間違えたのか、誰にもわかりません。このシナリオを設定する方法について、誰かヒントを教えてください。JBoss のドキュメントを検索しましたが、この問題の解決策が見つかりませんでした。

4

1 に答える 1

-1

一部:

<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">

それは間違っています。リンクhttps://docs.jboss.org/author/display/AS71/Security+subsystem+configurationによると、「 org.jboss.security.auth.spi.DatabaseServerLoginModule」の完全な名前クラスと「データベース」を使用しないでください。この「コード」が「完全に名前が修飾されたクラス」に関連付けられているテーブル。

于 2012-10-17T19:12:49.253 に答える