При отправке в MQ из java всегда используется установленный по умолчанию идентификатор пользователя mqm для IBM MQ версии 6.0 - PullRequest
4 голосов
/ 23 сентября 2010

Наш код работает в weblogic, и мы MQ 6.0.Неважно, если я использую значение по умолчанию createQueueConnection() или createQueueConnection("myuserid","mypassword"), всегда используется userid mqm.См. Код ниже.

Когда я подключаюсь из версии 6.0 к более старой версии mq 5, кажется, что выдается следующая ошибка javax.jms.JMSSecurityException: MQJMS2013: invalid security authentication supplied for MQQueueManager с использованием значения по умолчанию createQueueConnection(), если только я не отправляю пустой идентификатор пользователя / пароль, как в createQueueConnection("","")

Как я могу получить myuserid для отправки вместо?

Hashtable properties = new Hashtable(2);
properties.put(Context.PROVIDER_URL,context);
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");

InitialContext ctx = new InitialContext(properties);
QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup("QCF");
QueueConnection qc = qcf.createQueueConnection();
javax.jms.Queue q = (javax.jms.Queue) ctx.lookup("MYQUEUE");
QueueSession qs = qc.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
TextMessage tm = qs.createTextMessage();
tm.setText(outString);
QueueSender sender = qs.createSender(q);
sender.send(tm);
sender.close();
qs.close();
qc.close();

1 Ответ

3 голосов
/ 24 сентября 2010

Если вы устанавливаете идентификатор в createQueueConnection, будьте уверены, он равен , представляемому администратору очередей. Проблема, которую вы видите, состоит в том, что определение канала SVRCONN на QMgr имеет жестко запрограммированное значение MCAUSER ('mqm'). Это переопределяет любое значение, представленное клиентским приложением.

Здесь стоит отметить пару вещей.

  1. Хотя вы можете отправить идентификатор и пароль, WMQ принимает их по номиналу. Поля существуют, чтобы сделать учетные данные доступными для выхода из канала, который может их проверить. Без такого выхода канал просто работает под тем же идентификатором, который заявлено приложением, а пароль игнорируется.
  2. По вышеизложенной причине я всегда говорю людям не доверять представленным учетным данным, если у них нет такого выхода. Администратор должен ввести соответствующее значение в MCAUSER.
  3. Административный идентификатор ('mqm' в версиях UNIX) НЕ является подходящим значением. Он предоставляет административные полномочия любому, кто подключается к этому каналу.

Для получения более подробной информации по этой теме и указаний на презентацию по безопасности WMQ и руководство по лаборатории безопасности WMQ от IMPACT см. этот вопрос SO .

...