WAS V9.0 FixPack 20 (FP20)で、WASに含まれるIBM WebSphere MQ JCA resource adapterのバージョンが9.3.0.16に上がります。このバージョンの認証モードのデフォルトはMQCSP認証です。
FP20未満でのIBM WebSphere MQ JCA resource adapterのバージョンは、たとえばFP17〜FP19は9.1.0.17です。このバージョンの認証モードのデフォルトは互換モードです。
FP19からFP20に上げると、IBM WebSphere MQ JCA resource adapterのバージョンが9.3に上がることによって、認証モードのデフォルトは互換モードからMQCSP認証に変わります。
WAS V9.0をFP20未満からFP20以降に上げてから、JMS接続で認証関連のエラーが起き始める場合は、FP適用によって認証モードのデフォルトがMQCSP認証に変わったことが原因の可能性があります。
以下の文書にエラー発生例が紹介されています。
Why are my applications seeing MQRC 2035 errors after upgrading to WebSphere Application Server 9.0.5.20 or later?
Listener Portsで、MQ reason code 2035 (MQRC_NOT_AUTHORIZED) を含むエラー WMSG0019E が起きています。
WMSG0019E: Unable to start MDB Listener MDBListener1, JMSDestination jms/Q1 : com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: The security authentication was not valid that was supplied for queue manager 'QM1' with connection mode 'Client' and host name 'localhost(1414)'. Please check if the supplied username and password are correct on the queue manager to which you are connecting. For further information, review the queue manager error logs and the Securing IBM MQ topic within IBM Documentation.
at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:531)
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:215)
at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:458)
........
Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:203) ... 56 more
また、Queue Managerのログには、エラー AMQ9557E が出力されています。"mqm"の代わりにWASの起動ユーザーが使用されています。
AMQ9557E: Queue Manager User ID initialization failed for 'wasuser'.
EXPLANATION:
The call to initialize the User ID 'wasuser' failed with CompCode 2 and Reason 2035. If an MQCSP block was used, the User ID in the MQCSP block was 'mqm'. If a userID flow was used, the User ID in the UID header was 'wasuser' and any CHLAUTH rules applied prior to user adoption were evaluated case-sensitively
解決策
WASの汎用JVM引数に -Dcom.ibm.mq.cfg.jmqi.useMQCSPauthentication=N を設定して、認証モードを MQCSP からFP適用前の互換モードに戻すことが解決策になる可能性があります。
設定方法:
Java 仮想マシン設定 - IBM Documentation
「サーバー」 > 「サーバー・タイプ」 > WebSphere アプリケーション・サーバー」 > 「server_name」 をクリックします。 次に、「サーバー・インフラストラクチャー」セクションで、 Java およびプロセス管理 > プロセス定義 > Java 仮想マシン をクリックします。
汎用 JVM 引数
アプリケーション・サーバー・プロセスを開始する Java 仮想マシン・コードに渡すコマンド行引数を指定します。
「汎用 JVM 引数」フィールドに、以下のオプション・コマンド行引数を入力することができます。 複数の引数を入力する場合は、各引数の間にスペースを入力します。
設定の反映には、設定したアプリケーション・サーバーの(再)起動が必要です。
なお、JVMの設定であり、対象のアプリケーション・サーバー上のすべてのJMS接続に対して有効になりますので、ご注意ください。
管理コンソールの設定例
Why are my applications seeing MQRC 2035 errors after upgrading to WebSphere Application Server 9.0.5.20 or later? に紹介されています