当我尝试连接(写入)IBM WebSphere MQ v8时,无论我做什么,它总是出错(2035
未经授权),因为MQQueueManager连接看起来正在使用用户,应用程序的服务是运行(Windows x64服务器2012)而不是我在哈希表中设置的MQC.PASSWORD_PROPERTY
。
MQ与我的库(v8)版本相同,并且ADOPTCTX(YES)
,我们已执行REFRESH SECURITY TYPE(CONNAUTH)
。为属性设置我的哈希表如下:
MQ_PROPERTIES = New Hashtable()
MQ_PROPERTIES.Add(MQC.HOST_NAME_PROPERTY, MQ_HOSTNAME)
MQ_PROPERTIES.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED)
MQ_PROPERTIES.Add(MQC.PORT_PROPERTY, MQ_PORT)
MQ_PROPERTIES.Add(MQC.CHANNEL_PROPERTY, MQ_CHANNEL_NAME)
MQ_PROPERTIES.Add(MQC.USER_ID_PROPERTY, MQ_USERNAME)
MQ_PROPERTIES.Add(MQC.PASSWORD_PROPERTY, MQ_PASSWORD)
MQ_PROPERTIES.Add(MQC.USE_MQCSP_AUTHENTICATION_PROPERTY, True)
启动时为:
Using queueManager As New MQQueueManager(MQ_QUEUE_MANAGER, MQ_PROPERTIES)
编辑/更新:
{windows app user} =应用服务运行的帐户。
dlls all v 8.0.0.4
mq日志中的错误(无法直接访问,但提供的内容):
AMQ9557: Queue Manager User ID initialization failed for '{windows app user}'.
EXPLANATION:
Cause . . . . . : The call to initialize the User ID '{windows app user}' failed
with CompCode 2 and Reason 2035.
Recovery . . . : Correct the error and try again.
----- cmqxrsrv.c : 2356 -------------------------------------------------------
************End of Data********************
CONNAUTH设置为SYSTEM.DEFAULT.AUTHINFO.IDPWLDAP。 IDPWLDAP和IDPWOS的设置如下:
5 : dis AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWLDAP)
AMQ8566: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWLDAP)
AUTHTYPE(IDPWLDAP) ADOPTCTX(YES)
DESCR( ) CONNAME( )
CHCKCLNT(REQUIRED) CHCKLOCL(OPTIONAL)
CLASSUSR( ) FAILDLAY(1)
BASEDNU( ) LDAPUSER( )
LDAPPWD( ) SHORTUSR( )
USRFIELD( ) SECCOMM(NO)
ALTDATE(2017-10-20) ALTTIME(16.38.55)
2 : dis AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
AMQ8566: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
AUTHTYPE(IDPWOS) ADOPTCTX(YES)
DESCR( ) CHCKCLNT(OPTIONAL)
CHCKLOCL(OPTIONAL) FAILDLAY(1)
ALTDATE(2017-10-23) ALTTIME(13.50.20)
答案 0 :(得分:1)
AUTHINFO
对象有AUTHTYPE(IDPWLDAP)
,但您没有任何必填字段,例如CONNAME
,BASEDNU
等。仔细检查队列管理器的CONNAUTH
设置以确保您正在查看正确的AUTHINFO
对象,您可以使用命令DIS QMGR CONNAUTH
执行此操作。
队列管理器的CONNAUTH
字段中显示的值是您应该查看的AUTHINFO
对象的名称。
如果要使用AUTHTYPE(IDPWLDAP)
,则需要将其配置为指向具有所需值的LDAP服务器。如果您希望它使用Windows操作系统身份验证,那么您将使用AUTHTYPE(IDPWOS)
。
根据OP(Hub3rt)的更新,队列管理器的CONNAUTH
设置错误地指向SYSTEM.DEFAULT.AUTHINFO.IDPWLDAP
,并在更新队列管理器的CONNAUTH
设置后指向SYSTEM.DEFAULT.AUTHINFO.IDPWOS
ADOPTCTX(YES)
身份验证成功。