【问题标题】:JMSWMQ2013 when connecting from WAS to MQ从 WAS 连接到 MQ 时的 JMSWMQ2013
【发布时间】: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。

谢谢。 克雷格

【问题讨论】:

    标签: jms websphere ibm-mq jaas


    【解决方案1】:

    以操作系统管理员身份运行 IBM WebSphere MQ Explorer。 在队列管理器属性中禁用通道的标识记录(菜单链接/连接或类似的东西)。

    【讨论】:

      【解决方案2】:

      2035 肯定是认证问题。尝试连接的用户 ID 无权访问 MQ 资源。

      关于,您的以下评论:

      如果我使用 WebSphere 的 JAAS 身份验证来提供用户 ID,那么我 总是得到 JMSWMQ2013 错误。 ,但是,如果明确通过 与 JMS 队列连接工厂的调用相同的用户 ID createQueueConnection(),然后我没有收到身份验证错误。

      你的预期是正确的。两种技术的行为方式应该相同。如果用户 id 可以访问,则两者都应该连接,如果没有,则两者都应该抛出错误。

      对您的问题的唯一解释可能是,您在这些应用程序中不知不觉地发送了不同的用户 ID。

      例如,您的用户 ID 是“User123”,它可以访问 MQ 资源。

      但是,可能是 WebSphere 的 JAAS 身份验证正在发送域以及用户 ID。 假设您的用户 id 在“开发者”域中,那么发送的用户 id 是“Developer\User123”,它可能无法访问该资源。

      【讨论】:

      • 感谢您确认我的理解。根据您对检查用户 ID 的想法,我更新了我的原始问题以提供更多信息。看起来 JAAS 凭据只是被忽略了。
      猜你喜欢
      • 2018-12-05
      • 2013-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多