Ibm mq 提供对IBM WebSphere MQ的匿名访问

Ibm mq 提供对IBM WebSphere MQ的匿名访问,ibm-mq,Ibm Mq,我不熟悉ibmwebspheremq。我正在一个docker容器中运行它。用户“sampleuser”和“root”是conatiner中的“mqm”组的一部分。我能够以“root”用户和“sampleuser”(我也在主机中创建了“sampleuser”)的身份从主机访问MQ 我希望启用匿名身份验证,以便在查看客户机用户id后,他们应该能够访问MQ。我想MCAUSER('sampleuser')会帮我做的。但它不起作用。我从EclipseIBMExplorer中得到错误AMQ4036(未授权)

我不熟悉
ibmwebspheremq
。我正在一个
docker
容器中运行它。用户“
sampleuser
”和“
root
”是conatiner中的“
mqm
”组的一部分。我能够以“root”用户和“sampleuser”(我也在主机中创建了“sampleuser”)的身份从主机访问MQ

我希望启用匿名身份验证,以便在查看客户机用户id后,他们应该能够访问MQ。我想
MCAUSER('sampleuser')
会帮我做的。但它不起作用。我从EclipseIBMExplorer中得到错误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.
根据JohnMC的回答和对我的参考,更新#2,我终于成功了:)


我假设您使用的是受支持的MQ版本(7.1或更高版本)

对于MQ 7.1和更高版本,默认情况下新的队列管理器将附带一些CHLAUTH规则,其中一个将禁用具有MQ管理权限的用户到SVRCONN通道的连接。在这种情况下,您已将用户
sampleuser
放置在频道的
MCAUSER
中。由于
sampleuser
是mqm组的成员,因此默认情况下不允许使用它

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

请看T.Rob的回答,了解如何在不禁用“安全性”的情况下实现此功能的更多详细信息

我还有另一篇帖子,上面有一些类似的信息“


更新#1

日志显示您正在收到连接身份验证错误。默认情况下,对于MQ 8.0及更高版本,队列管理器被配置为要求为MQ管理用户指定有效密码,因为
sampleuser
是mqm组的一部分,它属于此类

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

  • 右键单击队列管理器名称
  • 选择连接详细信息
  • 选择属性
  • 选择用户ID
  • 选中“启用用户标识”旁边的框
  • 填写Userid字段
  • 如果将其保留为“提示输入密码”,则在您尝试连接到队列管理器时,每次打开MQ Explorer时,它都会询问您密码。您可以选择“使用保存的密码”,然后提供密码

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

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

    我建议检查队列管理器错误日志以查找失败的原因。如果查看队列管理器错误日志,它将准确地告诉您失败的原因,是“通道身份验证阻止了您”,还是“未知用户”,或者“用户没有正确的权限”,或者“当队列管理器被配置为需要密码时,用户没有提供密码”等等。正如您所看到的,原因有很多,因此错误日志对您的帮助非常重要。我已经添加了日志。
    ALTER QMGR CHLAUTH(DISABLED)
    SET CHLAUTH(*)更新中显示的
    是互斥的。请禁用
    CHLAUTH
    或设置
    CHLAUTH
    规则,而不是两者都禁用。(提示:不要禁用
    CHLAUTH
    !)另外,如果您启用了密码验证,请参阅和后面的两篇文章。它严重损坏,至少在下一个补丁包之前(如果确实是的话)不会被修复。谢谢。我尝试相应地更改代码以允许未经授权的匿名用户。但仍然失败。有什么想法吗?我已经用日志更新了问题。
    ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
    REFRESH SECURITY TYPE(CONNAUTH)