Ibm mq MQ8+的授权错误;JDk8

Ibm mq MQ8+的授权错误;JDk8,ibm-mq,Ibm Mq,在处理JMS示例代码时,使用MQ8+JDk8将其放置在应用程序中,使其低于授权错误 MQException received while attempting reconnect: Reason Code=2035 Exception text: com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2035'. AMQERR01.LOG说 AMQ8077: Entity 'clientadmin' has insuffi

在处理JMS示例代码时,使用MQ8+JDk8将其放置在应用程序中,使其低于授权错误

MQException received while attempting reconnect: Reason Code=2035
 Exception text: com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2035'.
AMQERR01.LOG说

AMQ8077: Entity 'clientadmin' has insufficient authority to access object
'TLSTEST.QM'.

EXPLANATION:
The specified entity is not authorized to access the required object. The
following requested permissions are unauthorized: connect
ACTION:
Ensure that the correct level of authority has been set for this entity against
the required object, or ensure that the entity is a member of a privileged
group.

AMQ9557: Queue Manager User ID initialization failed for 'clientadmin'.

EXPLANATION:
The call to initialize the User ID 'clientadmin' failed with CompCode 2 and Reason
2035.
ACTION:
Correct the error and try again.
按照以下站点和命令执行步骤,但无法解决问题

http://www-01.ibm.com/support/docview.wss?uid=swg21680930
http://www-01.ibm.com/support/docview.wss?uid=swg21577137
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
REFRESH SECURITY TYPE(CONNAUTH)

ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(NONE)
REFRESH SECURITY TYPE(CONNAUTH)

ALTER QMGR CHLAUTH(DISABLED)
通过以下命令解决

已删除“SecurityPolicy=user”,仅将身份验证设置为以下内容并重新启动QM

setmqaut -m TLSTEST.QM -t qmgr -p clientadmin +all
setmqaut -m TLSTEST.QM -t queue -p clientadmin -n RECEIVE +all
setmqaut -m TLSTEST.QM -t queue -p clientadmin -n SEND +all
只是想知道,如何在qmgr中的所有队列中设置“+all”?是否将为qmgr中的所有队列设置@channel level

成功使用以下命令和设置

AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)AUTHTYPE(IDPWOS)CHCKCLNT(可选)
将要求如果发送密码,则该密码是有效密码

您收到的
AMQ8077
错误是因为用户没有连接到队列管理器的权限

您必须授予OAM权限,以允许
clientadmin
连接到队列管理器


默认情况下,在Linux上,您只能对用户所属的组授予MQ OAM权限,在您的情况下,
clientadmin
所属的组。在MQ v8.0及更高版本中,如果已将以下设置添加到qm.ini,则还可以针对用户本身授予OAM权限:

Service:
   SecurityPolicy=user
上面的设置不是必需的,它只允许两种不同的方式授予OAM权限。这记录在IBM MQ v8.0知识中心页面“”中。本页说明:

UNIX和Linux系统

AMQ8077: Entity 'clientadmin' has insufficient authority to access object
'TLSTEST.QM'.

EXPLANATION:
The specified entity is not authorized to access the required object. The
following requested permissions are unauthorized: connect
ACTION:
Ensure that the correct level of authority has been set for this entity against
the required object, or ensure that the entity is a member of a privileged
group.

AMQ9557: Queue Manager User ID initialization failed for 'clientadmin'.

EXPLANATION:
The call to initialize the User ID 'clientadmin' failed with CompCode 2 and Reason
2035.
ACTION:
Correct the error and try again.
ACL基于用户ID和组,您可以使用其中任何一个进行授权

在8.0版中,您可以使用基于用户的模型进行授权,这允许您同时使用用户和组。但是,当您在命令中指定用户时,新权限仅适用于该用户,而不适用于该用户所属的任何组

有关更多信息,请参阅

使用基于组的模型进行授权时,用户ID所属的主组将包含在ACL中

不包括个人用户ID,并将权限授予该组的所有成员。因此,请注意,通过更改同一组中另一个主体的权限,您可能会无意中更改主体的权限

这记录在IBM MQ v8.0知识中心页面“”中。本页说明:

SecurityPolicy=user | group | default

在UNIX和Linux系统上,该值指定队列管理器是使用基于用户的授权还是基于组的授权。值不区分大小写。 如果不包括此属性,则使用默认值,即使用基于组的授权。重新启动队列管理器以使更改生效


要授予OAM权限以针对组连接到队列管理器,您可以使用MQSC命令
SET AUTHREC

SET AUTHREC PROFILE('self') GROUP('groupname') OBJTYPE(QMGR) AUTHADD(CONNECT,DSP,INQ)
SET AUTHREC PROFILE('self') PRINCIPAL('clientadmin') OBJTYPE(QMGR) AUTHADD(CONNECT,DSP,INQ)
使用命令行工具setmqaut也可以实现这一点:

setmqaut -m <queue_manager_name> -t qmgr -g groupname +connect +dsp +inq
setmqaut -m <queue_manager_name> -t qmgr -p clientadmin +connect +dsp +inq
setmqaut -m <queue_manager_name> -t queue -p clientadmin +put +get +browse +dsp +inq
使用命令行工具setmqaut也可以实现这一点:

setmqaut -m <queue_manager_name> -t qmgr -g groupname +connect +dsp +inq
setmqaut -m <queue_manager_name> -t qmgr -p clientadmin +connect +dsp +inq
setmqaut -m <queue_manager_name> -t queue -p clientadmin +put +get +browse +dsp +inq
使用命令行工具setmqaut也可以实现这一点:

setmqaut -m <queue_manager_name> -t qmgr -g groupname +connect +dsp +inq
setmqaut -m <queue_manager_name> -t qmgr -p clientadmin +connect +dsp +inq
setmqaut -m <queue_manager_name> -t queue -p clientadmin +put +get +browse +dsp +inq
setmqaut-m-t队列-p clientadmin+put+get+browse+dsp+inq

更新2017/02/21

不建议在没有SecurityPolicy=user的情况下使用-p在Linux上设置权限。这是因为此操作不会针对使用-p指定的用户设置权限,而是在运行命令时针对该用户的主组设置权限

这可能导致各种情况,我能想到的几个例子如下:

  • 如果您有两个用户具有相同的主组,并且您为他们提供了不同的访问级别,那么他们最终都具有与上次运行的setmqaut命令相同的访问级别
  • 即使您首先为这两个用户提供了相同的访问级别,您也可能希望从这两个用户中的一个删除访问权限,并使用指定的权限
    -remove
    发出类似的命令。结果不是从两个用户中的一个删除访问权限,而是从两个用户中删除访问权限
  • unix帐户的主组发生更改的情况并不少见。如果用户在更改后不是与辅助组相同的组的成员,则他们将失去对MQ的访问权限

  • 也不建议向非管理用户提供
    +all
    ,如果这样做,您还可以将该用户添加到
    mqm
    组,并向其提供完整的MQ管理权限

    您应该为用户提供所需的特定权限。在我的示例中,我提供了一组适用于大多数应用程序的有限权限。

    AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)AUTHTYPE(IDPWOS)CHCKCLNT(可选)
    将要求在发送密码时确保密码有效

    您收到的
    AMQ8077
    错误是因为用户没有连接到队列管理器的权限

    您必须授予OAM权限,以允许
    clientadmin
    连接到队列管理器


    默认情况下,在Linux上,您只能对用户所属的组授予MQ OAM权限,在您的情况下,
    clientadmin
    所属的组。在MQ v8.0及更高版本中,如果已将以下设置添加到qm.ini,则还可以针对用户本身授予OAM权限:

    Service:
       SecurityPolicy=user
    
    上面的设置不是必需的,它只允许两种不同的方式授予OAM权限。这记录在IBM MQ v8.0知识中心页面“”中。本页说明:

    UNIX和Linux系统

    AMQ8077: Entity 'clientadmin' has insufficient authority to access object
    'TLSTEST.QM'.
    
    EXPLANATION:
    The specified entity is not authorized to access the required object. The
    following requested permissions are unauthorized: connect
    ACTION:
    Ensure that the correct level of authority has been set for this entity against
    the required object, or ensure that the entity is a member of a privileged
    group.
    
    AMQ9557: Queue Manager User ID initialization failed for 'clientadmin'.
    
    EXPLANATION:
    The call to initialize the User ID 'clientadmin' failed with CompCode 2 and Reason
    2035.
    ACTION:
    Correct the error and try again.
    
    ACL基于用户ID和组,您可以使用其中任何一个进行授权。