使用Windows用户而不是USER_ID_PROPERTY进行的IBM MQ v8 .NET身份验证

时间:2017-10-20 21:58:22

标签: .net authentication ibm-mq

当我尝试连接(写入)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)

1 个答案:

答案 0 :(得分:1)

您引用的

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