Как устранить ошибку вызова IBM MQ с компкодом «2» (MQCC_FAILED) и причиной «2035» (MQRC_NOT_AUTHORIZED)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как устранить ошибку вызова IBM MQ с компкодом «2» (MQCC_FAILED) и причиной «2035» (MQRC_NOT_AUTHORIZED)

Сообщение Anonymous »

У меня есть проект Spring, в котором мне нужно подключиться к IBM MQ для отправки и получения сообщений, но я получаю следующее исключение: -

Вызов IBM MQ завершился неудачей с компкодом '2' ('MQCC_FAILED'), причина '2035'
('MQRC_NOT_AUTHORIZED'). JMSWMQ2013: Аутентификация безопасности была
недействительной, которая была предоставлена ​​для администратора очередей «
Мой класс конфигурации

Код: Выделить всё

@Bean
public JmsTemplate jmsTemplate() throws JMSException {
MQQueueConnectionFactory mqQueueConnectionFactory = mqQueueConnectionFactory();
UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter =
getUserCredentialsConnectionFactoryAdapter(mqQueueConnectionFactory);
JmsTemplate jmsTemplate = new JmsTemplate(userCredentialsConnectionFactoryAdapter);
jmsTemplate.setReceiveTimeout(Long.parseLong(receiveTimeout));
return jmsTemplate;
}

@Bean
public MQQueueConnectionFactory mqQueueConnectionFactory() throws JMSException {
MQQueueConnectionFactory mqQueueConnectionFactory = new MQQueueConnectionFactory();
mqQueueConnectionFactory.setHostName(hostname);
mqQueueConnectionFactory.setTransportType(WMQConstants.WMQ_CM_CLIENT);
mqQueueConnectionFactory.setUserAuthenticationMQCSP(Boolean.parseBoolean(userMQCSPAuthValue));
mqQueueConnectionFactory.setChannel(channel);
mqQueueConnectionFactory.setPort(port);
mqQueueConnectionFactory.setQueueManager(queueManager);
mqQueueConnectionFactory.setClientReconnectOptions(WMQConstants.WMQ_CLIENT_RECONNECT);
mqQueueConnectionFactory.setClientReconnectTimeout(Integer.parseInt(reconnectTimeout));
return mqQueueConnectionFactory;
}

@Bean
public UserCredentialsConnectionFactoryAdapter getUserCredentialsConnectionFactoryAdapter(
MQQueueConnectionFactory mqQueueConnectionFactory) {
UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter =
new UserCredentialsConnectionFactoryAdapter();
userCredentialsConnectionFactoryAdapter.setUsername(username);
userCredentialsConnectionFactoryAdapter.setPassword(password);
userCredentialsConnectionFactoryAdapter.setTargetConnectionFactory(mqQueueConnectionFactory);
return userCredentialsConnectionFactoryAdapter;
}
Использование

Код: Выделить всё

TextMessage message = (TextMessage) jmsTemplate.sendAndReceive(destinationMq, session -> {
TextMessage textMessage = session.createTextMessage(request);
textMessage.setJMSCorrelationID(correlationId);
textMessage.setJMSReplyTo(getMQ(replyToQueue));
return textMessage;
});
Журналы сервера


AMQ9557E: Ошибка инициализации идентификатора пользователя диспетчера очередей для «мого системного
идентификатора пользователя». ОБЪЯСНЕНИЕ: Вызов для инициализации идентификатора пользователя «my system
user id» завершился неудачно с CompCode 2 и причиной 2035. Если использовался блок MQCSP
, идентификатор пользователя в блоке MQCSP был «имя пользователя из свойства». '. Если использовался поток userID
, идентификатор пользователя в заголовке UID был «идентификатор моего системного пользователя»
и все правила CHLAUTH, примененные до принятия пользователем, оценивались
с учетом регистра по этому значению. . ДЕЙСТВИЕ: Исправьте ошибку и повторите попытку
еще раз.

Факты

Имя пользователя и пароль верен, другие приложения используют те же учетные данные.
Решение опробовано и сработало

Мне удалось решить проблему с помощью ниже два метода:-
  • Установка значения false для setUserAuthenticationMQCSP
  • Установка System.property("user.name", "имя пользователя" от собственности") при запуске
Вопросы

Два приведенных выше решения кажутся хакерскими и на самом деле не решают реальную проблему.
  • Почему два вышеуказанных решения сработали?
  • Почему мой системный идентификатор пользователя используется для аутентификации соединения с IBM MQ? Как обеспечить аутентификацию соединения только с использованием переданных учетных данных?


Подробнее здесь: https://stackoverflow.com/questions/791 ... eason-2035
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»