IBMMQ 上的身份验证出现奇怪问题,它采用 运行 用户 ID

Strange problem with authentication on IBMMQ, it takes the running user ID

当我在队列中执行消息推送时遇到了一个奇怪的问题。我已将我的应用程序配置为从 app.config 读取 userid/password。当消息被放入队列时,我得到了拥有 运行 应用程序的用户的用户名,它是 .config 文件之一。

我用来创建 MQQueueManager 的代码是

  private static readonly Lazy<MQQueueManager> lazy =
        new Lazy<MQQueueManager>(() =>
        {
            var properties = new Hashtable();

            var container = ContainerWrapper.Container;

            IConfiguration configuration = container.GetInstance<IConfiguration>();

            properties.Add(MQC.HOST_NAME_PROPERTY, configuration.GetValue<string>("HOST_NAME_PROPERTY"));
            properties.Add(MQC.PORT_PROPERTY, configuration.GetValue<int>("PORT_PROPERTY"));
            properties.Add(MQC.USER_ID_PROPERTY, configuration.GetValue<string>("USER_ID_PROPERTY"));
            properties.Add(MQC.PASSWORD_PROPERTY, configuration.GetValue<string>("PASSWORD_PROPERTY"));
            properties.Add(MQC.CHANNEL_PROPERTY, configuration.GetValue<string>("CHANNEL_PROPERTY"));


            MQQueueManager queueManager = new MQQueueManager(configuration.GetValue<string>("QUEUE_MANAGER_NAME"), properties);


            return queueManager;
        });

我错过了什么吗? 提前致谢

为了连接到 运行 作为连接上提供的用户 ID 和密码,您必须配置队列管理器以检查用户 ID 和密码,还必须配置队列管理器以采用已验证的用户 ID。

DISPLAY QMGR CONNAUTH

CONNAUTH 字段中的值是 AUTHINFO 对象的名称。如果为空,则不启用用户 ID 和密码检查。将其设置为适当的对象名称。

ALTER QMGR CONNAUTH(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)

现在看看它的属性

DISPLAY AUTHINFO(name-from-connauth) ALL

如果 ADOPTCTK 设置为 NO,用户 ID 将不会被用作连接的用户 ID,因此不会出现在消息上下文中。

ALTER AUTHINFO(name-from-connauth) AUTHTYPE(IDPWOS) ADOPTCTX(YES)

如果您必须进行任何更改,您现在必须发出此命令。

REFRESH SECURITY TYPE(CONNAUTH)

您可能需要在属性中添加另一行。

试试(靠记忆,所以你需要找到正确的常量) USE_MQCSP_USERNAME_PASSWORD 这应该是一个布尔值,应该设置为 yes....

将其添加到您的属性中,然后使用这些属性创建队列管理器。