我需要编写一个.Net连接器到WebSphere MQ队列,所以我在我的Windows 7机器上安装了IBM WebSphere MQ的试用版。我最初在MQ Explorer中设置了一些虚拟队列来使用设置过程,我能够连接到这些队列管理器并创建队列。我删除了那些虚拟队列并遵循第一组指令from Lesson 1.1 from IBM here,我从命令行创建了一些队列
由于安全问题,我失败了to run Lesson 1.2,现在我无法连接到MQ Explorer中的任何队列管理器。当我尝试连接时,我收到错误消息
An unexpected error (2063) has occurred. (AMQ4999)
我还注意到,当我在MQ Explorer中创建队列管理器时,最后一部分失败了 AMQ8135:未经授权。(参见下面的输出)
有什么明显的东西让我失踪吗?
有什么方法可以解决我自己的问题 - 日志文件似乎没有让我知道在哪里看
****************************************
* Command: "C:\Program Files (x86)\IBM\WebSphere MQ\bin\crtmqm" -sa QM1
****************************************
There are 90 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager created.
Directory 'C:\Program Files (x86)\IBM\WebSphere MQ\qmgrs\QM1' created.
The queue manager is associated with installation 'Installation2'.
Creating or replacing default objects for queue manager 'QM1'.
Default objects statistics : 74 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.
exitvalue = 0
****************************************
* Command: "C:\Program Files (x86)\IBM\WebSphere MQ\bin\strmqm" QM1
****************************************
There are 90 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager 'QM1' starting.
The queue manager is associated with installation 'Installation2'.
5 log records accessed on queue manager 'QM1' during the log replay phase.
Log replay for queue manager 'QM1' complete.
Transaction manager state recovered for queue manager 'QM1'.
WebSphere MQ queue manager 'QM1' started using V7.1.0.0.
exitvalue = 0
****************************************
* Command: "C:\Program Files (x86)\IBM\WebSphere MQ\bin\runmqsc" QM1
* Input: DEFINE LISTENER('LISTENER.TCP') TRPTYPE(TCP) PORT(1414) CONTROL(QMGR)
****************************************
5724-H72 (C) Copyright IBM Corp. 1994, 2011. ALL RIGHTS RESERVED.
Starting MQSC for queue manager QM1.
AMQ8135: Not authorized.
No MQSC commands read.
No commands have a syntax error.
All valid MQSC commands were processed.
exitvalue = 20
答案 0 :(得分:15)
如果您有最近的WMQ试用版,那么您正在使用v7.1 QMgr。从v7.1开始,WMQ将仅允许非特权远程连接。为了与管理员帐户建立连接,有必要禁用限制,或者更好的是,为管理连接定义新通道并对其进行身份验证。
对于Windows,最大的问题是WMQ对域ID进行身份验证,并且必须查找其组。在企业环境中运行WMQ时,一个非常常见的问题是它尝试查找ID或组,并且没有域权限。 域帐户,即使是具有本地管理员权限的帐户,通常也会失败,因为他们无权访问域SAM中的查询以进行组查找。信息中心here中有一整节描述了Windows帐户的要求。
此仅针对开发环境的一种解决方法是创建本地管理员帐户,然后使用该帐户登录并创建QMgr。或者确保默认帐户MUSR_MQADMIN
具有本地管理员权限和登录权限。同样,您必须实际登录该帐户才能使其正常工作,因为这样就不需要在Active Directory中查找帐户,因为它都会访问本地SAM数据库。再次,这只是为了发展!在生产中,您需要使用真实域帐户并授予其正确的访问权限以进行SAM查找,但不要将其设置为本地管理员,如上面链接的信息中心部分所述。
假设您已成功创建QMgr,接下来创建一个新频道并授权它使用管理员帐户接受本地连接:
runmqsc
* Define the channel, anyone connecting runs as MUSR_MQADMIN
DEFINE CHL('DOTNET.SVRCONN') CHLTYPE(SVRCONN) MCAUSER('MUSR_MQADMIN@hostname')
* Override default block-list - channel now allows ANYBODY
SET CHLAUTH('DOTNET.SVRCONN') TYPE(BLOCKUSER) USERLIST('nobody')
* Block access from ALL IP addresses
SET CHLAUTH('DOTNET.SVRCONN') TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(NOACCESS) WARN(NO) ACTION(ADD)
* Allow access from local host only
SET CHLAUTH('DOTNET.SVRCONN') TYPE(ADDRESSMAP) ADDRESS('127.0.0.1') USERSRC(CHANNEL) ACTION(ADD)
END
现在您有一个仅接受本地连接的频道,将这些频道映射到管理帐户,然后覆盖阻止管理帐户远程连接的安全性。使用admin帐户意味着不需要队列或QMgr授权,并且该帐户是本地管理员意味着没有域查找问题。 MCAUSER('MUSR_MQADMIN)
将每个远程ID转换为本地管理员ID,以便WMQ不需要查找远程ID。映射规则仅限制与本地主机的连接。任何可以连接到该频道的人都可以使用本地管理员远程执行操作系统代码,因此如果您想接受来自其他用户的连接,建议使用证书对其进行身份验证。
答案 1 :(得分:4)
您可能想阅读T.Rob here的这篇文章。还有来自他的其他安全相关帖子,他们非常有帮助。
答案 2 :(得分:0)
我有类似的问题。我的办公室dektop运行windows xp 32位,我的项目要求我在本地安装Websphere MQ 7(WMQ)。 在我的PC上拥有本地管理员权限我能够在没有域控制器选项配置的情况下安装WMQ并添加quemanager但无法添加任何本地队列。 检查错误日志后,我发现我的用户ID没有足够的权限。
因此,修复方法是 - 验证您的登录ID是域名管理员组的一部分。 转到控制 - >用户帐户以检查您的用户ID。 如果您的PC上具有本地管理员权限,则可以将您的用户ID添加为管理员组的一部分。 现在删除先前创建的队列管理器。 重启WMQ&再次创建queuemanager。 您现在应该看到在新创建的队列管理器下添加本地队列,主题等的所有选项。
答案 3 :(得分:-1)
发生了意外错误(2063)。 (AMQ4999)
由于权限问题,也可能发生上述错误,请检查“组”权限并添加用户