2013-06-27 2 views
1

현재 SVRCONN 채널에 대한 보안 종료를 구현 중입니다. 이 exit는 LDAP (AD 또는 UNIX)에 인증됩니다. 현재 exit 구현은 MQ EXPLORER에서 오는 연결 만 작동합니다.WMQ 보안 종료 사용자 ID/PWD 전달 문제

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 서버 ->

+0

blockquote 대신 코드에 대한 코드 마크 업을 사용하십시오. '>'를 제거하고 4 개의 공백으로 대체하십시오. – laalto

+0

@laalto 완료되었습니다. – user2527267

답변

1

7.1.0.2 LDAP 서버에 대해 인증을 수행하는 싼 상품이 왜 세계에서 당신이 바퀴를 다시 발명하는 것? 이 프로그램을 프로그래밍하는 데 하루 이상을 소비 한 경우 대신 MQ 인증 보안 종료를위한 라이센스를 구입하여 다른 작업을 수행 할 수 있습니다.

MQ는 암호 만 일반 텍스트로 전달합니다. MQ에 대해 잘 알고 있거나 MQ 프로토콜을 알고 있거나 이해하고 있기 때문에 WireShark 만 사용하면 매우 간단합니다.

MQ는 "이전"및 "새"스타일로 클라이언트와 서버간에 UserID와 Password를 전달하는 두 가지 스타일을 사용합니다. 플랫폼마다 다른 스타일을 지원합니다. 일부는 직접적으로 지원하고 일부는 간접적으로 지원하고 일부 플랫폼은 동시에 변환과 흐름을 수행합니다 (매우 이상합니다!).

응용 프로그램을 다시 작성할 수없는 경우 MQCONNX를 사용하기 위해 모든 응용 프로그램을 다시 작성할 수 있으면 좋을까요? 또는 애플리케이션 팀이이를 원하지 않거나 소스 코드가 손실됩니다. MQCONNX를 지원하지 않는 타사 응용 프로그램은 어떻습니까? 너 뭐 할거 니?

MQ JNDI 또는 CCDT (클라이언트 채널 테이블 정의) 또는 새로운 "MQClient.ini"파일은 어떻습니까? 이러한 구현을 어떻게 처리 할 것인지 생각 해보았습니까?

내가 강조한 몇 가지 문제를 다루는 실제 프로토 타입을 만드는 데 6 개월 (즉, 1000 시간)을 쉽게 쓸 것입니다. 너는 상처의 세계에 빠져있다. 알아, 나는 그곳에서 해왔다.