MQ8 + JDk8 的授权错误

2023-12-02

当使用 JMS 示例代码时,放置在应用程序中,使用 MQ8 + JDk8 时出现低于授权错误

MQException received while attempting reconnect: Reason Code=2035
 Exception text: com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2035'.

AMQERR01.LOG 说

AMQ8077: Entity 'clientadmin' has insufficient authority to access object
'TLSTEST.QM'.

EXPLANATION:
The specified entity is not authorized to access the required object. The
following requested permissions are unauthorized: connect
ACTION:
Ensure that the correct level of authority has been set for this entity against
the required object, or ensure that the entity is a member of a privileged
group.

AMQ9557: Queue Manager User ID initialization failed for 'clientadmin'.

EXPLANATION:
The call to initialize the User ID 'clientadmin' failed with CompCode 2 and Reason
2035.
ACTION:
Correct the error and try again.

执行的步骤如下站点和命令,但无法解决问题

http://www-01.ibm.com/support/docview.wss?uid=swg21680930
http://www-01.ibm.com/support/docview.wss?uid=swg21577137
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
REFRESH SECURITY TYPE(CONNAUTH)

ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(NONE)
REFRESH SECURITY TYPE(CONNAUTH)

ALTER QMGR CHLAUTH(DISABLED)

使用以下命令解决

删除 'SecurityPolicy=user' ,仅按如下方式设置身份验证并重新启动 QM

setmqaut -m TLSTEST.QM -t qmgr -p clientadmin +all
setmqaut -m TLSTEST.QM -t queue -p clientadmin -n RECEIVE +all
setmqaut -m TLSTEST.QM -t queue -p clientadmin -n SEND +all

只是想知道,如何在 qmgr 的所有队列中设置“+all”?将为 qmgr 中的所有队列设置@通道级别吗?

使用以下命令和设置成功运行

'SecurityPolicy=user'  
    setmqaut -m TLSTEST.QM -t qmgr -p clientadmin +connect +dsp +inq
    setmqaut -m TLSTEST.QM -t queue -p clientadmin -n RECEIVE +put +get +browse +dsp +inq
    setmqaut -m TLSTEST.QM -t queue -p clientadmin -n SEND +put +get +browse +dsp +inq

AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)如果发送密码,则要求该密码是有效的。

The AMQ8077您收到的错误是因为用户没有连接到队列管理器的权限。

您必须授予 OAM 权限才能允许clientadmin to connect到队列管理器。


默认情况下,在 Linux 上,您只能向用户所属的组授予 MQ OAM 权限,在您的情况下,该组是clientadmin是 的成员。在 MQ v8.0 及更高版本中,如果以下设置已添加到 qm.ini,您还可以向用户本身授予 OAM 权限:

Service:
   SecurityPolicy=user

上述设置不是必需的,它只是允许两种不同的方式授予 OAM 权限。这记录在 IBM MQ v8.0 知识中心页面“校长及团体”。该页面指出:

UNIX 和 Linux 系统

ACL 基于用户 ID 和组,您可以使用其中任何一个进行授权。

在版本 8.0 中,您可以使用基于用户的模型进行授权,这允许您同时使用用户和组。但是,当您在setmqaut命令时,新权限仅适用于该用户,而不适用于该用户所属的任何组。

See 可安装服务了解更多信息。

当您使用基于组的模型进行授权时,用户 ID 所属的主组将包含在 ACL 中。

不包括个人用户 ID,并且权限授予该组的所有成员。因此,请注意,您可能会通过更改同一组中另一个主体的权限而无意中更改主体的权限。

这记录在 IBM MQ v8.0 知识中心页面“可安装服务”。该页面指出:

SecurityPolicy=用户|组|默认

在 UNIX 和 Linux 系统上,该值指定队列管理器是否使用基于用户或基于组的授权。值不区分大小写。 如果不包含此属性,则使用默认值,即使用基于组的授权。重新启动队列管理器以使更改生效。


要授予 OAM 权限以连接到某个组的队列管理器,您可以使用 MQSC 命令来执行此操作SET AUTHREC:

SET AUTHREC PROFILE('self') GROUP('groupname') OBJTYPE(QMGR) AUTHADD(CONNECT,DSP,INQ)

使用命令行工具也可以完成同样的工作setmqaut:

setmqaut -m <queue_manager_name> -t qmgr -g groupname +connect +dsp +inq

要授予 OAM 权限以针对用户本身连接到队列管理器,您可以使用 MQSC 命令来执行此操作SET AUTHREC:

SET AUTHREC PROFILE('self') PRINCIPAL('clientadmin') OBJTYPE(QMGR) AUTHADD(CONNECT,DSP,INQ)

使用命令行工具也可以完成同样的工作setmqaut:

setmqaut -m <queue_manager_name> -t qmgr -p clientadmin +connect +dsp +inq

您还需要授予对要访问的队列的 PUT 或 GET 访问权限。以下示例使用 MQSC 命令SET AUTHREC正在使用主体,但如果需要,您可以将其更改为使用组:

SET AUTHREC PROFILE('QUEUE.NAME') PRINCIPAL('clientadmin') OBJTYPE(QUEUE) AUTHADD(PUT,GET,BROWSE,DSP,INQ)

使用命令行工具也可以完成同样的工作setmqaut:

setmqaut -m <queue_manager_name> -t queue -p clientadmin +put +get +browse +dsp +inq

更新2017/02/21

不建议在没有 SecurityPolicy=user 的情况下使用 -p 在 Linux 上设置权限。这是因为此操作不会针对使用 -p 指定的用户设置权限,而是针对运行命令时该用户的主要组设置权限。

这可能会导致各种情况,我能想到的一些例子如下:

  1. 如果您有两个用户具有相同的主要组,并且您为他们提供了不同的访问级别,那么他们最终都会获得与您运行的最后一个 setmqaut 命令所产生的相同的访问级别。
  2. 即使您一开始就为他们提供了相同级别的访问权限,您可能希望删除这两个用户之一的访问权限,并使用该权限发出类似的命令-remove指定的。结果会not您删除了两个用户之一的访问权限,但您却删除了两个用户的访问权限。
  3. UNIX 帐户的主要组更改并不罕见。如果用户在更改后不是与辅助组相同的组的成员,他们将失去对 MQ 的访问权限。

也不建议向非管理用户提供+all,如果您这样做,您不妨将用户添加到mqm组并为他们提供完整的 MQ 管理权限。

您应该向用户提供所需的特定权限。我在示例中提供了一组适用于大多数应用程序的有限权限。

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

MQ8 + JDk8 的授权错误 的相关文章

  • Open Liberty 中是否有连接到 IBM MQ 的“功能”,相当于 Liberty Profile 中的 wmqJmsClient-2.0?

    IBM WebSphere Liberty Profile提供了 wmqJmsClient 2 0 交互功能IBM MQ 有与开放自由相当的东西吗 更新 如果没有 看起来如此 如何将 Open Liberty 连接到 IBM MQ 我是否应
  • IBM MQ 8 的 JMeter 3.2 点对点配置 => Java 异常

    我尝试对 IBM MQ 8 使用 JMeter 点对点 JNDI 配置并收到以下错误消息 java lang IllegalStateException QueueConnectionFactory expected but got com
  • com.ibm.mq.MQException:MQJE001:完成代码“2”,原因“2035”

    我正在构建一个应该能够连接到 IBM WebSphere MQ 队列管理器的 Java 应用程序 但我不明白为什么我不断收到此错误 我已经使用我的用户 ID 拥有管理权限setmqaut通过 MQ 资源管理器 我还定义了MCAUSER在我的
  • Amqmdnet - 打开/关闭每条消息的队列是否高效?

    我们有一些代码将消息发送到队列 它使用 amqmdnet dll 版本 8 0 0 6 队列管理器 Queuemanager 在应用程序启动时实例化一次并在整个应用程序中使用 发送消息时 会创建一个队列对象 然后将其关闭 我们应该为每条消息
  • C#/.NET 的 MQ 统计监控

    我们与之交易 MQ 数据的供应商之一有一个监视器 显示以下内容 我自己编写了一个 C 监视器 每 x 分钟拍摄一次队列深度的快照 但我想知道如何获取排队和出队的消息数 在我看来 这两个统计数据具有不同的性质 对我来说 队列深度是在给定的时间
  • 如何连接到部署到 OpenShift 的 IBM MQ?

    我有一个带有 IBM MQ 的容器 Docker 镜像ibmcom mq 9 2 2 0 r1 暴露两个端口 9443 管理 1414 应用程序 OpenShift 中所有必需的设置均已完成 Pod 服务 路由 有两条路线 每个港口一条 h
  • IBM MQ8.0 - AMQ9503 通道协商失败

    当在客户端通道 SVRCONN 启用 SSL 时 我从 Java 客户端连接到 IBM MQ8 0 时遇到问题 当在通道上禁用 SSL SSLAUTH 为可选 时 流程工作正常 客户端是java JRE1 7 MQ服务器版本为IBM MQ8
  • 无法连接 Websphere MQ 队列管理器

    我是 WebSphere MQ 的初学者 我正在研究 MQ 6 并且它工作正常 但现在我已经安装了 MQ 7 1 当我尝试创建一个新的队列管理器时 我可以做到 但它无法连接并且它给了我以下错误 你对此有什么想法吗 谢谢 如果使用以下命令安装
  • SingleWrite 与 TripleWrite

    我非常清楚何时何地使用 SingleWrite 作为 MQ 中的日志算法是有利的 它有利于高吞吐量 低并发工作负载 当工作负载更加并发时 TripleWrite 的开销就不那么重要了 我不明白并且正在努力寻找任何有关 TripleWrite
  • 使用 spring 在 Ibm Websphere MQ 中实现重试逻辑

    我正在使用 Spring 和 Websphere MQ 进行以下消息传递配置 我需要实现一个场景的重试逻辑 其中我从队列接收消息并将消息数据放到弹性搜索服务器 搜索服务器是非事务性的 如果搜索服务器关闭 我必须回滚消息再次放入队列并在一段时
  • IBM MQ 消息监听器

    您好 有谁知道如何使用 IBM MQ 创建消息监听器 我知道如何使用 JMS 规范来做到这一点 但我不确定如何为 IBM MQ 做到这一点 非常感谢任何链接或指针 虽然前面的响应者指出有一个 WMQ Java API 但 WMQ 也支持 J
  • JMS MQ绑定问题

    我在使用 MDB 与 MQ 队列绑定 JMS 时遇到了这个奇怪的问题 消息驱动的 EJB CrbEventMessageAsynchronousService无法连接到 JMS 目标 queue contratto crb input pu
  • Spring Batch - 并非所有记录都通过 MQ 检索进行处理

    我对 Spring 和 Spring Batch 相当陌生 所以如果您有任何疑问 请随时提出任何澄清问题 我发现 Spring Batch 存在问题 无法在测试或本地环境中重新创建 我们的日常工作是通过 JMS 连接到 Websphere
  • NoClassDefFoundError(初始化失败) - Websphere 和 IBM MQ

    我在部署到 Websphere 并与 IBM MQ 交互的基于 Spring 的 Web 应用程序上遇到问题 一切都很好 直到我尝试一些故障测试 当 Web 应用程序启动并运行时 我停止 IBM MQ 然后 我调用 Web 应用程序发送 J
  • WebSphere MQ 确认和回复队列

    我们通过远程队列定义 CLIENT DATA 传输队列 发送 接收通道等 从队列管理器 QM MINE 队列管理器 QM CLIENT 和队列 CLIENT DATA 发送 XML 文本消息 消息到达目的地 客户端的 CLIENT DATA
  • 接收 Websphere MQ 消息时如何执行显式 ACK?

    我有一个应用程序正在侦听 IBM Websphere MQ 队列上的消息 一旦消息被使用 应用程序就会执行一些处理逻辑 如果处理完成正常 我希望应用程序确认该消息并将其从队列中删除 如果处理时发生错误 我希望该消息保留在队列中 这是如何实施
  • 有没有办法更改 Nifi 中 PublishJMS 处理器的交付模式?

    我使用 Nifi PublishJMS 处理器向 IBM MQ 发送消息 消息在 MQ 中具有持久性 持久性 我想将其更改为非持久性 Nifi PublishJms 处理器中是否有属性可以纠正此问题 或者是从MQ端完成的 我无权访问 MQ
  • 启发式参与者永无休止的定期恢复

    几天来我们的日志里一直充斥着这样的消息 2018 06 15 12 19 23 WARN com arjuna ats arjuna Periodic Recovery Transaction 0 ffff0a983f1e 1f3aa2ff
  • 收到错误:WebSphere MQ 原因代码 2538?

    我在 Linux 上安装了 WebSphere MQ 和 WebSphere Message Broker 当我执行mqsicreateexecutiongroup我收到一条错误消息 BIP1046E 无法连接到队列管理器 无法连接到队列管
  • com.ibm.msg.client.jms.DetailedJMSException:JMSWMQ0018:无法使用连接模式“yyy”和主机名“zzz”连接到队列管理器“xxx”

    JMS 应用程序需要七个参数才能与此处给出的 MQ 系列成功建立 SSL 连接 https github com ibm messaging mq tls ssl wizard blob master com ibm mq ssl wiza

随机推荐

  • 从 api 调用通过服务返回到组件的数据是一个对象,对于 Angular 来说似乎需要是一个数组

    我收到返回的数据 效果很好 工作数据是 data Array 16 不起作用的数据是这样的 data Menu1Items Array 5 gt 0 etc 我正在使用 Angular 5 因此服务返回这样的数据 map response
  • 错误:MacOS 上“全局命名空间中没有名为‘uint8_t’的成员”

    Chriss MacBook Pro 2 build louisduplessis cmake make In file included from Library Developer CommandLineTools usr includ
  • vim 映射

    我正在与 Cygwin Mintty Vim 合作 With
  • 如何在 SslStream.AuthenticateAsClient 方法中使用证书回调?

    当我在 IE 中手动导入证书 工具 Internet 选项 内容 证书 时 我的 C NET SSL 连接可以正常工作 但如何通过代码加载证书 这是我的代码 TcpClient client new TcpClient ConfigMana
  • 如何获取 Scala 列表中多次出现的所有元素的集合?

    例如 为了List 1 1 1 2 3 3 4 这将是Set 1 3 因为 1 和 3 是唯一出现多次的元素 val s List 1 1 1 2 3 3 4 a list with non unique elements s diff s
  • 使用 javascript 和 PHP 生成相同的 MD5

    我正在尝试构建一个需要比较任何文件的 MD5 哈希值的应用程序 由于具体问题 上传前 客户端必须生成MD5 上传后应用程序需要在服务器端检查MD5 我的第一个方法是在客户端使用 JavaScript File API 和FileReader
  • Google App Engine 数据存储区,在更新几秒钟之前返回

    所以我需要在数据存储中更新值 我正在使用事务这样做 如下所示 提交更新后 我将结果发送回客户端 让他们知道更新已完成 然后 客户端发送另一个请求以获取更新的项目列表 据我所知 所有代码都正确执行 没有抛出任何错误 最终我确实得到了按预期显示
  • 如何拆分字符串而不在数组中插入空字符串

    假设存在匹配项 我在使用正则表达式从字符串中分割字符时遇到问题 我想从字符串的第一部分中分离出 m 或 f 字符 假设下一个字符是一个或多个数字 后跟可选的空格字符 后跟我拥有的数组中的字符串 I tried 2 4 0 006 gt MY
  • 写入堆内存时调用系统调用

    我知道 malloc sbrk 是调用的系统调用 同样 当我写入 malloed 内存 堆内存 时调用的系统调用是什么 int main 10 byte of heap memory allocated char ptr malloc 5
  • 使用 Javascript 更改元素的位置

    这应该会在每次循环时将段落 带有 id Text 的位置更改为更向右 但它不起作用 我不知道如何解决它 所以如果有人可以帮助我 我会很高兴 先感谢您 var x 0 d style position absolute function my
  • java中如何获取屏幕分辨率? [复制]

    这个问题在这里已经有答案了 可能的重复 屏幕分辨率java Hi Java中如何获取屏幕分辨率 您可以使用 AWT 工具包 Dimension screenSize Toolkit getDefaultToolkit getScreenSi
  • 尝试在 ScriptDb 中存储数组时出错

    我有一个由脚本创建的对象数组 我尝试将该数组复制到一个新数组中 然后使用以下函数将其存储在 scriptDb 中 function copyAndStore currentArray var db ScriptDb getMyDb var
  • 如何使用 iOS SDK 覆盖其他应用程序

    Android 拥有一项权限 允许应用程序通过浮动内容 覆盖其他应用程序 使用 SYSTEM ALERT WINDOW允许 iOS 有类似的东西吗 不 这是不可能的 用户只能与当前位于前台的任何应用程序进行交互
  • ElasticSearch NEST 5.6.1 单元测试的查询

    我向弹性搜索编写了一堆查询 我想为它们编写一个单元测试 使用这篇文章最小起订量弹性连接我能够进行一般性的嘲笑 但是当我尝试查看从查询生成的 Json 时 我没有设法以任何方式获取它 我尝试关注这篇文章弹性查询最小起订量 但它仅与旧版本的 N
  • AlarmManager 会在断电时删除所有计划吗?

    我已经在特定时间设置了闹钟 如果手机关机了闹钟会丢失吗 我已关闭手机 然后再次启动 但闹钟未在指定时间触发 PendingIntent pendingIntent PendingIntent getBroadcast Global a ge
  • 我应该使用 data.frame 还是矩阵?

    什么时候应该使用data frame 什么时候最好使用matrix 两者都以矩形格式保存数据 因此有时会不清楚 对于何时使用哪种数据类型有什么通用的经验法则吗 部分答案已包含在您的问题中 如果列 变量 预计为不同类型 数字 字符 逻辑等 则
  • Pandas:添加包含其他列计算的列

    我有一个带有测量值的 csv YY MO DD HH MI SS SSS x y 2015 12 07 20 51 06 608 2 4 2015 12 07 20 51 07 609 3 4 我想添加另一列 其中 x 2 y 2 之和的平
  • 检查 C# 中的 WMI 命名空间是否存在

    我想检查某台机器上是否安装了某个功能 我有一个 powershell 代码来检查这一点 现在我想从 net 代码中检查这一点 我可以看到在 cmdlet 中 代码检查是否有invalid namespace error 在网上搜索时 我发现
  • Apache Kafka 和 JMS 之间的连接

    我想知道 Apache Kafka 可以通信并将消息发送到 JMS 吗 我可以在它们之间建立连接吗 例如 我在我的系统中使用 JMS 它应该将消息发送到使用 Kafka 的其他系统 回答有点晚了 但如果我正确理解了要求 如果要求是同步消息传
  • MQ8 + JDk8 的授权错误

    当使用 JMS 示例代码时 放置在应用程序中 使用 MQ8 JDk8 时出现低于授权错误 MQException received while attempting reconnect Reason Code 2035 Exception