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配置为在连接到队列管理器时发送用户名和密码
我不建议您这样做,但如果您想禁用安全性并允许任何人在不提供有效密码的情况下以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)