アプリケーションを AS 5.1.0 から AS 7.2.0 に移行する際に別の問題が発生しました
私のアーキテクチャは次のようになります。
- セキュアなリモート EJB を呼び出す一部のスタンドアロン クライアント アプリ
- 認証用のカスタム プリンシパルとプレーン パスワードを渡すクライアント アプリ
サーバーは独自の LoginModule を使用します (org.jboss.security.auth.spi.LdapExtLoginModule を拡張)
--> AS 5.1.0 を使用するとすべて正常に動作します
- --> AS 7.2.0 を使用すると、カスタム LoginModule が呼び出し側クライアントから正しいプリンシパルとパスワードを取得できません
ここや他のフォーラムでのクイックスタートプロジェクトやその他のディスカッションで解決策を見つけようとしましたが、何もうまくいきません。
EJB でセキュリティを無効にすると、すべて正常に動作します (ただし、認証されていない ID を使用します)。
スタンドアロン構成またはクライアント側のセキュリティ実装のいずれかに問題があることを示唆していますが、すべてを試してみましたが、降伏する直前です。
誰かアドバイスをお願いできますか?
サーバーには、セキュリティのための EJB プロジェクト、API プロジェクト、JAR プロジェクトが含まれています。すべてが EAR プロジェクトにパッケージ化されています。
クライアントには、サーバーの api- および security-projects も使用する JAR-Project のみが含まれます。
次のサーバー構成を試しました:
EJB 用のカスタム LoginModule を使用した独自の SecurityDomain + デフォルトの「ApplicationRealm」(ローカル認証)を使用したリモート コネクタの保護
- リモート EJB ルックアップは正常に動作します
- リモート ejb メソッド呼び出しは、サーバー側でカスタム LoginModule を呼び出しますが、間違ったプリンシパルとパスワード ($local & random-password) を送信します
- --> EJBAccessException が発生します: JBAS013323: 無効なユーザー
EJB 用のカスタム LoginModule を使用した独自の SecurityDomain + 独自の Realm を使用したリモート コネクタの保護 (独自の LoginModule を使用した jaas-authentication)
- ejb ルックアップ中に例外が発生し、カスタム LoginModule が呼び出されません (javax.naming.NamingException: サーバーへの接続に失敗しました。試行されたサーバー: [remote://localhost:4447])
EJB 用のカスタム LoginModule + セキュリティなしの remoting-connector を持つ独自の SecurityDomain
- リモート EJB ルックアップは正常に動作します
- リモート ejb メソッド呼び出しは、サーバー側でカスタム LoginModule を呼び出しますが、間違ったプリンシパルとパスワード (匿名とランダム パスワード) を送信します
- --> EJBAccessException が発生します: JBAS013323: 無効なユーザー
JBoss AS 5.1 では、次のようにクライアント側でプリンシパル オブジェクトにパスワード資格情報を渡します。
final SecurityClient client = SecurityClientFactory.getSecurityClient(JBossSecurityClient.class);
client.setVmwideAssociation(true);
client.setSimple(customPrincipal, plainPass);
client.login();
これは AS 5.1 では正常に機能しますが、AS 7.1 では無視されるようです。
したがって、私の質問は、これらの値を LoginModule で使用するために、プリンシパル オブジェクトとパスワード (プレーン) を正しく伝達する方法です??