jjzjj

java - WebSphere Application Server 7.0 在连接到 MQ 时忽略 Windows userId

coder 2024-06-05 原文

有没有人遇到过 WAS 在连接到 Websphere MQ 资源时不使用 Windows 用户名的问题?我们的开发者盒子过去都没有遇到过这个问题,他们已经能够将用户名发送给 MQ 进行授权。但是我们有一台新的开发人员机器,它似乎没有发送用户名,因此无法连接到 MQ。

我们尝试使用 DefaultPrincipalMapping 为 QCF 指定 J2C 身份验证别名,但这没有用。

解决方案:发现问题是服务器作为 Windows 服务安装和运行。当我们创建一个由用户运行而不是作为服务运行的新服务器配置文件时,它在连接到 MQ 时使用 Windows 用户名。

最佳答案

我怀疑问题实际上可能与您描述的相反。在旧版本的 WAS 中,如果 User ID field of the Connection Factory panel留空,WAS 将发送一个空白 ID。 WebSphere MQ 没有任何值(value)可以传递给对象权限管理器,因此 channel 将在消息 channel 代理进程的权限下运行——这始终是管理性的。因此,旧版本的 WAS 通常以管理权限运行,尽管这一点并未得到广泛认可。您可以通过查看正在运行的 channel 的状态并查看 MCAUSER 字段是否为空来验证这一点。

如果配置面板为空,较新版本的 WAS 现在会更加努力地寻找要发送到 WMQ 的 ID。由于这种新安装和现有安装的升级通常无法使用以前工作的相同 channel 向 WMQ 授权。

所有这一切中有趣的部分是,如果 QMgr 在 MCAUSER channel 属性上具有空白值,那么这是一个问题的唯一方式。如果 QMgr 有一个空白的 MCAUSER 并且没有导出在 CONNECT 时间设置 MCAUSER,那么该 channel 允许管理访问。如果 channel 没有设置 SSLPEER 的 SSL 或用于验证连接的导出,则匿名用户可以使用该管理访问权。为什么这是一个问题?因为 WebSphere MQ 具有根据消息的到达启动 OS 命令的能力。这意味着任何拥有 WMQ 管理员权限的用户都可以远程执行任意操作系统命令,作为软件的一项功能。因此,如果要对流经网络的消息负责,则必须锁定此功能,即使来自合法应用程序也是如此。

您的应用能够提供一个成功的 ID 和另一个失败的 ID 的事实似乎表明 QMgr 允许管理访问,我敢打赌,这样做是为了匿名连接。哦!修复 QMgr 的安全性比通过在 WAS 中设置“正确的”ID 来修复连接问题要好得多。有关更多信息,请参阅 Hardening WebSphere MQ 来自 IMPACT session 的演讲。

关于java - WebSphere Application Server 7.0 在连接到 MQ 时忽略 Windows userId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299074/

有关java - WebSphere Application Server 7.0 在连接到 MQ 时忽略 Windows userId的更多相关文章

随机推荐