Unix 上的 WebSphere MQ 安全身份验证异常
我们的应用程序在 Sun Solaris 系统上运行,并且有本地 WebSphere MQ 安装。该应用程序使用绑定模式连接到队列管理器。当尝试将消息发送到本地队列时,JNDI 绑定成功,但遇到 javax.jms.JMSSecurityException: MQJMS2013: invalid security authenticationprovided for MQQueueManager
错误。调查发现,用于身份验证的凭据(用户 ID)与运行应用程序的用户不区分大小写。用户 ID 匹配,但不区分大小写。默认情况下,运行应用程序的用户将通过身份验证,但这里区分大小写的匹配失败。应用服务器是WebLogic。感谢任何投入。
We have our application running on a Sun Solaris system and have a local WebSphere MQ installation. The applcation uses bindings mode to connect to queue manager. When trying to send message to the local queue, the JNDI binding is successfull but we encounter javax.jms.JMSSecurityException: MQJMS2013: invalid security authentication supplied for MQQueueManager
error. When investigated found that the credentials (userid) used for authentication is not case sensitive as the user on which the application is running. The userid matches but it is not a case sensitive match. By default the user on which the application is running will be passed for authentication, but here the case sensitive match is failing. The application server is WebLogic. Appreciate any inputs.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为了打开本地队列,应用程序必须首先成功连接到队列管理器。远程队列上的错误是连接错误,因此它甚至无法到达队列管理器。这表明您正在使用不同的连接工厂,并且第二个连接工厂的连接参数存在一些差异。第一步是调和这些差异。
此外,MQJMS2013 安全错误可能有多种原因,其中大多数实际上并不是 MQ 问题。例如,有些人将他们的托管对象存储在 LDAP 中,并且那里的身份验证问题会引发此错误。对于使用基于文件系统的 JNDI 的人来说,操作系统文件权限可能会导致同样的情况。但是,如果它是实际的 WMQ 问题(这似乎是),则链接的异常将包含 MQ 原因代码(例如,MQRC=2035)。如果您希望能够更好地诊断 MQ(或任何 JMS 传输)问题,那么养成打印链接异常的习惯是值得的。
如果您无法根据此输入解决此问题,我建议您使用托管对象定义的详细信息以及通过打印链接的异常获得的原因代码来更新问题。
In order to open the local queue, the application must have first connected to the queue manager successfully. The error on the remote queue is a connection error so it is not even getting to the queue manager. This suggests that you are using different connection factories and that the second one has some differences in the connectivity parameters. First step is to reconcile those differences.
Also, a MQJMS2013 Security Error can be many things, most of which are not actually MQ issues. For example some people store their managed objects in LDAP and an authentication problem there will throw this error. For people who use a filesystem-based JNDI, OS file permissions can cause the same thing. However if it is an actual WMQ issue (which this appears to be) then the linked exception will contain the MQ Reason Code (for example, MQRC=2035). If you want to be able to better diagnose MQ (or for that matter any JMS transport) issues, it pays to get in the habit of printing linked exceptions.
If you are not able to resolve this issue based on this input, I would advise updating the question with details of the managed object definitions and the reason code obtained from printing the linked exceptions.
我们在 QueueConnectionFactory 中使用 createQueueConnection() 来创建连接,并通过使用方法 createQueueConnection("","") 解决了问题。 unix 用户 ID (webA) 区分大小写,应用程序尝试使用不区分大小写的用户 ID (weba) 在 MQ 上进行身份验证,而 MQ 队列管理器拒绝连接尝试。您能否告诉我们为什么应用程序之前发送不区分大小写的用户 ID (weba)?
谢谢,
阿伦
We were using createQueueConnection() in QueueConnectionFactory for creating the connection and the issue got resolved by using the method createQueueConnection("",""). The unix userid (webA) is case sensitive and the application was trying to authenticate on the MQ with the case insensitive userid (weba) and MQ queue manager was rejecting the connection attempt. Can you tell us why the application was sending the case insensitive userid (weba) earlier?
Thanks,
Arun