【问题标题】:IBM Websphere MQ authentication error while accessing channel访问通道时出现 IBM Websphere MQ 身份验证错误
【发布时间】:2020-06-30 15:20:28
【问题描述】:

我在 Unix 系统中使用 IBM Websphere MQ 7.5。我已经在我的机器上安装了客户端,并且服务器正在其他机器上运行。我正在观察一个场景,当我通过 'mqm' 用户运行我的 JMS 应用程序时,我能够与服务器通信,但在使用其他用户时遇到下面提到的错误。

但我可以运行“amqsputc”和“amqsgetc”命令,并通过 mqm 以及其他用户与服务器进行通信。我已按照http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ins.doc/q009300_.htm?lang=en 中提到的所有步骤进行操作

例外:

com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'TestManager' with connection mode 'Client' and host name 'x.x.x.x(9923)'.
Please check if the supplied username and password are correct on the QueueManager to which you are connecting.
    at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:521)
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:221)
    at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:426)
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:6902)
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:6277)
    at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:285)
    at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6233)
    at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:120)
    at com.ibm.mq.jms.MQQueueConnectionFactory.createConnection(MQQueueConnectionFactory.java:203)
    at performance.IBMMQTestProducer.start(IBMMQTestProducer.java:142)
    at performance.IBMMQTestProducer.main(IBMMQTestProducer.java:177)   

Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').**
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:209)
    ... 9 more
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2035;AMQ9509: Program cannot open queue manager object. [1=2035,5=???]**
    at com.ibm.mq.jmqi.internal.JmqiTools.getQueueManagerInfo(JmqiTools.java:783)
    at com.ibm.mq.jmqi.remote.impl.RemoteSession.loadInfo(RemoteSession.java:1993)
    at com.ibm.mq.jmqi.remote.impl.RemoteSession.getName(RemoteSession.java:2026)
    at com.ibm.mq.jmqi.remote.api.RemoteHconn.getName(RemoteHconn.java:728)
    at com.ibm.mq.ese.intercept.JmqiConnInterceptorImpl.validate(JmqiConnInterceptorImpl.java:321)
    at com.ibm.mq.ese.intercept.JmqiConnInterceptorImpl.afterConnect(JmqiConnInterceptorImpl.java:226)
    at com.ibm.mq.ese.intercept.JmqiConnInterceptorImpl.afterJmqiConnect(JmqiConnInterceptorImpl.java:133)
    at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect(InterceptedJmqiImpl.java:315)
    at com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect(ESEJMQI.java:337)

当我以自己的身份运行并在启动连接时传递“mqm”时,我能够运行它。

connection = cf.createConnection("mqm", "pswd");

我在经理的日志中没有得到任何信息。以下是日志。

------------------------------------------------------------------------------
10/30/2015 06:50:54 AM - Process(31064.1) User(mqm) Program(strmqm)
                    Host(x.x.x.x) Installation(Installation1)
                    VRMF(7.5.0.2)
AMQ7125: There are 83 days left in the trial period for this copy of WebSphere
MQ.

EXPLANATION:
This copy of WebSphere MQ is licensed for a limited period only.
ACTION:
None.

【问题讨论】:

  • JMS 应用程序是否使用与 amqsputc/amqsget 相同的 SVRCONN 通道连接到队列管理器?您是否启用了频道身份验证并定义了频道身份验证记录? /var/mqm/qmgrs/TestManager/errors 中的 AMQERR0x.log 文件应该为您提供更具体的错误原因,说明 MQ 认为您以哪个用户 ID 连接。
  • 我没有使用系统特定的频道。我在服务器端创建了一个通道,并在客户端使用了相同的通道。 (在 JMS 应用程序以及 amqsget 和 amqsput 中)。我实际上禁用了频道身份验证:CHLAUTH(DISABLED)。我需要启用它们吗?我认为它会删除所有身份验证并允许任何人连接。
  • Yes CHLAUTH(DISABLED) 将关闭频道身份验证,这表明 2035 不是由频道身份验证规则引起的。您是将用户名和密码传递给 JMS createConnection(userName, password) 方法,还是使用不带参数的 createConnection() 版本?目前尚不清楚为什么以 mqm 身份运行 JMS 应用程序有效而以另一个用户身份运行它却不能,但有很多因素会影响 MQ JMS 客户端传递的用户名。你读过www-01.ibm.com/support/docview.wss?uid=swg21636093 吗?
  • 请使用队列管理器 AMQERR01.LOG 中显示的错误更新您的问题。然后我们将能够看到导致 2035 年的确切问题。

标签: jms ibm-mq


【解决方案1】:

鉴于您已告诉我们您已成功连接并运行 amqsgetcamqsputc 客户端示例,使用与您尝试用于 JMS 程序的相同服务器连接通道,这表明这不是连接时间问题,换句话说,队列管理器的MQCONN 已经成功,而随后的一些事情却失败了。我们知道您可以MQPUTMQGET(因为上述示例就是这样做的)。

JMS 做而那些简单的样本没有做的事情是队列管理器的MQINQ。您的异常的以下部分让我想知道这是否是您绊倒的原因:-

Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2035;
AMQ9509: Program cannot open queue manager object. [1=2035,5=???] at 
com.ibm.mq.jmqi.internal.JmqiTools.getQueueManagerInfo(JmqiTools.java:783) at 

为了完全确定,您必须检查队列管理器AMQERR01.LOG 以查看那里报告的内容。如果它缺少授权,那么它会在那里告诉你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多