2014-11-09 2 views
0

여기 내 문제가 있습니다.IBM MQ 큐에 액세스하는 동안 DetailedJMSSecurityException

IBM MQ V7.1의 평가판을 사용 중입니다. 큐 관리자 MYQM, 채널 MY_SVRCONNMCA User Id abc을 작성했습니다. abc 사용자에게 MYQM에 액세스했습니다. 대기열에 메시지를 넣으려고합니다. Q1. 그러나 대기열 연결을 얻는 동안 나는 예외 아래지고있다.

com.ibm.msg.client.jms.DetailedJMSSecurityException : JMSWMQ2013 : 보안 인증이 연결 모드 '클라이언트'호스트 이름 '(1500)'와 여기서 queueManager 'MYQM'에 대해 제공 한이 유효하지 않습니다. 연결하려는 QueueManager에서 제공된 사용자 이름과 암호가 올바른지 확인하십시오.

아래의 명령을 사용하여 abc 사용자가 MYQM에 액세스 할 수 있습니다.

[[email protected] ~]$ setmqaut -m MYQM -t qmgr -p abc +connect 
The setmqaut command completed successfully. 

는 여기에 내가 WebSphere 7, configuring JMS Q connection factory without user id: MQRC_NOT_AUTHORIZED으로 시도 내 자바 프로그램

public class MqPut 
{ 
    public static void main(String[] args) 
    { 
     sendMsg("Sample Message"); 
    } 
    public static void sendMsg(String msg) 
    { 
     MQQueueConnectionFactory connectionFactory = null; 
     QueueConnection queueConn = null; 
     QueueSession queueSession = null; 
     QueueSender queueSender = null; 
     TextMessage message = null; 

     try 
     { 
     connectionFactory = new MQQueueConnectionFactory(); 
     connectionFactory.setHostName(<MQ SERVER IP>); 
     connectionFactory.setPort(1500); 
     connectionFactory.setTransportType(WMQConstants.WMQ_CLIENT_NONJMS_MQ); 
     connectionFactory.setQueueManager("MYQM"); 
     connectionFactory.setChannel("MY_SVRCONN"); 
     queueConn = connectionFactory.createQueueConnection("abc","password"); 
     queueSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); 
     queueSender = queueSession.createSender(queueSession.createQueue("Q")); 
     queueSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT); 
     message = queueSession.createTextMessage(msg); 
     queueSender.send(message); 
     queueConn.close(); 
     } 
     catch (Exception je) 
     { 
      je.printStackTrace(); 
     } 
    } 
    } 

이지만, 여전히 내 문제는 유지됩니다. 나는 내가 잘못하고있는 것을 얻지 못하고있다. 어떤 도움을 주셔서 감사합니다.

편집

사용자 ABC는

답변

1

당신이 SVRCONN 채널의 사용자에 대한 chlauth (채널 인증)을 설정 되세요 MQM 그룹의 일부가 아닌? 채널 인증은 MQ 7.1 이후부터 새로 추가되었습니다. 암호 유효성 검증은 MQ 8에서만 사용 가능합니다. 기본적으로 qmgr svrconn 채널에서 클라이언트 IP의 원격 연결을 허용해야합니다. MQSC 콘솔 SET의 CHLAUTH에서

시도 (MY_SVRCONN) TYPE (ADDRESSMAP) 주소 (클라이언트 컴퓨터의 IP) USERSRC (CHANNEL)이 나던 작업하는 경우

는 QMGR 로그를 확인하십시오. 그것은 바로 여기서 발견 된 2035 좋은 기술 문서의 원인이 무엇이라고해야 http://www-01.ibm.com/support/docview.wss?uid=swg21577137 모라 그의 정말 유용한 블로그 당신이 항상 큐 관리자 AMQERR01.LOG에 보일 것입니다 기억, 큐 관리자에서 다시 오류를 얻을 때마다

+0

응답 해 주셔서 감사합니다. 아래의 변경을 수행 한 후에 대기열에 메시지를 넣을 수 있습니다. 'MCA User Id'를 비워두고 내 프로그램의'queueConn = connectionFactory.createQueueConnection ("", "password");'에 설정하십시오. 나는 당신의 제안을 시도 할 것이다. – atom

1

https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/blocked_by_chlauth_why?lang=en 자세한 설명은 이는 특히 보안 관련 오류의 경우에 해당됩니다. JMS 예외 JMSWMQ2013으로 번역 된 단일 오류 코드 (MQRC_NOT_AUTHORIZED (2035))만이 잠재적 인 해커에게 세부 정보를 제공하지 않도록 응용 프로그램에 반환되기 때문입니다. 세부 사항은 항상 큐 관리자 오류 로그를 확인해야합니다.

+0

안내에 감사드립니다. 귀하의 [블로그] (https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/blocked_by_chlauth_why?lang=en)는 많은 의문점을 해소했습니다. 다시 한번 감사드립니다. – atom

0

개발 환경 (WMQ 8.0)에서는 권한 부여를 수정하여 선택적으로 사용하는 것을 선호합니다.

ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL) 
REFRESH SECURITY TYPE(CONNAUTH) 

는 WMQ 7.1에서

, 채널 인증이 비활성화로 설정하는 것이 가능하다 (이 기능을 비활성화하는. 때문에 보안 문제에 생산 큐 관리자에 대한 권장하지 않습니다)하지만 작업 할 나타나지 않습니다 WMQ 8.0

ALTER QMGR CHLAUTH(DISABLED)