【问题标题】:Websphere MQ 7.5: User ID AccessWebsphere MQ 7.5:用户 ID 访问
【发布时间】:2013-07-21 03:30:30
【问题描述】:

我已经安装了 Websphere MQ 7.5 并编写了一个 Java 客户端来连接到队列。为了执行该任务,我创建了一个基于SYSTEM.DEF.SVRCONN 通道的自定义连接到服务器通道。

首先,为了阻止所有具有管理员权限的用户和所有频道的所有授权用户,我键入了这样一个命令 (runmqsc TEST_MANAGER):SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST('nobody', *MQADMIN)。现在我在 MQ Explorer 中看到了这个限制(TEST_MANAGER -> Channels -> Channel Identification Records)。

之后,为了向我的测试用户(Java 客户端)提供访问权限,我输入了这样一个命令:

SET CHLAUTH(TEST_CHANNEL) TYPE(ADDRESSMAP) ADDRESS('*') MCAUSER('TestUser') .

最后,我在 Spring 的 UserCredentialsConnectionFactoryAdapter 中设置了用户名/密码对,其中用户名是 TestUser。

问题是我无法连接2035 MQRC_NOT_AUTHORIZED 异常。如果我删除 'nobody'/*MQADMIN 阻止规则,一切正常(仅存在 TestUser 客户端规则的规则)。

【问题讨论】:

    标签: java spring authentication ibm-mq


    【解决方案1】:

    设置 CHLAUTH(TEST_CHANNEL) 类型(ADDRESSMAP) 地址('*') MCAUSER('TestUser')

    我不认为你理解这个命令。此命令表示所有连接到通道“TEST_CHANNEL”的应用程序都将使用“TestUser”的用户 ID。

    我在 Spring 中设置了用户名/密码对 用户名所在的 UserCredentialsConnectionFactoryAdapter 测试用户。

    设置密码毫无意义,因为 MQ 不执行身份验证。您需要购买第 3 方产品(即 MQAUSX)来处理身份验证。此外,您的 CHLAUTH 命令实际上会覆盖您在 Spring 应用程序中设置的任何 UserID。

    问题是我无法连接 2035 MQRC_NOT_AUTHORIZED 异常。如果我删除 'nobody'/*MQADMIN 阻止规则,一切正常(仅存在 TestUser 客户端规则的规则)。

    您是否使用 setmqaut 命令为用户 ID“TestUser”授予对队列管理器和队列的适当访问权限?

    打开队列管理器的授权事件并查看 MQ 返回 2035 的确切原因。

    【讨论】:

    • 你好,罗杰。感谢您的回答。有好几次我不明白。你能澄清一下吗? (1)。 “此外,您的 CHLAUTH 命令实际上覆盖了您在 Spring 应用程序中设置的任何 UserID”。我在文档中没有看到这一点。这个过程具体如何进行? (2)。 “您是否使用了 setmqaut 命令...”。不,我是否需要为频道提供安全机制?当然会更安全,但是如果我不提供队列安全呢? (3)。 “打开队列管理器的授权事件”。能否请您建议如何执行此操作?
    • 嗯,有 T. Rob 的回答:stackoverflow.com/questions/9416522/… 澄清了第一个答案。但是,如果我不指定用户 ID 怎么办?WebSphere 会采用此标识符并将其提供给队列管理器/队列安全机制吗?
    • 我还发现了一篇关于 setmqauth 的有趣文章:patrikvarga.blogspot.ru/2012/11/…
    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    相关资源
    最近更新 更多