IBM mq — Проверка подлинности безопасности, предоставленная администратору очередей «X», была недействительной. mqcc_файл с кодом 2

#jms #ibm-mq #spring-jms

Вопрос:

У меня возникают проблемы с аутентификацией, когда модуль пытается подключиться к IBM mq. Ошибка, которую я получаю на уровне модуля, заключается в:

Таким образом, у нас есть файл config.yaml, в котором указывается, какой канал и какого пользователя использовать для подключения с определенного env. У нас есть dev, prod env. Prod env работает правильно, однако dev env выдает вышеуказанную ошибку. Однако у нас также есть файл docker ibm-mq, в котором пользователь y создается в базовом образе. Это отдельно от файла config.json. Таким образом, он принимает пользователя в файле dockerfile, а не пользователя в файле config.yaml. Поэтому я хочу использовать промежуточного пользователя, который упоминается в файле config.yml и имеет все разрешения, но он использует пользователя в базовом образе docker.

конфигурация.yml

 ibm:  mq:  connName: x.x.x.x(1414)  queueManager: x  channel: x.x  user: staging  

Файл Docker

 User y created in base image USER 7676 ENTRYPOINT ["/entrypoint.sh"] CMD ["./app.jar"]  

Сведения об авторах connauth и qmgr приведены ниже:

 AMQ8408: Display Queue Manager details.  QMNAME(x)   CONNAUTH(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) DIS AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)  2 : DIS AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AMQ8566: Display authentication information details.  AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)  AUTHTYPE(IDPWOS) ADOPTCTX(NO)  DESCR( ) CHCKCLNT(REQDADM)  CHCKLOCL(OPTIONAL) FAILDLAY(1)  ALTDATE(2015-09-22) ALTTIME(19.45.35)  
 nested exception is com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').","context":"default","module":"app"} {"timestamp":"2021-12-01 17:05:14.370","level":"ERROR","thread":"DefaultMessageListenerContainer-1","logger":"org.springframework.jms.listener.DefaultMessageListenerContainer","message":"Could not refresh JMS Connection for destination 'K' - retrying using FixedBackOff{interval=5000, currentAttempts=202648, maxAttempts=unlimited}. Cause: JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'x' with connection mode 'Client' and host name '....'.; nested exception is com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').","context":"default","module":"app"}  

Ошибка, которую я вижу в диспетчере очередей, заключается в следующем:

 AMQ9557: Queue Manager User ID initialization failed for 'y'.  EXPLANATION: The call to initialize the User ID 'y' failed with CompCode 2 and Reason 2035. ACTION: Correct the error and try again. ----- cmqxrsrv.c : 2282 ------------------------------------------------------- 12/01/2021 04:40:45 PM - Process(1388.82388) User(mqm) Program(amqrmppa)  Host(....)Installation(Installation1)  VRMF(8.0.0.2) QMgr(Y)  

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

1. Существует ли Y на сервере MQ? Если он не существует, ожидается эта ошибка. Какая версия MQ находится на вашем сервере?

2. Есть ли какие-либо связанные сообщения непосредственно перед AMQ9557 в AMQERR01.LOG ? Иногда эта ошибка возникает в результате предыдущих ошибок. Если нет, смотрите комментарий @JoshMc.

3. @мораг есть много предупреждений о том, что он не может добраться до определенного секрета. Возможно, это может быть причиной, но для вышеупомянутой ошибки есть дополнительная информация о том, что причиной ее является процесс amqrmppa. Установка 1-это то, что вызывает это.

4. @JoshMc да, я верю, что y существует на сервере mq. Но чтобы быть вдвойне уверенным, не могли бы вы, пожалуйста, сообщить мне, как проверить, существует ли y на сервере?

5. Если это сервер Unix или Linux, просто запустите id y . Я думаю, что будет полезно, если вы отредактируете свой вопрос и предоставите все связанные с ним ошибки администратора очередей в полном объеме. Предоставления нам только amqrmppa и Установки1 достаточно, чтобы устранить проблему.