gpt4 book ai didi

java - 使用 JMS 使用用户名但不使用密码访问 IBM MQ 8

转载 作者:行者123 更新时间:2023-12-02 20:08:09 28 4
gpt4 key购买 nike

我尝试使用 IBM JMS 示例代码连接到新的 MQ 设置进行测试:

https://developer.ibm.com/messaging/learn-mq/mq-tutorials/develop-mq-jms/

private static final String HOST = "MYIP"; // Host name or IP address
private static final int PORT = MYPORT; // Listener port for your queue manager
private static final String CHANNEL = "MY.APP.SVRCONN"; // Channel name
private static final String QMGR = "MYQMGR"; // Queue manager name
private static final String APP_USER = "MYUSER"; // User name that application uses to connect to MQ
private static final String APP_PASSWORD = ""; // Password that the application uses to connect to MQ
private static final String QUEUE_NAME = "MYQUEUE"; // Queue that the application uses to put and get messages to an

// Set the properties
cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, HOST);
cf.setIntProperty(WMQConstants.WMQ_PORT, PORT);
cf.setStringProperty(WMQConstants.WMQ_CHANNEL, CHANNEL);
cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, QMGR);
cf.setStringProperty(WMQConstants.WMQ_APPLICATIONNAME, "JmsPutGet (JMS)");
cf.setBooleanProperty(WMQConstants.USER_AUTHENTICATION_MQCSP, true);
cf.setStringProperty(WMQConstants.USERID, APP_USER);
cf.setStringProperty(WMQConstants.PASSWORD, APP_PASSWORD);

假设提供和使用的所有参数都是正确的(HOST、PORT、CHANNEL、QMGR、QUEUE_NAME),因为我可以连接到管理器并使用 MQ Explorer 以只读用户查看队列,并且在修改参数,没有这样的 QMGR 运行,只是为了确保问题与 USERID 和 PASSWORD 有关。我的示例与另一个队列配合得很好,我必须在其中使用 UserID + 密码身份验证。

现在,设置团队为我提供了一个技术用户用户 ID,但没有密码,因为不需要密码。

Exception in thread "main" com.ibm.msg.client.jms.DetailedJMSSecurityRuntimeException: JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'MYQUEUEMANAGER' with connection mode 'Client' and host name 'MYIP(MYPORT)'.
Please check if the supplied username and password are correct on the QueueManager to which you are connecting.
at com.ibm.msg.client.jms.DetailedJMSSecurityException.getUnchecked(DetailedJMSSecurityException.java:270)
at com.ibm.msg.client.jms.internal.JmsErrorUtils.convertJMSException(JmsErrorUtils.java:173)
at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createContext(JmsConnectionFactoryImpl.java:478)
at com.ibm.mq.samples.jms.JmsTestClient.main(JmsTestClient.java:78)
Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').

有人可以指导我正确的配置或设置哪个参数来通过 JMS 与无密码用户连接吗?

update#1:我尝试将密码设置为空或不设置字符串属性 WMQConstants.PASSWORD。

最佳答案

在您的代码中,您已将属性 WMQConstants.USER_AUTHENTICATION_MQCSP 设置为 true。这告诉您的 Java 客户端您想要使用 v8 中添加的连接身份验证功能来提供用户 ID 和密码进行身份验证。

如果您想使用旧机制仅提供用户 ID,则需要将其设置为 false。例如:

cf.setBooleanProperty(WMQConstants.USER_AUTHENTICATION_MQCSP, false);

这称为兼容模式,适用于尝试连接到 IBM MQ(例如 MQ Explorer)的 Java 应用程序

引用:https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.sec.doc/q118680_.htm

关于java - 使用 JMS 使用用户名但不使用密码访问 IBM MQ 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54199479/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com