【问题标题】:SpringBoot IBM MQ without user authenticationSpringBoot IBM MQ 无用户认证
【发布时间】:2019-08-10 17:46:21
【问题描述】:

目前我的 spring boot application.yaml 中有以下属性。

ibm:
   mq:
      queueManager: <queue-manager>
      channel: <channel>
      connName: <host>(<port>)
      queue: <queue-name>
      user: <user>
      password: <password>

我想在没有密码的情况下进行连接,为此我必须设置jmsConnectionFactory.setBooleanProperty(WMQConstants.USER_AUTHENTICATION_MQCSP, false); 属性。

我是否可以通过将参数传递给 connName 在 application.yaml 中指定此属性?

在哪里可以找到与 IBM MQ 相关的所有预定义的关键 spring-boot 应用程序属性?

【问题讨论】:

  • 工作中的独立应用程序是否在不同于 spring boot 的用户下运行进程?
  • 同一个用户

标签: spring-boot jms ibm-mq


【解决方案1】:

您的问题之一是您是否可以使用 spring boot 在您的 yaml 文件中设置 WMQConstants.USER_AUTHENTICATION_MQCSP。您可以像这样轻松设置其他 mq 属性:

ibm:
  mq:
    conn-name: "localhost(1414)"
    queue-manager: "TEST"
    channel: "TEST"
    user: "TEST"
    password: ""
    additional-properties:
      XMSC_WMQ_QMGR_CCSID: 1208
      XMSC_WMQ_CONNECTION_MODE: 1
      XMSC_USER_AUTHENTICATION_MQCSP: false

【讨论】:

    【解决方案2】:

    您是否可以在没有密码的情况下进行连接的选择不是您可以从应用程序中做出的事情。队列管理器中的配置决定是否允许您在没有密码的情况下进入。

    您在问题中提到的布尔属性不会打开/关闭密码用户,它会在两种可能的密码发送机制之间切换,即 V8 之前的机制和 MQCSP 机制。

    如果您不想发送用户 ID 和密码,请不要设置用户 ID 和密码。

    【讨论】:

    • 它与具有以下 connectionFactory 参数的独立应用程序一起使用,这意味着没有 user 和 pwd 。但是,如果我从 Spring Boot 应用程序中删除用户名和密码,则会引发异常 JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED'). cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, H); cf.setIntProperty(WMQConstants.WMQ_PORT, P); cf.setStringProperty(WMQConstants.WMQ_CHANNEL, CHANNEL); cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE,1); cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, QM);
    • Spring-boot 的配置有所不同。
    • 请在您的问题中添加队列管理器配置 - 特别是队列管理器上的 CHLAUTH 和 CONNAUTH 的值,以及您是否添加了任何 CHLAUTH 规则。
    • 我不确定 CHLAUTH,但正如 @Mark Taylor 在将 ibm.mq.user= 添加到 Spring Boot 应用程序属性后所建议的那样,它现在可以正常工作了。谢谢!
    【解决方案3】:

    这在 MQ Spring Boot 包的自述文件中得到了解答。

    但总而言之,MQ Spring Boot 默认配置设置为使用 admin/passw0rd 进行身份验证,以匹配 MQ 开发版的默认配置。如果根本不做任何认证,那么在配置文件中将 userid 设置为空。

       ibm.mq.user=
    

    要强制未经身份验证的连接作为特定 ID 运行,可以应用 CHLAUTH 规则。

    该自述文件中列出了可用的完整配置参数集及其默认值。一些 IDE 在编辑配置文件时也可以从 jar 文件中获取它。

    身份验证策略在https://github.com/ibm-messaging/mq-jms-spring/issues/18进一步讨论

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 2019-06-16
      • 2015-04-08
      • 1970-01-01
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多