IBM MQ 问题:jmscmq0001 websphere mq 调用失败,compcode“2”('mqcc_failed')原因“2035”

IBM MQ Issue: jmscmq0001 websphere mq call failed with compcode '2' ('mqcc_failed') reason '2035'

在 spring JMS 项目中,我尝试连接到与 spring 客户端相同位置的 IBM MQ QUEUE。 当应用程序尝试连接到 MQ 服务器时,出现以下错误:

INFO - Could not refresh JMS Connection for destination 'TI.UNIT1.TRAN.IN' - retrying in 5000 ms. Cause: JMSWMQ2013: L'authentification de la sécurité fournie pour le gestionnaire de files d'attente 'QM_TEST' à l'aide du mode de connexion 'Client' et du nom d'hôte 'localhost' n'était pas valide.; nested exception is com.ibm.mq.MQException: JMSCMQ0001: L'appel WebSphere MQ a échoué avec le code achèvement '2' ('MQCC_FAILED') ; motif '2035' ('MQRC_NOT_AUTHORIZED').
com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: L'authentification de la sécurité fournie pour le gestionnaire de files d'attente 'QM_TEST' à l'aide du mode de connexion 'Client' et du nom d'hôte 'localhost' n'était pas valide. Vérifiez si le nom dutilisateur et le mot de passe fournis sont corrects dans le gestionnaire de files dattente auquel vous vous connectez
    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:219)
    at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:410)
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:7855)
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7441)
    at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:276)
    at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6055)
    at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:115)
    at org.springframework.jms.listener.DefaultMessageListenerContainer102.createConnection(DefaultMessageListenerContainer102.java:71)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:378)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.refreshSharedConnection(AbstractJmsListeningContainer.java:363)
    at org.springframework.jms.listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful(DefaultMessageListenerContainer.java:785)
    at org.springframework.jms.listener.DefaultMessageListenerContainer.recoverAfterListenerSetupFailure(DefaultMessageListenerContainer.java:767)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:898)
    at java.lang.Thread.run(Thread.java:744)
Caused by: com.ibm.mq.MQException: JMSCMQ0001: L'appel WebSphere MQ a échoué avec le code achèvement '2' ('MQCC_FAILED') ; motif '2035' ('MQRC_NOT_AUTHORIZED').
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:206)

IBM MQ 服务器(Windows 64 位)版本 = 8.0.0.4

Spring JMS 应用程序(罐子)版本 = 7.0

日志文件(AMQERR01.LOG)内容:

----- cmqxrsrv.c : 2321 -------------------------------------------------------
17/02/2017 01:40:20 - Process(6472.10) User(John) Program(amqzlaa0.exe)
                      Host(MyMachine) Installation(Installation1)
                      VRMF(8.0.0.4) QMgr(QM_TEST)

AMQ5540: L'application 'WebSphere MQ Client for Java' n'a pas fourni d'ID
utilisateur et de mot de passe

EXPLICATION :
Le gestionnaire de files d'attente est configuré pour nécessiter un ID
utilisateur et un mot de passe, mais ni l'un ni l'autre n'a été fourni.
ACTION :
Assurez-vous que l'application fournit un ID utilisateur et un mot de passe
valides ou spécifiez FACULTATIF pour la configuration du gestionnaire de files
d'attente afin de permettre aux applications n'ayant pas fourni d'ID
utilisateur et de mot de passe de se connecter. 
----- amqzfuca.c : 4287 -------------------------------------------------------
17/02/2017 01:40:20 - Process(6472.10) User(John) Program(amqzlaa0.exe)
                      Host(MyMachine) Installation(Installation1)
                      VRMF(8.0.0.4) QMgr(QM_TEST)

AMQ5541: L'échec de la vérification de l'authentification a été provoqué par la
configuration CONNAUTH CHCKCLNT(REQDADM) du gestionnaire de files d'attente.

EXPLICATION :
L'ID utilisateur 'john' et son mot de passe ont été vérifiés car l'ID
utilisateur est privilégié et la configuration de l'autorité de connexion du
gestionnaire de files d'attente (CONNAUTH) fait référence à un objet
d'informations d'authentification (AUTHINFO) nommé
'SYSTEM.DEFAULT.AUTHINFO.IDPWOS' avec CHCKCLNT(REQDADM). 

Ce message accompagne une erreur précédente pour expliquer la raison de la
vérification de l'ID utilisateur et du mot de passe.
ACTION :
Pour plus d'informations, reportez-vous à l'erreur précédente. 

Vérifiez que l'application client spécifie un mot de passe et que le mot de
passe est correct pour l'ID utilisateur. La configuration de l'authentification
de la connexion du gestionnaire de files d'attente détermine le référentiel
d'ID utilisateur. Par exemple, la base de données utilisateur du système
d'exploitation local ou un serveur LDAP. 

Pour éviter la vérification de l'authentification, vous pouvez utiliser un ID
utilisateur non privilégié ou changer la configuration d'authentification du
gestionnaire de files d'attente. Vous pouvez modifier l'attribut CHCKCLNT dans
l'enregistrement CHLAUTH, mais vous devez éviter d'autoriser l'accès distant
non authentifié. 
-------------------------------------------------------------------------------
17/02/2017 01:40:21 - Process(11528.7) User(John) Program(amqrmppa.exe)
                      Host(MyMachine) Installation(Installation1)
                      VRMF(8.0.0.4) QMgr(QM_TEST)

AMQ9557: Echec de l'initialisation de l'ID utilisateur du gestionnaire de files
d'attente pour 'John'.

EXPLICATION :
L'appel d'initialisation de l'ID utilisateur 'John' a échoué avec le code
achèvement 2 et le code anomalie 2035.
ACTION :
Corrigez l'erreur et relancez l'opération. 
----- cmqxrsrv.c : 2321 -------------------------------------------------------
17/02/2017 01:40:21 - Process(11528.7) User(John) Program(amqrmppa.exe)
                      Host(MyMachine) Installation(Installation1)
                      VRMF(8.0.0.4) QMgr(QM_TEST)

AMQ9206: Erreur lors de l'envoi de données à l'hôte MyMachine (127.0.0.1).

EXPLICATION :
Une erreur s'est produite lors de l'envoi de données à 'MyMachine (127.0.0.1)'
via TCP/IP. Un incident de communications en est peut-être la cause.
ACTION :
Le code retour provenant de l'appel TCP/IP(send) était 10054 X('2746'). Notez
ces valeurs et informez-en votre administrateur système. 
----- amqccita.c : 3169 -------------------------------------------------------
17/02/2017 01:40:21 - Process(11528.7) User(John) Program(amqrmppa.exe)
                      Host(MyMachine) Installation(Installation1)
                      VRMF(8.0.0.4) QMgr(QM_TEST)

AMQ9999: Le canal 'SYSTEM.ADMIN.SVRCONN' vers l'hôte '127.0.0.1' s'est terminé
anormalement.

EXPLICATION :
Le programme du canl s'exécutant sous l'ID processus 11528(876) pour le canal
'SYSTEM.ADMIN.SVRCONN' a pris fin anormalement. Le canal est '127.0.0.1'. Dans
certains cas, son nom ne peut pas être déterminé et il est représenté par
'????'.
ACTION :
Examinez les messages d'erreur précédents du programme de canal dans les
journaux des erreurs afin de déterminer la cause de l'incident. Notez que ce
message peut être totalement exclus ou supprimé en réglant les attributs
"ExcludeMessage" ou "SuppressMessage" sous la strophe "QMErrorLog" dans le
fichier qm.ini. D'autres informations figurent dans le guide d'administration
du système. 
----- amqrmrsa.c : 930 --------------------------------------------------------

在 MQ v8.0 中,IBM 引入了 CONNAUTH,它默认指向 AUTHINFO object SYSTEM.DEFAULT.AUTHINFO.IDPWOS。默认情况下,此 object 的 CHCKCLNT 属性设置为 REQDADMREQDADM 表示任何连接到具有 MQ 管理权限的 SVRCONN 通道的用户都必须提供有效密码。这将是一个用户,例如 mqm 组中的用户。

以下是您在 AMQERR01.LOG 中收到的英文错误:

AMQ5541: The failed authentication check was caused by the queue manager
CONNAUTH CHCKCLNT(REQDADM) configuration.
EXPLANATION: The user ID 'john' and its password were checked because the
user ID is privileged and the queue manager connection authority (CONNAUTH)
configuration refers to an authentication information (AUTHINFO) object
named 'SYSTEM.DEFAULT.AUTHINFO.IDPWOS' with CHCKCLNT(REQDADM). This message
accompanies a previous error to clarify the reason for the user ID and
password check.

使用您的 spring 配置,您应该能够将用户名和密码传递给 MQ 以进行身份​​验证。默认情况下 SYSTEM.DEFAULT.AUTHINFO.IDPWOS object 将设置为根据操作系统检查密码。

如果您的应用程序不需要 MQ 管理权限,建议使用不具有 MQ 管理权限的用户标识,并授予该用户访问 queue 管理器所需的特定 OAM 权限,并且需要 queues。

MQ v7.0 JMS jar 文件可以发送用户名和密码,但每个限制为 12 个字符,密码也在客户端和 queue 管理器之间通过网络以明文形式发送。如果关闭 MQ 兼容模式,MQ v8.0 及更高版本可以发送超过 12 个字符的用户名和密码,并且还可以利用密码保护功能,在通过网络发送密码时使用 3DES 对密码进行加密。另请注意,自 2015 年 9 月 30 日起,IBM 不再支持 MQ v7.0。

@MoragHughson 写了一篇不错的 IBM developerWorks MQdev 博客,标题为“ 在不关闭 MQ Security 的情况下开始”,它解释了如何保持启用此安全性,这将是一个很好的起点。如果您对 CONNAUTH、OAM 或 [=42= 有任何进一步的具体问题,我建议您] 配置以发送您 post 其他具体问题的用户名和密码,并用 [] along with any other tags that are appropriate like [] 等标记它们