gpt4 book ai didi

c - WMQ 安全退出 UserID/PWD 传递问题

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:00 27 4
gpt4 key购买 nike

我们目前正在为我们的 SVRCONN channel 实现安全导出。此导出将对我们的 LDAP(AD 或 UNIX)进行身份验证。我们当前的导出实现仅适用于来自 MQ EXPLORER 的连接。

当我们编写代码来连接并传递用户 ID/PWD 时,安全导出会获取客户端计算机上的用户帐户登录信息。

这是我们如何连接到 MQ 的片段

代码:

MQCNO ConnectOptions = {MQCNO_DEFAULT};
MQCD ClientConn = {MQCD_CLIENT_CONN_DEFAULT};
MQCSP mqCSP = {MQCSP_DEFAULT};
MQHCONN HConn;
MQLONG CompCode;
MQLONG Reason;
char QMName[MQ_Q_MGR_NAME_LENGTH+1]="QMGRNAME";
char channelName[MQ_CHANNEL_NAME_LENGTH+1]="MY_CHANNEL";
char hostname[1024]="MQSERVER(PORT)";
char UserId[32+1]="MyID";
char Password[32+1]="MyPWD";
strncpy(ClientConn.ConnectionName, hostname, MQ_CONN_NAME_LENGTH);
strncpy(ClientConn.ChannelName, channelName, MQ_CHANNEL_NAME_LENGTH);
mqCSP.AuthenticationType = MQCSP_AUTH_USER_ID_AND_PWD;
mqCSP.Version = MQCSP_VERSION_1;
mqCSP.CSPUserIdPtr = &UserId;
mqCSP.CSPUserIdOffset = 0;
mqCSP.CSPUserIdLength = strlen(UserId);
mqCSP.CSPPasswordPtr = &Password;
mqCSP.CSPPasswordOffset = 0;
mqCSP.CSPPasswordLength = strlen(Password);
ConnectOptions.SecurityParmsPtr = &mqCSP;
ConnectOptions.SecurityParmsOffset = 0;
ConnectOptions.ClientConnPtr = &ClientConn;
ConnectOptions.Version = MQCNO_VERSION_5;
MQCONNX (QMName, &ConnectOptions, &HConn, &CompCode, &Reason);

然后我们使用此代码在安全导出处检索用户 ID/PWD。代码:

memset (User, 0, pChDef->LongRemoteUserIdLength);
memset (Pass, 0, MQ_PASSWORD_LENGTH);
MakeCString(User,pChDef->LongRemoteUserIdPtr,pChDef->LongRemoteUserIdLength);
MakeCString(Pass,pChDef->RemotePassword,MQ_PASSWORD_LENGTH);

MQ 服务器->7.1.0.2

最佳答案

既然有一种针对 LDAP 服务器进行身份验证的廉价产品,您为什么还要重新发明轮子呢?如果您花了超过一天的时间对此进行编程,那么您可能已经购买了 MQ Authenticate Security Exit 的许可证并执行其他操作。

MQ 只流明文密码。如果您熟悉 MQ 或仅使用 WireShark,则很容易获取该密码,因为它知道/了解 MQ 协议(protocol)。

MQ 使用 2 种不同的方式在客户端和服务器之间传输用户 ID 和密码:“旧”和"new"方式。不同的平台支持不同的风格。有些直接支持,有些则间接支持,有些平台同时进行转换和流动(非常奇怪!)。

如果您的所有应用程序都可以重建以使用 MQCONNX,那很好,如果无法重建应用程序怎么办?或者应用团队不想做或者源代码丢失了。不支持 MQCONNX 的第 3 方应用程序怎么办?你要做什么?

MQ JNDI 或 CCDT(客户端 channel 表定义)或新的“MQClient.ini”文件怎么样?您是否考虑过如何处理这些实现?

您将轻松花费 6 个月(即 1000 小时)来构建一个工作原型(prototype),该原型(prototype)涵盖我强调的一些问题。你处在一个充满伤害的世界里。我知道,我去过那里。

关于c - WMQ 安全退出 UserID/PWD 传递问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17338706/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com