Весенняя загрузка IBM MQ без аутентификации пользователя

#spring-boot #jms #ibm-mq

#весенняя загрузка #jms #ibm-mq

Вопрос:

В настоящее время у меня есть следующие свойства в моем приложении spring boot.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); свойство.

Могу ли я в любом случае указать это свойство в приложении.yaml путем передачи параметра в connName ?

Где я могу найти все предопределенные ключевые свойства приложения spring-boot, связанные с IBM MQ?

Комментарии:

1. Запускает ли работающее автономное приложение процесс под пользователем, отличным от spring boot?

2. Это тот же пользователь

Ответ №1:

Ответ на этот вопрос содержится в README для пакета MQ Spring Boot.

Но, подводя итог, конфигурация MQ Spring Boot по умолчанию настроена на аутентификацию с помощью admin / passw0rd, чтобы соответствовать конфигурации по умолчанию версии MQ для разработчиков. Чтобы вообще не выполнять аутентификацию, установите идентификатор пользователя пустым в файле конфигурации.

    ibm.mq.user=
  

Чтобы принудительно запустить неаутентифицированное соединение с определенным идентификатором, можно применить правила CHLAUTH.

Полный набор доступных параметров конфигурации вместе с их значениями по умолчанию приведен в этом README. Некоторые IDE также могут извлекать это из файлов jar при редактировании файлов конфигурации.

Стратегия аутентификации обсуждается далее на https://github.com/ibm-messaging/mq-jms-spring/issues/18

Ответ №2:

Одна часть вашего вопроса заключалась в том, можете ли вы установить WMQConstants.USER_AUTHENTICATION_MQCSP в вашем файле yaml с spring boot. Вы можете легко установить дополнительные свойства 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
  

Ответ №3:

Выбор того, можете ли вы подключиться без пароля, — это не то, что вы можете сделать из приложения. Именно конфигурация в диспетчере очередей определяет, разрешен ли вам вход без пароля.

Свойство boolean, о котором вы упоминаете в своем вопросе, не включает / выключает пользователя с паролем или нет, оно переключается между двумя возможными механизмами отправки пароля, механизмом до версии 8 и механизмом MQCSP.

Если вы не хотите отправлять идентификатор пользователя и пароль, просто не устанавливайте идентификатор пользователя и пароль.

Комментарии:

1.Он работает с автономным приложением с приведенными ниже параметрами ConnectionFactory, что означает без пользователя и 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);

2. Весенняя загрузка настраивается как-то по-другому.

3. Пожалуйста, добавьте конфигурацию диспетчера очередей к вашему вопросу — в частности, значения CHLAUTH и CONNAUTH в диспетчере очередей и добавили ли вы какие-либо правила CHLAUTH.

4. Я не уверен насчет CHLAUTH, но, как было предложено @Mark Taylor после добавления ibm.mq.user= в свойства приложения spring boot, теперь оно работает нормально. Спасибо!