2011-05-16 112 views
6

我有一個WebSphere 6實例和一個WebSphere 7實例。每個實例都有一個WebSphere MQ消息傳遞提供程序,一個隊列連接工廠和一個以類似方式配置的隊列。所有用戶ID字段留空,並且認證別名保留在「無」。WebSphere 7,配置沒有用戶標識的JMS Q連接工廠:MQRC_NOT_AUTHORIZED

在WAS6中它工作正常。

在WAS7我得到一個錯誤:

JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'MYQMNGR' with connection mode 'Client' and host name '10.11.22.33(51001)'.; nested exception is com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'MYQMNGR' with connection mode 'Client' and host name '10.11.22.33(51001)'. Please check if the supplied username and password are correct on the QueueManager you are connecting to; nested exception is com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').

如果沒有用戶ID提供什麼可WAS7連接到MQ相比WAS6的方式有什麼不同?

我沒有任何可見性或訪問該MQ(版本7),它從WAS 6訪問時不需要用戶ID,所以我需要讓WAS7工作相同。

回答

12

在WAS 6中,如果您將用戶標識留在管理面板空白處,則將空白傳遞給WMQ。即使無法確定遠程用戶,WMQ也會運行該通道,並且在這種情況下,通道將使用始終處於管理狀態的消息通道代理(MCA)的權限運行。因此,在V6中,它起作用。

自V7開始,WMQ客戶端將嘗試更加困難地確定在WAS管理控制檯中將其留爲空白並通過CONNECT調用傳遞該ID的JVM ID。這是2035的來源。

解決此問題的正確方法是WMQ管理員應該在SVRCONN通道的MCAUSER字段中放置一個低特權ID。該ID應該被授權給Java EE服務器需要的任何隊列,但不能授予命令隊列和各種其他管理隊列。這將解決WAS 7發送無法識別的ID 的問題,它可以防止任何類型的遠程客戶端在該頻道上獲得管理員訪問權限。

另一種方法是轉到WAS管理面板進行WMQ連接,並將用戶標識設置爲mqm。 (如果WMQ運行在分佈式非Windows系統上,這將起作用。如果WMQ在Windows,z/OS或其他平臺上運行,請在此代替平臺等效標識。)雖然這會使WAS啓動並運行,但它不會解決QMgr暴露管理訪問的事實。

請參閱WMQ Hardening演示文稿和實驗室,網址爲http://t-rob.net/links,以獲取有關如何識別和修復QMgr基礎安全風險的更全面說明。

+0

非常明確和有效的答案。非常感謝你! – 2011-05-16 06:50:51

+1

感謝Maxim發佈這個灼熱的問題,也感謝T.Rob的確切答案 – 2012-08-22 15:16:38

相關問題