c# - IBMMQ 上身份验证的奇怪问题,它需要正在运行的用户 ID
问题描述
当我在队列中推送消息时,我遇到了一个奇怪的问题。我已将我的应用程序配置为从 app.config 读取用户 ID/密码。当消息放入队列时,我得到了运行应用程序的用户的用户名,它是 .config 文件之一。
我用来创建 MQQueueManager 的代码是
private static readonly Lazy<MQQueueManager> lazy =
new Lazy<MQQueueManager>(() =>
{
var properties = new Hashtable();
var container = ContainerWrapper.Container;
IConfiguration configuration = container.GetInstance<IConfiguration>();
properties.Add(MQC.HOST_NAME_PROPERTY, configuration.GetValue<string>("HOST_NAME_PROPERTY"));
properties.Add(MQC.PORT_PROPERTY, configuration.GetValue<int>("PORT_PROPERTY"));
properties.Add(MQC.USER_ID_PROPERTY, configuration.GetValue<string>("USER_ID_PROPERTY"));
properties.Add(MQC.PASSWORD_PROPERTY, configuration.GetValue<string>("PASSWORD_PROPERTY"));
properties.Add(MQC.CHANNEL_PROPERTY, configuration.GetValue<string>("CHANNEL_PROPERTY"));
MQQueueManager queueManager = new MQQueueManager(configuration.GetValue<string>("QUEUE_MANAGER_NAME"), properties);
return queueManager;
});
我错过了什么吗?提前致谢
解决方案
为了让您的连接以连接时提供的用户 ID 和密码运行,您必须配置队列管理器以检查用户 ID 和密码,并且您还必须配置队列管理器以采用经过验证的用户 ID。
DISPLAY QMGR CONNAUTH
CONNAUTH 字段中的值是 AUTHINFO 对象的名称。如果为空,则不启用用户 ID 和密码检查。将其设置为适当的对象名称。
ALTER QMGR CONNAUTH(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
现在看看它的属性。
DISPLAY AUTHINFO(name-from-connauth) ALL
如果ADOPTCTK
设置为NO
,则不会采用用户 ID 作为连接的用户 ID,因此不会在消息上下文中看到。
ALTER AUTHINFO(name-from-connauth) AUTHTYPE(IDPWOS) ADOPTCTX(YES)
如果您必须进行任何更改,您现在必须发出此命令。
REFRESH SECURITY TYPE(CONNAUTH)
推荐阅读
- python-3.x - AttributeError:“列表”对象没有属性“超时”
- node.js - 更新 formik.values 时需要 Formik 奇数 (.value)
- python - SQLAlchemy 从 JSON 列表插入数据库
- python - 使用 Python 使用一个时间序列来预测另一个(不均匀间隔)
- c - 为什么函数局部变量和参数被推入堆栈?
- jquery - Bootstrap 4 悬停时更改选项卡
- c++ - 链接器找不到在虚拟类 C++ 中访问的静态字段的符号
- couchdb - 如何获取附件的子集
- powerbi - Power BI 根据切片器选择计算 MAX
- javascript - (JavaScript) 如何在three.js 中操作球体的顶点?