Как контролировать UserID в pymqi? - PullRequest
0 голосов
/ 03 августа 2020

Возникла проблема:

  • IBM MQ Server v9.1.0.0
  • pymqi == 1.11.1

При попытке подключения к серверу получил ошибку:

pymqi.MQMIError: MQI Error. Comp: 2, Reason 2035: FAILED: MQRC_NOT_AUTHORIZED

Когда я проверял трафик c в Wireshark, я получил это: Actual result

And in server log this:

07/31/2020 10:08:02 AM - Process(27333.5) User(mqm) Program(amqrmppa)
                    Host(host) Installation(Installation1)
                    VRMF(9.1.0.0) QMgr(queue_manager)
                    Time(2020-07-31T07:08:02.253Z)
                    ArithInsert1(2) ArithInsert2(2035)
                    CommentInsert1(haha)
                   
AMQ9557E: Queue Manager User ID initialization failed for 'haha'.

EXPLANATION:
The call to initialize the User ID 'haha' failed with CompCode 2 and Reason
2035. If an MQCSP block was used, the User ID in the MQCSP block was ''.
ACTION:
Correct the error and try again.

My code sample:

import pymqi

host = "host"
port = 1416

conn_info = f"{host}({port})"
channel = "channel"

queue_manager = "queue_manager"


def main():
    manager = pymqi.connect(queue_manager=queue_manager, channel=channel, conn_info=conn_info)


if __name__ == '__main__':
    main()

Я пытался выполнить код с других устройств и там, соответственно, учетная запись, под которой я работал, была принята как UserID.

После этого я попросил нашу поддержку разобраться с проблемой, после чего мне удалось подключиться к учетной записи ха-ха , но решение с созданием списка разрешенных пользователей меня не устраивает. Есть ли способ контролировать идентификатор пользователя, отправляемый pymqi?

UPD 04.08.2020

Служба поддержки сказала, что пользователь phoenix был создан на сервере IBM MQ с паролем 123456789, пыталась отправить MQSCP:

manager = pymqi.connect(queue_manager=queue_manager, channel=channel,
            conn_info=conn_info, user="phoenix", password="123456789")

И получил аналогичную ошибку MQRC_NOT_AUTHORIZED, и журнал сервера содержит ошибку, как указано выше, с именем пользователя машины, на которой запускается код (не phoenix).

...