使用 Windows 用户而不是 USER_ID_PROPERTY 的 IBM MQ v8 .NET 身份验证
IBM MQ v8 .NET authentication using Windows user rather than USER_ID_PROPERTY
无论我在尝试连接(写入)IBM WebSphere MQ v8 时做什么,它总是出错(2035
未授权),因为 MQQueueManager 连接看起来正在使用用户的服务应用程序是 运行 on (Windows x64 server 2012) 而不是我在散列 table.
中设置的 MQC.PASSWORD_PROPERTY
MQ 与我的库 (v8) 版本相同,并且有 ADOPTCTX(YES)
,我们已经执行了 REFRESH SECURITY TYPE(CONNAUTH)
。为属性设置我的散列table如下:
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)
Edit/Update:
{windows 应用用户} = 应用服务的帐户 运行 作为。
dlls 全部 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)
AUTHINFO
您正在引用的对象具有 AUTHTYPE(IDPWLDAP)
,但您没有任何必填字段,例如 CONNAME
、BASEDNU
等。仔细检查队列管理器的 CONNAUTH
设置以确保您正在查看正确的 AUTHINFO
对象,您可以使用命令 DIS QMGR CONNAUTH
执行此操作。
队列管理器的 CONNAUTH
字段中显示的任何值都是您应该查看的 AUTHINFO
对象的名称。
如果您想使用 AUTHTYPE(IDPWLDAP)
,您需要将其配置为指向具有所需值的 LDAP 服务器。如果你想让它使用 Windows OS 身份验证,那么你可以使用 AUTHTYPE(IDPWOS)
.
根据 OP (Hub3rt) 的更新,队列管理器的 CONNAUTH
设置错误地指向 SYSTEM.DEFAULT.AUTHINFO.IDPWLDAP
,并且在将队列管理器的 CONNAUTH
设置更新为指向 SYSTEM.DEFAULT.AUTHINFO.IDPWOS
与 ADOPTCTX(YES)
身份验证成功。
无论我在尝试连接(写入)IBM WebSphere MQ v8 时做什么,它总是出错(2035
未授权),因为 MQQueueManager 连接看起来正在使用用户的服务应用程序是 运行 on (Windows x64 server 2012) 而不是我在散列 table.
MQC.PASSWORD_PROPERTY
MQ 与我的库 (v8) 版本相同,并且有 ADOPTCTX(YES)
,我们已经执行了 REFRESH SECURITY TYPE(CONNAUTH)
。为属性设置我的散列table如下:
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)
Edit/Update:
{windows 应用用户} = 应用服务的帐户 运行 作为。
dlls 全部 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)
AUTHINFO
您正在引用的对象具有 AUTHTYPE(IDPWLDAP)
,但您没有任何必填字段,例如 CONNAME
、BASEDNU
等。仔细检查队列管理器的 CONNAUTH
设置以确保您正在查看正确的 AUTHINFO
对象,您可以使用命令 DIS QMGR CONNAUTH
执行此操作。
队列管理器的 CONNAUTH
字段中显示的任何值都是您应该查看的 AUTHINFO
对象的名称。
如果您想使用 AUTHTYPE(IDPWLDAP)
,您需要将其配置为指向具有所需值的 LDAP 服务器。如果你想让它使用 Windows OS 身份验证,那么你可以使用 AUTHTYPE(IDPWOS)
.
根据 OP (Hub3rt) 的更新,队列管理器的 CONNAUTH
设置错误地指向 SYSTEM.DEFAULT.AUTHINFO.IDPWLDAP
,并且在将队列管理器的 CONNAUTH
设置更新为指向 SYSTEM.DEFAULT.AUTHINFO.IDPWOS
与 ADOPTCTX(YES)
身份验证成功。