Странная проблема с аутентификацией в IBMMQ, он принимает ID запущенного пользователя - PullRequest
0 голосов
/ 22 октября 2018

У меня странная проблема, когда я выполняю отправку сообщения в очереди.Я настроил свое приложение для чтения идентификатора пользователя / пароля из app.config.когда сообщение помещается в очередь, я получаю имя пользователя, запустившего приложение, и это имя файла .config.

Код, который я использую для создания MQQueueManager:

  private static readonly Lazy<MQQueueManager> lazy =
        new Lazy<MQQueueManager>(() =>
        {
            var properties = new Hashtable();

            var container = ContainerWrapper.Container;

            IConfiguration configuration = container.GetInstance<IConfiguration>();

            properties.Add(MQC.HOST_NAME_PROPERTY, configuration.GetValue<string>("HOST_NAME_PROPERTY"));
            properties.Add(MQC.PORT_PROPERTY, configuration.GetValue<int>("PORT_PROPERTY"));
            properties.Add(MQC.USER_ID_PROPERTY, configuration.GetValue<string>("USER_ID_PROPERTY"));
            properties.Add(MQC.PASSWORD_PROPERTY, configuration.GetValue<string>("PASSWORD_PROPERTY"));
            properties.Add(MQC.CHANNEL_PROPERTY, configuration.GetValue<string>("CHANNEL_PROPERTY"));


            MQQueueManager queueManager = new MQQueueManager(configuration.GetValue<string>("QUEUE_MANAGER_NAME"), properties);


            return queueManager;
        });

Я что-то упустил?Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Возможно, вам нужно добавить еще одну строку в ваши свойства.

Попробуйте (из памяти, чтобы вам нужно было найти правильную константу) USE_MQCSP_USERNAME_PASSWORD Это должно быть логическим значением, для которого должно быть установлено yes ....

Добавьте это в свои свойства, затем создайте администратор очередей с этими свойствами.

0 голосов
/ 22 октября 2018

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

DISPLAY QMGR CONNAUTH

Значение в поле CONNAUTH - это имя объекта AUTHINFO.Если поле пустое, проверка имени пользователя и пароля не включена.Установите для него подходящее имя объекта.

ALTER QMGR CONNAUTH(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)

Теперь посмотрите на его атрибуты.

DISPLAY AUTHINFO(name-from-connauth) ALL

Если для ADOPTCTK установлено значение NO, идентификатор пользователя будетне будет принят в качестве идентификатора пользователя соединения и не будет отображаться в контексте сообщения.

ALTER AUTHINFO(name-from-connauth) AUTHTYPE(IDPWOS) ADOPTCTX(YES)

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

REFRESH SECURITY TYPE(CONNAUTH)
...