连接到Websphere MQ 7.1时出现MQRC_NOT_AUTHORIZED错误

MqD*_*bug 5 userid ibm-mq

我对IBM Websphere Mq"非常"不熟悉,我会尝试尽可能多地提供详细信息.

我在Vmware Workstation上运行的Windows Server 2003上安装了Websphere MQ 7.1.主机使用Websphere MQ Client和我的ASP.NET应用程序运行Windows 7.(我的应用程序应该通过SVRCONN通道连接到Windows server 2003 Websphere的队列管理器,安装在主机上的Websphere客户端仅用于测试目的,将WMQ Client连接到WMQ Server会导致AMQ4036访问未授权错误,从而导致结论服务器配置需要!)

两个系统都可以相互ping通,并且位于同一本地网络上.(我是否也提到端口1415已打开且TCP侦听器正在服务器虚拟机上运行?)

ASP.NET代码段:

queueManager = new MQQueueManager(queueManagerName, queueProperties);
Run Code Online (Sandbox Code Playgroud)



queueManagerName与服务器的队列管理器和queueProperties匹配如下:

queueProperties[MQC.HOST_NAME_PROPERTY] = "192.168.203.128";

queueProperties[MQC.PORT_PROPERTY] = 1415;

queueProperties[MQC.CHANNEL_PROPERTY] = "QM_TEST.SVRCONN";

queueProperties[MQC.USER_ID_PROPERTY] = "";

queueProperties[MQC.PASSWORD_PROPERTY] = "";
Run Code Online (Sandbox Code Playgroud)



在编译时,我得到MQRC_NOT_AUTHORIZED异常,并在服务器端的AMQERR01.log中记录以下日志(注意:IBM WMQ是用法语安装的,日志是用法语生成的,但我想你会设法理解错误.)

3/04/2013 21:32:25 - Process(1120.3) User(MUSR_MQADMIN) Program(amqzmur0.exe)
                      Host(HATRIXX-82HDFHA) Installation(Installation1)
                      VRMF(7.1.0.2) QMgr(QM_TEST)

AMQ6287: WebSphere MQ VC:\Program Files\IBM\WebSphere MQ (Installation1).

EXPLICATION :
Informations système WebSphere MQ : 
Produit           :- Windows Server 2003, Build 3790: SP1 (MQ Windows 32-bit) 
Version           :- C:\Program Files\IBM\WebSphere MQ (Installation1) 
Informations hôte :- 7.1.0.2 (p710-002-121029)
ACTION :
Aucun(e). 
-------------------------------------------------------------------------------
13/04/2013 21:32:25 - Process(2128.11) User(MUSR_MQADMIN) Program(amqzlaa0.exe)
                      Host(HATRIXX-82HDFHA) Installation(Installation1)
                      VRMF(7.1.0.2) QMgr(QM_TEST)

AMQ8075: L'autorisation a échoué car il est impossible d'obtenir le SID de
l'entité 'hatrix'.

EXPLICATION :
Le gestionnaire des droits d'accès aux objets n'a pas pu obtenir le SID de
l'entité spécifiée. Cet incident peut être dû à l'absence de la machine locale
du domaine (l'entité ne peut donc pas être localisée) ou à l'inexistence de
l'entité.
ACTION :
Vérifiez que l'entité est valide et que tous les contrôleurs de domaine requis
sont disponibles. Il peut être nécessaire de créer l'entité sur la machine
locale. 
----- amqzfubn.c : 2227 -------------------------------------------------------
13/04/2013 21:32:25 - Process(2524.7) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                      Host(HATRIXX-82HDFHA) Installation(Installation1)
                      VRMF(7.1.0.2) QMgr(QM_TEST)

AMQ9245: Impossible d'extraire des détails de compte pour l'ID utilisateur de
canal MCA.

EXPLICATION :
WebSphere MQ n'a pas pu extraire des détails de compte pour l'ID utilisateur de
canal MCA Hatrix. Il s'agit de l'ID utilisateur MCA pour le canal
QM_TEST.SVRCONN sur le gestionnaire de files d'attente QM_TEST. Il peut avoir
été défini dans la définition de canal ou fourni par un exit de canal ou un
client.
ACTION :
Vérifiez que l'ID utilisateur est correct et qu'il est défini dans le système
local Windows, le domaine local ou un domaine de confiance. Dans le cas d'un ID
utilisateur de domaine, assurez-vous que que tous les contrôleurs de domaines
nécessaires sont disponibles. 
----- cmqxrsrv.c : 1778 -------------------------------------------------------
13/04/2013 21:32:25 - Process(2128.11) User(MUSR_MQADMIN) Program(amqzlaa0.exe)
                      Host(HATRIXX-82HDFHA) Installation(Installation1)
                      VRMF(7.1.0.2) QMgr(QM_TEST)

AMQ8073: Echec de l'autorisation. Le SID ((None)) n'a pas pu être corrélé.

EXPLICATION :
Le gestionnaire de droits d'accès aux objets n'a pas pu faire correspondre le
SID spécifié à des informations connues d'entité et de domaine.
ACTION :
Assurez-vous que l'application fournit un SID reconnu sur ce système, que tous
les contrôleurs de domaines nécessaires sont disponibles et que les règles de
sécurité sont correctement définies. 
----- amqzfubn.c : 4351 -------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)



DISPLAY CHLAUTH(QM_TEST.SVRCONN)命令返回:

   CHLAUTH(QM_TEST.SVRCONN)                TYPE(USERMAP)
   DESCR( )                                CUSTOM( )
   ADDRESS(*)                              CLNTUSER(HATRIX)
   MCAUSER( )                              USERSRC(CHANNEL)
   WARN(NO)                                ALTDATE(2013-04-13)
   ALTTIME(13.53.03)
AMQ8878: Affichage des détails relatifs à l'enregistrement d'authentification de
 canal.
   CHLAUTH(QM_TEST.SVRCONN)                TYPE(USERMAP)
   DESCR( )                                CUSTOM( )
   ADDRESS(*)                              CLNTUSER(MQM)
   MCAUSER( )                              USERSRC(CHANNEL)
   WARN(NO)                                ALTDATE(2013-04-13)
   ALTTIME(13.57.59)
AMQ8878: Affichage des détails relatifs à l'enregistrement d'authentification de
 canal.
   CHLAUTH(QM_TEST.SVRCONN)                TYPE(ADDRESSMAP)
   DESCR( )                                CUSTOM( )
   ADDRESS(*)                              MCAUSER(ADMINISTRATEUR)
   USERSRC(MAP)                            WARN(NO)
   ALTDATE(2013-04-13)                     ALTTIME(01.53.52)
Run Code Online (Sandbox Code Playgroud)

(请注意,我添加了几个规则,并且USERID Hatrix不存在,我已将其包含在SET CHLAUTH命令中以进行测试)



我认为它与MCAuser有关,所以我尝试将MCAuser设置为"Administrateur"(这是WMQ上的管理员名称)并连接到:

queueProperties[MQC.USER_ID_PROPERTY] = "Administrateur";
Run Code Online (Sandbox Code Playgroud)



仍然给我相同的错误,但具有不同的服务器端日志输出:

13/04/2013 21:41:18 - Process(1120.3) User(MUSR_MQADMIN) Program(amqzmur0.exe)
                      Host(HATRIXX-82HDFHA) Installation(Installation1)
                      VRMF(7.1.0.2) QMgr(QM_TEST)

AMQ6287: WebSphere MQ VC:\Program Files\IBM\WebSphere MQ (Installation1).

EXPLICATION :
Informations système WebSphere MQ : 
Produit           :- Windows Server 2003, Build 3790: SP1 (MQ Windows 32-bit) 
Version           :- C:\Program Files\IBM\WebSphere MQ (Installation1) 
Informations hôte :- 7.1.0.2 (p710-002-121029)
ACTION :
Aucun(e). 
-------------------------------------------------------------------------------
13/04/2013 21:41:18 - Process(2524.8) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                      Host(HATRIXX-82HDFHA) Installation(Installation1)
                      VRMF(7.1.0.2) QMgr(QM_TEST)

AMQ9776: La canal a été bloqué par l'ID utilisateur.

EXPLICATION :
Le canal entrant 'QM_TEST.SVRCONN' a été bloqué à partir de l'adresse
'192.168.203.1' parce que les valeurs actives du canal étaient mappées sur un
ID utilisateur qui devrai t être bloqué. Les valeurs actives du canal étaient
**'MCAUSER(Administrateur) CLNTUSER(Hatrix)'.**
ACTION :
Prenez contact avec l'administrateur système qui examinera les enregistrements
d'authentification de canal pour s'assurer que les paramètres corrects ont été
configurés. Le commutateur ALTER QMGR CHLAUTH permet de contrôler si les
enregistrements d'authentification de canal sont utilisés. La commande DISPLAY
CHLAUTH peut être utilisée pour interroger les enregistrements
d'authentification de canal. 
----- cmqxrmsa.c : 1004 -------------------------------------------------------
13/04/2013 21:41:18 - Process(2524.8) User(MUSR_MQADMIN) Program(amqrmppa.exe)
                      Host(HATRIXX-82HDFHA) Installation(Installation1)
                      VRMF(7.1.0.2) QMgr(QM_TEST)

AMQ9999: Le canal 'QM_TEST.SVRCONN' vers l'hôte 'FAIROUZ (192.168.203.1)' s'est
terminé anormalement.

EXPLICATION :
Le programme du canl s'exécutant sous l'ID processus 2524(488) pour le canal
'QM_TEST.SVRCONN' a pris fin anormalement. Le canal est 'FAIROUZ
(192.168.203.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 : 925 --------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)



我无法理解的是,在ASP.NET的queuemanager属性中使用USERID和PASSWORD是什么,其中WMQ中标识的USERID是" Hatrix "(这是Windows 7帐户的名称).

我是否必须在WMQ中创建一个新的USERID" Hatrix "才能使我的代码有效?(我无法弄清楚如何)
提前致谢,

MqDebug.

T.R*_*Rob 6

第一个问题是QMgr 必须能够解析传递给它的ID.这意味着ID既可以在本地定义,也可以在QMgr可以访问的域中定义.通常,在组上授予权限,如果是,则它也必须由接收QMgr解析.

现在问题是QMgr究竟解决了什么问题?当您从Windows计算机连接到Windows计算机上的QMgr时,通道传递的ID是Windows SID,它是通用唯一标识符(UUID)而不是文本字符串.同样,该组解析为Windows SID.

因此,例如,您可能在两个Windows机器上本地定义了名为ADMINISTRATEUR的ID,但它仍然失败.这些错误会说,提出的ID是ADMINISTRATEUR与该ID没有被授权,你可以在清楚地看到dspmqaut该命令ADMINISTRATEUR 授权.除了正在发生的事情之外,ADMINISTRATEUR在一台主机上有其唯一的UUID,而另一台主机上的同名帐户具有不同的UUID,Windows正在查看UUID而不是文本字符串.

如果在多个位置定义了相同的ID,则QMgr必须能够区分它们.当它不能,奇怪和不寻常的事情发生.

例如,假设您使用MCAUSER('hatrix')然后运行定义通道setmqaut -p hatrix.让我们进一步规定hatrixID不是在本地定义的,而是在两者中定义的DOMAINA,DOMAINB并且当命令运行时,DOMAINA域服务器首先在搜索路径中.

setmqaut命令将名称解析为hatrix在其中定义的UUID DOMAINA.

之后由于网络中的正常活动,DOMAINB上升到域搜索路径中的第一个位置.现在,当MCAUSER('hatrix')尝试连接时,字符串hatrix解析DOMAINB其中的UUID与命令解析的UUID 不同setmqaut.正常连接的通道突然发出2035错误.

此问题的答案是使用所需的域限定setmqaut命令和MCAUSER值.例如,setmqaut -p hatrix@DOMAINA然后MCAUSER('hatrix@DOMAINA')将无论工作DOMAINA还是DOMAINB首先在搜索路径,或者即使hatrix是WMQ主机服务器上本地定义.(假设当然hatrix确实已经定义了DOMAINA.

通常,您通常不希望在setmqaut命令上使用-p选项.唯一的例外是Windows主机,然后仅在使用域或服务器名称限定ID时,如上所示.

最后,保留通道的MCAUSER空白是允许您的Windows ID流向MCA并用于授权检查的原因.您需要意识到的是,没有进行身份验证.是的,Windows客户端确实会发送其Windows SID.但是,如果在Windows机器上运行Linux VM并与之连接,则无法传递SID,因此Windows QMgr会回退到解析ID的字符串值.这意味着只要通过从非Windows客户端声明所需的ID,任何人都可以作为任何ID连接到该通道.

因此,强烈验证与证书的管理连接.对于低权限连接,使用CHLAUTH规则或退出来设置MCAUSER而不是让它流过,然后使用setmqaut以确保MCAUSER不是管理.这意味着永远不要+set在QMgr和+crt队列上授予非管理员,并+setid, +setall尽可能避免.

有关WMQ Security的更多内容,请访问t-rob.net.