【问题标题】:Send to MQ from java always uses default installed mqm userid for IBM MQ version 6.0从 java 发送到 MQ 始终使用 IBM MQ 6.0 版的默认安装 mqm 用户标识
【发布时间】:2011-04-16 11:01:30
【问题描述】:

我们的代码在 weblogic 和 MQ 6.0 中运行。无论我使用默认的createQueueConnection() 还是createQueueConnection("myuserid","mypassword"),它似乎总是使用用户标识mqm。请参阅下面的代码。

当我从版本 6.0 连接到较旧的 mq 安装 5 时,使用默认的 createQueueConnection() 似乎会抛出以下错误 javax.jms.JMSSecurityException: MQJMS2013: invalid security authentication supplied for MQQueueManager,除非我发送一个空白用户 ID/密码,如 createQueueConnection("","") 中那样

我怎样才能让 myuserid 被发送呢?

Hashtable properties = new Hashtable(2);
properties.put(Context.PROVIDER_URL,context);
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");

InitialContext ctx = new InitialContext(properties);
QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup("QCF");
QueueConnection qc = qcf.createQueueConnection();
javax.jms.Queue q = (javax.jms.Queue) ctx.lookup("MYQUEUE");
QueueSession qs = qc.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
TextMessage tm = qs.createTextMessage();
tm.setText(outString);
QueueSender sender = qs.createSender(q);
sender.send(tm);
sender.close();
qs.close();
qc.close();

【问题讨论】:

    标签: java jms weblogic ibm-mq


    【解决方案1】:

    如果您在 createQueueConnection 中设置 ID,请放心,它 会呈现给队列管理器。您看到的问题是 SVRCONN 通道定义QMgr 具有硬编码值 MCAUSER('mqm')。这会覆盖客户端应用程序提供的任何值。

    这里有几点需要注意。

    1. 虽然您可以发送 ID 和密码,但 WMQ 只接受这些。存在这些字段是为了使凭证可用于可以验证它们的通道出口。如果没有这样的退出,频道只会以应用声称的任何 ID 运行,而密码将被忽略。
    2. 出于上述原因,我总是告诉人们不要相信提供的凭据,除非他们有这样的出口。管理员必须将适当的值编码到 MCAUSER 中。
    3. 管理 ID(UNIX 风格的“mqm”)不是合适的值。它授予通过该频道连接的任何人的管理权限。

    有关此主题的更多信息以及 IMPACT 的 WMQ 安全演示和 WMQ 安全实验室指南的指针,请参阅this SO question

    【讨论】:

    • 感谢 T.Rob 的澄清。此外,我确实看到了将 MQ6 java jar 连接到 MQ5 安装的区别。它似乎不是 100% 兼容的,因为在这种情况下不会覆盖用户 ID。但是传递一个空白字符串作为用户标识/密码似乎可以工作,因为在这种情况下,QMgr 使用默认的 mqm 用户标识。
    • 我应该提到 WMQ 5.x 已经有一段时间不支持了,而 WMQ v6 在 2011 年 9 月也不再支持。如果可能的话,在两个客户端上都迁移到 v7和 QMgr。通常我会说你可以使用比 QMgr 更高版本的客户端,如果必须的话,先在那里升级 - 但是 v7 客户端没有使用 v5 QMgr AKAIK 测试,所以如果这将是一个生产系统,只需升级所有内容并且您希望能够针对它打开 IBM PMR。
    猜你喜欢
    • 1970-01-01
    • 2016-05-12
    • 2018-12-06
    • 2011-07-22
    • 2021-08-17
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    相关资源
    最近更新 更多