【问题标题】:WMQ Security Exit UserID/PWD passing issueWMQ 安全出口用户 ID/PWD 传递问题
【发布时间】:2013-06-27 08:50:40
【问题描述】:

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

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

这是一个关于我们如何连接到 MQ 的 sn-p

代码:

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/密码。 代码:

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

【问题讨论】:

  • 请使用代码标记而不是块引用。删除 > 并替换为 4 个空格。
  • @laalto 完成编辑。

标签: c api ibm-mq mq


【解决方案1】:

既然有针对 LDAP 服务器进行身份验证的廉价产品,您究竟为什么要重新发明轮子?如果您花了一天以上的时间对此进行编程,则可以购买 MQ Authenticate Security Exit 的许可证并做其他事情。

MQ 仅以纯文本形式传输密码。如果您熟悉 MQ 或仅使用 WireShark,因为它知道/理解 MQ 协议,很容易获取该密码。

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

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

MQ JNDI 或 CCDT(客户端通道表定义)或新的“MQClient.ini”文件怎么样?你有没有想过你将如何处理这些实现?

您将轻松地花费 6 个月(即 1000 小时)构建一个涵盖我强调的一些问题的工作原型。你进入了一个受伤的世界。我知道,我去过那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 2010-12-24
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    相关资源
    最近更新 更多