2017-02-18 18 views
1

Есть подобные вопросы к этому, но не совсем то же самое ...Подключение с .NET для MQ-Series

У меня есть программа # C, который использует amqmdnet.dll (от 9.0.1.0 MQC Redist) код подключаемое:

Hashtable mqProperties = new Hashtable(); 
mqProperties.Add(MQC.CHANNEL_PROPERTY, channelName); 
mqProperties.Add(MQC.HOST_NAME_PROPERTY, hostname); 
mqProperties.Add(MQC.PORT_PROPERTY, port); 
queueManager = new MQQueueManager(strQueueManagerName, mqProperties); 

Он отлично работает и пишет в очередь. Я предполагаю, что он подбирает мой текущий идентификатор входа из Windows.

Когда я запускаю тот же код в IIS, он подключается, но с ошибкой auth 2035 при попытке записи в очередь. Это связано с тем, что IIS работает как другой идентификатор пользователя.

Я попытался добавить:

mqProperties.Add(MQC.USER_ID_PROPERTY, "myuserid"); 
mqProperties.Add(MQC.PASSWORD_PROPERTY, "mypassword"); 

и это не сработало. Попытка «mydomain \ myuserid» тоже не работала. В некоторых других сообщениях упоминалось, что MQ нуждается в SID Windows. Я попытался использовать эту строку, но это тоже не сработало.

На данный момент я играю с этим, поэтому я бы предпочел не просить администраторов настроить новый идентификатор пользователя на стороне сервера MQ. Имея это в виду, есть ли способ войти в систему при работе под пользователем IIS, но передать мой идентификатор пользователя/пароль или другие полномочия, чтобы сделать эту работу?

+0

Это V9 или V10 (я считаю, что он мог быть обновлен как раз на прошлой неделе) –

+0

Я хотел удостовериться, что мой ответ верен, предложили ли вам изменения? – JoshMc

ответ

1

Если диспетчер очереди находится в версии 8.0 или новее и настроен на использование CONNAUTH и установлен ADOPTCTX (YES), вы можете указать идентификатор и пароль. Если этот набор не установлен, значение, представленное в свойстве UserId и Password клиента .NET, будет проигнорировано.

В блоге IBM developerWorks MQdev «MQCSP Password Protection in MQ V8 есть сведения о том, как это сделать на разных языках».

Для .NET вы должны быть в состоянии использовать то, что у вас есть с добавлением MQC.USE_MQCSP_AUTHENTICATION_PROPERTY набора к true:

mqProperties.Add(MQC.USER_ID_PROPERTY, "myuserid"); 
mqProperties.Add(MQC.PASSWORD_PROPERTY, "mypassword"); 
mqProperties.Add(MQC.USE_MQCSP_AUTHENTICATION_PROPERTY, true); 

Менеджер очереди будет проверять подлинность этого идентификатора. Если диспетчер очереди настроен с помощью ADOPTCTX (YES), он всегда будет использовать идентификатор с проверкой подлинности для проверок OAM. Если он установлен в ADOPTCTX (NO), он все равно будет использовать идентификатор, в котором выполняется процесс, для выполнения проверок OAM. Настоятельно рекомендуется установить этот параметр в ADOPTCTX (YES).

Update 2017/02/20:

, связанные с комментарием «Я вижу, что он может быть выключен админов, так что MQ опирается на большую организационную инфраструктуру SSO.». Без настройки CONNAUTH и ADOPTCTX (YES) вы можете указать любой идентификатор, который вы хотите по каналу. Если для блокировки административных пользователей не существует правила CHLAUTH, вы можете получить полный административный орган MQ без какой-либо проверки подлинности.

+0

Это похоже на то, что я делал (я добавил MQC.USE_MQCSP_AUTHENTICATION_PROPERTY, но с тем же результатом). Мне нужно спросить о CONNAUTH и ADOPTCTX (ДА). Я думаю, вы говорите, что зарегистрированный пользователь Windows сможет подключиться к MQ без них, но мне нужны те, которые нужно установить, если я хочу явно отправить Userid/Password. Я вижу, что он может быть отключен админами, поэтому MQ полагается на более крупную организационную инфраструктуру единого входа. Спасибо за помощь. –

+0

@ DariusX. вы решили проблему? – JoshMc

+0

Нет, еще нет. Хотя это то, что нам понадобится, на данный момент оно отложено. –