【问题标题】:Difficulty connecting to Websphere MQ manager using domain authentication使用域身份验证连接到 Websphere MQ 管理器时遇到困难
【发布时间】:2016-10-04 22:03:50
【问题描述】:

这是对Can create Websphere Queue Manager but not connect的后续跟进

我正在尝试在开发机器上设置 MQ,但如果我尝试使用我的域帐户连接到它,则无法进行身份验证 (AMQ4999)。进一步挖掘,我在错误日志中发现了这一点:

AMQ8079:尝试检索组成员身份时访问被拒绝 用户“xxx@domain”的信息。

现在我很清楚 MQ 的已知问题,它无法验证域帐户,因为它无法访问其成员信息,并且从日志中确认这肯定是这里发生的事情,所以我尝试覆盖这个使用从上一篇文章中收集的以下脚本:

DEFINE CHL('DOTNET.SVRCONN') CHLTYPE(SVRCONN) MCAUSER('MUSR_MQADMIN@hostname')
SET CHLAUTH('DOTNET.SVRCONN') TYPE(BLOCKUSER) USERLIST('nobody')
SET CHLAUTH('DOTNET.SVRCONN') TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(CHANNEL) ACTION(ADD)

但是,即使有了这个通道,我在登录到我的域帐户时仍然无法连接到队列管理器。我仍然被我之前遇到的完全相同的错误所困扰。我确实注意到的一件事是 MQ Explorer 将通道报告为非活动,即使我启动了它(尽管从 IBM 网站的阅读来看这是正常的)。

我对 MQ 还是很陌生,所以我认为我要么遗漏了什么,要么做错了什么,但理想情况下,我希望能够建立一个开发环境,让我可以在不依赖服务的情况下访问服务'runas' 命令。我还应该强调,这完全是为了开发/学习,所以显然我并不关心安全性。

更新:

我发现我做错了什么——果然我错过了一步。多一点背景。创建 QM 后,我尝试使用简单的 C# 客户端连接到它。最初我编写的代码如下所示:

var queueManager = new MQQueueManager("MyQueueManager", MQC.MQCNO_STANDARD_BINDING);

此外,当尝试通过 MQExplorer 进行连接时,两者似乎都在使用我的域凭据进行身份验证。但是,当我显式创建一个属性对象并像这样指定通道时:

var props = new Hashtable() {
    [MQC.HOST_NAME_PROPERTY] = "localhost",
    [MQC.PORT_PROPERTY] = 1414,
    [MQC.CHANNEL_PROPERTY] = "DOTNET.SVRCONN",
    [MQC.USER_ID_PROPERTY] = "DevMQUser",
    [MQC.PASSWORD_PROPERTY] = "p@$$w0rd"
};

var queueManager = new MQQueueManager("MyQueueManager", props);

然后一切正常。我仍然需要以本地用户身份运行 MQExplorer.exe(即使在 Connection Details > Properties 中显式设置凭据似乎也不起作用),但这没什么大不了的。

感谢您的建议。

【问题讨论】:

  • 是否设置 MCAUSER。到本地用户 ID 而不是域限定用户 ID 会改变行为吗?
  • MCAUSER 是本地用户 ID。我已经尝试过附加主机名和不附加主机名。行为是相同的。我还尝试删除 DOTNET.SVRCONN 频道并将其替换为 * -- 无效。
  • 因此,即使使用本地定义的非域限定用户 ID,您仍然会收到与您在问题开始时显示的完全相同的错误消息,其中显示的是什么用户 ID?我还可以检查一下你确实有 CHLAUTH(ENABLED) 吗?

标签: ibm-mq


【解决方案1】:

尝试更改...
SET CHLAUTH('DOTNET.SVRCONN') TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(CHANNEL)

致...
SET CHLAUTH('DOTNET.SVRCONN') TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(MAP) MCAUSER(MUSR_MQADMIN)

USERSRC(CHANNEL) 表示使用显示给通道的 ID(在本例中为您登录帐户的本地进程 ID)来覆盖 MCAUSER

MQ 安全诊断
对于通道上的连接问题,请获取 SupportPac MS0P 并安装到 MQ Explorer。然后打开授权事件和通道事件并重新创建问题。如果连接被 CHLAUTH 记录阻塞,这将显示在通道事件队列中。如果它被 OAM 阻止,它会显示在 QMgr 事件队列中。在安装了 MS0P 的资源管理器中,右键单击“队列”面板中的队列名称会打开一个上下文对话框,其中包含“格式化事件消息”选项。选择是,MS0P 会将 PCF 消息解析为人类可读的值,这些值显示提供给 MQ 的所有参数以及它阻止连接的原因。

IBM MQ v8
如果这是 MQ 的 v8,您还需要配置 ID 和密码检查。如果 QMgr 指向指定 ID 和密码检查 (IDPWOS) 的 AUTHINFO 记录,则如果设置了 ID,则密码不能为空。即使密码身份验证设置为OPTIONAL,也会检查通道上是否存在 ID,除非特别重写,否则客户端代码将确保该 ID 为真。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多