2013-06-27 14 views
1

我们目前正在为我们的SVRCONN通道实施安全退出。此退出将验证我们的LDAP(AD或UNIX)。我们目前的退出实施仅适用于来自MQ EXPLORER的连接。WMQ安全退出用户标识/密码传递问题

当我们编写代码来连接并传递userID/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

+0

请使用代码标记代替blockquote。删除'>'并用4个空格替换。 – laalto

+0

@laalto完成编辑。 – user2527267

回答

1

世界为什么时,有一个便宜的产品,不针对LDAP服务器验证,你会重新发明轮子呢?如果您花了超过一天的时间对此进行编程,您可以购买MQ Authenticate Security Exit的许可证并执行其他操作。

MQ只以纯文本形式输入密码。如果您熟悉MQ或者只是使用WireShark,那么很容易获取该密码,因为它知道/了解MQ协议。

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

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

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

您将很容易花费6个月的时间(即1000小时)来构建覆盖我突出显示的一些问题的工作原型。你正处于一个受到伤害的世界。我知道,我一直在那里做。

相关问题