【发布时间】:2013-09-28 05:47:15
【问题描述】:
我正在尝试从 WebSphere App Server 7 创建 JMS 连接,但不断收到 JMSWMQ2013(MQ 原因代码为 2035)。显然这是一个身份验证问题,我可以see many other similar reports 所以我对一般问题有一个粗略的了解。
我正在等待我们的运营团队就频道的确切配置提供反馈,但与此同时,我有一个非常令人费解的观察结果。如果我使用 WebSphere 的 JAAS 身份验证来提供用户 ID,那么我总是会收到 JMSWMQ2013 错误。 ,但是,如果将 same 用户标识显式传递给 JMS 队列连接工厂对 createQueueConnection() 的调用,则不会出现身份验证错误。
老实说,我本来希望这两种技术都能保持一致。使用 JAAS 为 JMS 队列连接工厂提供凭据时,我是否遗漏了一些微妙之处?
编辑:我使用*=info: JMSApi=all: JMSServer=all: Messaging=all: JMS_WASTraceAdapter=all: com.ibm.mq.*=all: jmsApi=all在WAS中开启JMS追踪,并逐行比较输出。
当使用 JAAS 时,我可以看到在 JmsXAQueueConnectionImpl 的内部深处,它实际上是在调用 WMQConnection.getProcessUserId(),它返回了我的 WAS 实例正在运行的用户 ID(这绝对是 不是在频道的MCAUSER 中定义的用户)。
这一切都很奇怪......它似乎根本没有选择 JAAS 身份验证条目。我的 QCF 肯定是使用带有 DefaultPrincipalMapping 映射配置别名的 CLIENT 传输,但由于某种原因,它仍然使用进程的用户 ID 而不是 JAAS 用户 ID。
谢谢。 克雷格
【问题讨论】: