2013-07-22 67 views
2

我已經安裝了Websphere MQ 7.5並編寫了一個Java客戶端以連接到隊列。爲了執行該任務,我創建了一個基於SYSTEM.DEF.SVRCONN頻道的自定義連接到服務器通道。Websphere MQ 7.5:用戶ID訪問

首先,要阻止所有擁有管理員權限的用戶和所有渠道的所有授權用戶,我鍵入瞭如下命令(runmqsc TEST_MANAGER):SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST('nobody', *MQADMIN)。現在我在MQ Explorer中看到了這個限制(TEST_MANAGER - > Channels - > Channel Identification Records)。

之後,提供我的測試用戶(Java的客戶端)與接入,我已經輸入了這樣的命令:

SET CHLAUTH(TEST_CHANNEL) TYPE(ADDRESSMAP) ADDRESS('*') MCAUSER('TestUser') . 

最後,我給自己定在春節的用戶名/密碼對UserCredentialsConnectionFactoryAdapter,其中用戶名是TestUser。

問題是我無法連接2035MQRC_NOT_AUTHORIZED異常。如果我刪除'nobody'/ * MQADMIN阻止規則,則一切正常(只有TestUser客戶端規則的規則存在)。

回答

2

SET CHLAUTH(TEST_CHANNEL)TYPE(ADDRESSMAP)地址( '*') MCAUSER( '爲TestUser')

我不認爲你明白這個命令。該命令表示所有在通道'TEST_CHANNEL'上連接的應用程序將使用'TestUser'的用戶標識。

我已經設置在Spring的 UserCredentialsConnectionFactoryAdapter的用戶名/密碼對,其中用戶名是TestUser用戶 。

設置密碼毫無意義,因爲MQ不會執行驗證。您需要購買第三方產品(即MQAUSX)來處理認證。另外,您的CHLAUTH命令實際上覆蓋了您在Spring應用程序中設置的任何UserID。

問題是我無法連接2035 MQRC_NOT_AUTHORIZED異常。如果我刪除'nobody'/ * MQADMIN阻止規則,則一切正常(只有TestUser客戶端規則的規則存在)。

您是否使用setmqaut命令爲UserID'TestUser'提供對隊列管理器和隊列的適當訪問?

打開隊列管理器的權限事件並查看MQ返回2035的原因。

+0

您好,羅傑。感謝你的回答。有幾個時刻我不明白。請你澄清他們嗎? (1)。 「另外,您的CHLAUTH命令實際上覆蓋了您在Spring應用程序中設置的任何UserID。」我在文檔中沒有看到這一點。這個過程到底如何? (2)。 「你使用setmqaut命令......」。如果我爲頻道提供安全機制,是否有必要?當然它會更安全,但如果我不提供隊列安全性呢? (3)。 「打開隊列管理器的權限事件」。請問你能建議如何做到這一點? – Dmitry

+0

那麼,有T.羅布的答案:http://stackoverflow.com/questions/9416522/websphere-mq-v7-1-security-user-credentials?rq=1這澄清了一點第一個答案。但是,如果我不指定用戶標識,WebSphere會採用此標識符並將其提供給隊列管理器/隊列安全機制? – Dmitry

+1

我還發現了一篇關於setmqauth的有趣文章:http://patrikvarga.blogspot.ru/2012/11/ibm-mq-object-authorization-for-jms.html – Dmitry