Glassfish では、フラットファイル JMS 認証を簡単に設定できます ( http://docs.sun.com/app/docs/doc/821-0027/aeofg?a=viewを参照)。
問題はクライアント部分です。JNDI 経由でJMS リソース (ConnectionFactory
および) にアクセスするためのスタンドアロン Java クライアントを作成しています。Destination
そのクライアントから JMS にユーザー名とパスワードを渡す方法は?
私はすでに次のようないくつかのことを試しました:
1) InitialContext にそれらの資格情報を追加する
context.addToEnvironment(InitialContext.SECURITY_PRINCIPAL, "username");
context.addToEnvironment(InitialContext.SECURITY_CREDENTIALS, "password");
2) 接続ファクトリーでの JMS ユーザー名とパスワードのパラメーターの使用
connectionFactory.createConnection();
ただし、これらの方法はどれも機能していません。
プログラムを実行すると、次のようになります。
com.sun.messaging.jms.JMSSecurityException: [C4084]: Échec de
l'authentification de l'utilisateur : user=guest, broker=localhost:7676(34576)
at com.sun.messaging.jmq.jmsclient.ProtocolHandler.authenticate
(ProtocolHandler.java:1084)
そのため、「ゲスト」ユーザーで認証を試み続けます。
このテストではconnection.NORMAL.deny.user=*
、パーミッション ルールとして ( accesscontrol.properties
) を使用しました。
興味深いのは、接続ファクタが取得される前であっても、この例外がスローされることです。
InitialContext context = new InitialContext();
ConnectionFactory connectionFactory =
(ConnectionFactory)context.lookup("jms/middleware/factory");
/* The exception is thrown here, so authentication MUST have happened
before already (i.e. NOT in the createConnection(username, password) method) */
誰かが答えを知っていることを願っています。
よろしくお願いします
よろしく、
ディネッシュ