#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, теперь оно работает нормально. Спасибо!