【问题标题】:MQRC_NOT_AUTHORIZED error while connecting to Websphere MQ 7.1连接到 Websphere MQ 7.1 时出现 MQRC_NOT_AUTHORIZED 错误
【发布时间】:2013-04-06 16:34:20
【问题描述】:

我是 IBM Websphere Mq 的“非常”新手,我会尽量提供详细信息。

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

两个系统可以互相ping通,并且在同一个本地网络上。 (我是不是也提到了1415端口被打开,并且服务器虚拟机上正在运行TCP监听器?)

ASP.NET 代码段:

queueManager = new MQQueueManager(queueManagerName, queueProperties);



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] = "";



编译时我收到 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 -------------------------------------------------------



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)

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



我认为这与 MCAuser 有关,因此我尝试将 MCAuser 设置为“Administrateur”(这是 WMQ 上的管理员名称)并连接到:

queueProperties[MQC.USER_ID_PROPERTY] = "Administrateur";



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

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 --------------------------------------------------------



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

我是否必须在 WMQ 中创建一个新的 USERID“Hatrix”才能使我的代码正常工作? (我不知道怎么做)
提前致谢,

MqDebug.

【问题讨论】:

    标签: ibm-mq userid


    【解决方案1】:

    使用 setmqaut 将权限分配给“Hatrix”用户 ID,但最好针对组而不是用户 ID 执行此操作。

    【讨论】:

      【解决方案2】:

      第一个问题是 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。让我们进一步规定hatrix ID 不是在本地定义的,而是在DOMAINADOMAINB 中定义的,并且当运行该命令时,DOMAINA 域服务器在搜索路径中是第一个。

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

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

      这个问题的答案是用所需的域来限定setmqaut 命令和MCAUSER 值。例如,setmqaut -p hatrix@DOMAINA 然后MCAUSER('hatrix@DOMAINA') 将起作用,无论DOMAINADOMAINB 是否在搜索路径中,或者即使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 不是管理的。这意味着永远不要将 QMgr 上的 +set 和队列上的 +crt 授予非管理员,并尽可能避免 +setid, +setall

      更多WMQ安全内容,请到t-rob.net

      【讨论】:

      • 感谢您的回复,我目前正在运行 2 台虚拟机(均在 Windows server 2003 R2 SP2 上运行 WMQ 7.1.0.2)我创建了一个新域“LABO.LOCAL”并登录两台机器具有相同的用户“Administrator@labo”。请注意,Administrator 是 MQM 组的成员,Administrator 具有“作为服务登录”的权限,IBM WebSphere MQ 服务登录设置为 LABO\Administrator。即使将 CHLAUTH 设置为 DISABLED,我仍然会收到 MQRC_NOT_AUTHORIZED 错误!有没有办法禁用授权控制? (当前的 WebSphere MQ 配置用于测试目的,我不需要保护它。
      【解决方案3】:

      正在修复...命令是

      setmquat -m qmgrname -t qmgr -p 用户名+allqmi

      哪里: qmgrname 是 qmgr 的名称 用户名是eclipse下正在运行的帐户名,该帐户不在禁止列表中。

      【讨论】:

        猜你喜欢
        • 2011-07-03
        • 2020-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-17
        相关资源
        最近更新 更多