我怀疑这个问题实际上可能与你所描述的相反。在WAS的旧版本中,如果User ID field of the Connection Factory panel保留空白,WAS将发送一个空白ID。 WebSphere MQ没有任何价值可传递给对象管理器管理器,因此通道将在消息通道代理程序的权限下运行 - 这始终是管理性的。因此,旧版WAS通常具有管理权限,尽管这并未被广泛认可。您可以通过查看正在运行的通道的状态来验证此情况,并查看MCAUSER字段是否为空。
如果配置面板为空白,WAS的较新版本现在尝试更难找到发送给WMQ的ID。由于这种新的安装和现有安装的升级常常无法使用之前工作的相同通道授权给WMQ。
所有这一切的有趣部分是,这是一个问题的唯一方法是,如果QMgr在MCAUSER通道属性上有空白值。如果QMgr有一个空白的MCAUSER,并且在CONNECT时没有出口正在设置MCAUSER,则该通道允许管理员访问。如果频道没有设置SSLPEER的SSL或用于验证连接的退出,那么该管理访问权限可供匿名用户使用。为什么这是一个问题?因为WebSphere MQ能够根据消息的到达发起操作系统命令。这意味着任何具有WMQ管理权限的用户都可以远程执行任意操作系统命令作为软件的一项功能。因此,如果要对通过网络传递的消息进行任何责任,则必须锁定此功能,即使是来自合法应用程序。
事实上,您的应用程序能够呈现成功的ID和另一个失败的ID似乎表明QMgr允许管理访问,并且我愿意为匿名连接这样做。 D'哦!更好地修复QMgr的安全性,而不是通过在WAS中设置“正确”ID来解决连接问题。欲了解更多信息,请参阅IMPACT会议的演示文稿。