提供对IBM WebSphere MQ的匿名访问

  • 本文关键字:访问 MQ WebSphere IBM ibm-mq
  • 更新时间 :
  • 英文 :


我是IBM WebSphere MQ的新手。我正在docker容器中运行它。用户" sampleuser"one_answers" root"是Conatiner中" mqm"组的一部分。我可以从主机和" root"用户和" sampleuser"(我在主机中创建'sampleuser')访问MQ。

我想启用匿名身份验证,以便对客户端用户ID的不利,他们应该能够访问MQ。我虽然MCAUSER('sampleuser')会为我做。但这行不通。我从Eclipse IBM Explorer中获得了错误AMQ4036(未授权)。请建议。

ALTER QMGR PSNPRES(SAFE)
ALTER QMGR PSMODE (ENABLED)
DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('sampleuser') REPLACE

更新#1 我更新了代码以允许特权用户。但仍然失败。

ALTER QMGR PSNPRES(SAFE)
ALTER QMGR PSMODE (ENABLED)
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST('*NOACCESS')
DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('sampleuser') REPLACE

这是我得到的日志。

EXPLANATION:
The user ID 'sampleuser' and its password were checked because the user ID is
privileged and the queue manager connection authority (CONNAUTH) configuration
refers to an authentication information (AUTHINFO) object named
'SYSTEM.DEFAULT.AUTHINFO.IDPWOS' with CHCKCLNT(REQDADM). 
This message accompanies a previous error to clarify the reason for the user ID
and password check.
ACTION:
Refer to the previous error for more information. 
Ensure that a password is specified by the client application and that the
password is correct for the user ID. The authentication configuration of the
queue manager connection determines the user ID repository. For example, the
local operating system user database or an LDAP server. 
To avoid the authentication check, you can either use an unprivileged user ID
or amend the authentication configuration of the queue manager. You can amend
the CHCKCLNT attribute in the CHLAUTH record, but you should generally not
allow unauthenticated remote access.

更新#2 基于JohnMC的答案,并引用以提供对IBM WebSphere MQ的匿名访问,我终于使它起作用了..:)

ALTER QMGR PSNPRES(SAFE)
ALTER QMGR PSMODE (ENABLED)
ALTER QMGR CHLAUTH(DISABLED)
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST('*NOACCESS')
DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('sampleuser') REPLACE
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
REFRESH SECURITY TYPE(CONNAUTH)

我会假设您正在使用MQ的支持版本(7.1或更高版本)。

使用MQ 7.1及以后的一个新的队列管理器默认情况下将带有一些Chlauth规则,其中之一可以从具有MQ行政当局的用户那里连接到SVRCONN渠道。在这种情况下,您将用户sampleuser放置在频道的MCAUSER中。由于sampleuser是MQM组的成员,因此默认情况下不允许。

基于您提供的设置,如果允许连接,您将允许任何可以通过网络连接到MQ侦听器端口的用户管理队列管理器,定义队列,删除队列,添加权限等。

查看T.ROB的此答案,以获取有关如何在不禁用安全性的情况下进行此工作的更多详细信息"无法连接到WebSphere MQ 7.1中的Queue Manager"。

我还有另一篇文章,其中包含一些类似的信息" C#MQ Connect GET GET GET ERROR 2035,但Java MQ Connect运行良好"


更新#1

日志显示您正在获得连接身份验证错误。使用MQ 8.0及以后的默认情况下,将队列管理器配置为需要为MQ管理用户指定有效的密码,因为sampleuser是MQM组的一部分,因此它属于此类别。

连接到队列管理器时,您可以配置MQ Explorer以发送用户名和密码。

  1. 右键单击队列管理器名称
  2. 选择连接详细信息
  3. 选择属性...
  4. 选择用户ID
  5. 选中"启用用户标识"旁边的框
  6. 填写USERID字段
  7. 如果您将其作为"提示密码",则每次您尝试连接到队列管理器时,每次打开MQ Explorer以获取密码。您可以选择"使用保存密码",然后提供密码。

我不建议您这样做,但是如果您想禁用安全性,并允许任何人连接到您的队列管理器,则没有提供有效的密码,您可以使用以下命令禁用此功能。

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

最新更新