C# MQ Connect 出现错误 2035,但 Java MQ Connect 运行良好

2023-12-02

我用 C# 编写了一个 MQ 7.5 连接例程,如下所示,但出现“2035”错误

using IBM.WMQ;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                MQEnvironment.Hostname = "192.168.163.63";
                MQEnvironment.Port = 1418;
                MQEnvironment.UserId = "mq";
                MQEnvironment.Password = "mq";
                MQEnvironment.Channel = "ServerChannel";

                MQQueueManager queueManager = new MQQueueManager("QueueManager1418");
            } catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
        }
            Console.ReadKey();
        }
    }
}

同时/同一台机器我写了下面的 JAVA MQ 连接,效果很好!

import com.ibm.mq.MQEnvironment;
import com.ibm.mq.MQQueueManager;

public class Program {
    public static void main(String[] args) {
        MQEnvironment.hostname = "192.168.163.63";
        MQEnvironment.port = 1418;
        MQEnvironment.userID = "mq";
        MQEnvironment.password = "mq";
        MQEnvironment.channel = "ServerChannel";
        try{
            MQQueueManager queueManager = new MQQueueManager("QueueManager1418");
            System.out.println("Connected");
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
    }
}

我能做些什么?


在Java中当你设置MQEnvironment.userID到一个值,该值实际上作为断言的用户 ID 传递到 MQ 队列管理器。

在C#中设置时MQEnvironment.UserId到一个值,该值是not传递到 MQ 队列管理器,而不是将运行的 C# 进程的 ID 作为断言的用户 ID 传递。

如果断言用户未被其他配置(例如,SVRCONN频道的MCAUSER or CHLAUTH将其映射到另一个 id 的规则。

使用您的 Java 应用程序发送mq作为断言的用户 ID,并且这可能具有连接到队列管理器的适当权限,例如+connect +dsp.

使用您的 C# 应用程序,您可以发送正在运行进程的用户 ID,并且该用户 ID 可能会这样做not具有连接到队列管理器的适当权限。

这表明您的 MQSVRCONN频道有空白MCAUSER并且没有 CHLAUTH 规则来覆盖该值。

解决此问题的一种方法是设置SVRCONN频道的MCAUSER to mq。这可以通过类似的命令来完成ALTER CHL(ServerChannel) CHLTYPE(SVRCONN) MCAUSER('mq')。然后,这将覆盖断言的用户 ID,并且 MQ 将始终使用该用户 IDmq确定您拥有哪些授权,除非您有CHLAUTH将其映射到其他用户 ID 的规则。

如果将其留空,那么任何人都可以轻松断言任何用户 ID。如果您没有禁用CHLAUTH并且没有改变任何默认的CHLAUTH如果在新的 MQ 7.1 或更高版本的队列管理器上设置了规则,则默认情况下将阻止具有 MQ 管理员权限的用户 ID 进行连接。如果您确实禁用了CHLAUTH或者删除阻止具有 MQ 管理员权限的用户 ID 的规则,然后任何人都可以断言具有 MQ 管理员权限的用户 ID。

我建议您阅读有关 MQ 安全性的更多内容,以决定如何进一步保护 MQ 队列管理器。如果您还有其他问题,请使用标签将其作为新问题发布在 Stackoverflow 上ibm-mq由许多具有 MQ 知识的人(有些甚至来自 IBM)监控。

您可以在以下位置查看许多优秀的 MQ 安全相关演示:T.Rob 的网站.

Capitalware 每年都会赞助 MQ 技术会议,前几年的会议(其中许多与 MQ 安全相关)都存档在MQTC v2.0.1.7 的会话页面(看下面的底部往届 MQTC 会议).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# MQ Connect 出现错误 2035,但 Java MQ Connect 运行良好 的相关文章

  • Servlet 调度程序当前不可用

  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 使用 Box2d(适用于 Android)进行碰撞检测?

    有人可以解释一下使用 box2d for android 进行碰撞检测的工作原理吗 我无法理解 BBContactListener 以什么方式工作 BBContactListener listener new BBContactListen
  • 获取包中声明的所有 Java 类的名称

    我正在编写一个功能 它将有助于将类放入我的程序的某个包中 另外 我只想要子类某个类的类 我需要这些类才能调用它们的静态方法 有没有一种自动的方法来做到这一点 如果是的话 速度慢吗 如果我不清楚 我想要的是这样的 ArrayList
  • 如何在Java中模拟引用传递?

    我是一个十足的 Java 菜鸟 我知道 Java 将所有参数视为按值传递 并且还有其他几个线程人们对此进行了解释 例如 在 C 中我可以这样做 void makeAThree int n n 3 int main int myInt 4 m
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 私有模板函数

    我有一堂课 C h class C private template
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 在 REST Web 服务中接受逗号分隔值

    我正在尝试接收 REST URI 中以逗号分隔值形式的字符串列表 示例 http localhost 8080 com vogella jersey first rest todo test 1 abc test 其中 abc 和 test
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 如何在速度模板中检索哈希图值

    如何从速度模板中的以下哈希图中检索值 请帮忙 LinkedHashMap
  • Spring Transactional 减慢了整个过程

    我正在尝试分析我有两堂课的情况 其中一个类是 ProcessImpl 它是起点并在内部调用其他子事务 我不知道出了什么问题 processImpl正在导入一些东西并将相关数据写入数据库 Specs Spring orm版本 3 2 18 发
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当
  • 如何创建具有同等时间元素的 JavaFX 转换?

    我正在尝试 JavaFX 和动画 尤其是PathTransition 我正在创建一个简单的程序 使球 弹跳 而不使用QuadCurveTo班级 到目前为止 这是我的代码 Ellipse ball new Ellipse 375 250 10
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐