Ошибка JMSWMQ2013 и WAS QCF игнорируют аутентификацию JAAS для подключения к MQ - PullRequest
0 голосов
/ 26 июня 2018

Я получаю приведенную ниже ошибку, когда WAS QCF пытается подключиться к MQ, после нескольких часов исследования выяснилось, что QCF игнорирует данную ему аутентификацию JAAS и вместо этого использует свой собственный метод для получения WAS user.name и передачи его в MQ. чтобы получить соединение и не удалось .. Кто-нибудь знает, почему WAS QCF игнорирует аутентификацию JAAS здесь. Я вижу сообщение об этом, но не вижу конкретного ответа.

ОШИБКА:

JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'QMGR' with connection mode 'Client' and host name 'qmgrhost(1431)'. Please check if the supplied username and password are correct on the QueueManager you are connecting to...JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED'). "

1 Ответ

0 голосов
/ 27 июня 2018

Необходимо передать учетные данные пользователя в QueueConnection следующим образом:

QueueConnection conn = cf.createQueueConnection(userID, password);
conn.start();

где cf - QueueConnectionFactory.

т.е.

try
{
   Hashtable env = new Hashtable();
   env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
   env.put(Context.PROVIDER_URL, "file:/" + "some_path_to_mq_jndi"

   Context ctx = new InitialContext(env);

   cf = (QueueConnectionFactory) ctx.lookup("myQCF");
}
catch (NamingException e)
{
   System.err.println(e.getLocalizedMessage());
   e.printStackTrace();
   throw e;
}
...