使用 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),但您没有任何必填字段,例如 CONNAMEBASEDNU 等。仔细检查队列管理器的 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.IDPWOSADOPTCTX(YES) 身份验证成功。