當使用者嘗試連線至代理程式時,此代理程式將檢查使用者提供的名稱和密碼,以便進行認證。如果名稱和密碼與配置每個代理程式要參考的特定代理程式使用者儲存庫中的名稱和密碼相符,則代理程式承認此連線。
您負責維護使用者儲存庫中的使用者清單、使用者群組清單以及使用者密碼清單。您可以在每個代理程式實例使用不同的使用者儲存庫。本節介紹如何建立、寫入和管理儲存庫。
儲存庫可能是下列任一類型:
Message QueueTM 隨附的平面檔案儲存庫
這種類型的使用者儲存庫使用非常容易。您可以使用使用者管理員公用程式 (imqusermgr) 寫入和管理此儲存庫。若要啟用認證,您應在使用者儲存庫中寫入每個使用者的名稱、密碼以及使用者群組名稱。
如需設定與管理使用者儲存庫的更多資訊,請參閱使用平面檔案使用者儲存庫。
LDAP 伺服器
可以是使用 LDAP v2 或 v3 協定之現有或新的 LDAP 目錄伺服器。它不如平面檔案儲存庫易於使用,但是它可延展,因此更適用於生產環境。
如果您要使用 LDAP 使用者儲存庫,可以利用 LDAP 供應商提供的工具來寫入和管理使用者儲存庫。如需更多資訊,請參閱將 LDAP 伺服器用於使用者儲存庫。
Message Queue 提供平面檔案使用者儲存庫和指令行工具,即使用者管理員公用程式 (imqusermgr),您可以使用此工具寫入和管理平面檔案使用者儲存庫。以下各節描述平面檔案使用者儲存庫,以及您如何使用使用者管理員公用程式寫入和管理儲存庫。
平面檔案使用者儲存庫是針對實例的。您啟動的每個代理程式實例,都會自動建立預設的使用者儲存庫 (稱為 passwd)。此使用者儲存庫的所在目錄名稱,與此儲存庫相關聯之代理程式實例名稱相同 (請參閱附錄 AMessage QueueTM 資料的特定平台位置):
…/instances/instanceName/etc/passwd
此儲存庫在建立時就有兩個項目。表 7–1 的每一列表示一個項目。
表 7–1 使用者儲存庫中的初始項目
使用者名稱 |
密碼 |
群組 |
狀態 |
---|---|---|---|
admin |
admin |
admin |
active |
guest |
guest |
anonymous |
active |
這些初始項目可讓 Message Queue 代理程式在安裝之後立即使用,而無需管理員的介入:
初始 admin 使用者項目可讓您使用 imqcmd 指令和預設的 admin 使用者名稱和密碼來管理代理程式實例。您應該更新此初始項目以變更密碼 (請參閱變更預設管理員密碼)。
以下各節介紹如何寫入和管理平面檔案使用者儲存庫。
Message Queue 使用者管理員公用程式 (imqusermgr) 可讓您編輯或寫入平面檔案使用者儲存庫。本節介紹使用者管理員公用程式。後續各節介紹如何使用 imqusermgr 子指令完成特定的工作。
如需 imqusermgr 指令的完整參考資訊,請參閱第 13 章, 指令行參照。
操作使用者管理員之前,請注意以下事項:
如果代理程式專用的使用者儲存庫不存在,您必須啟動對應的代理程式實例來建立儲存庫。
必須在安裝代理程式的主機上執行 imqusermgr 指令。
您必須擁有寫入儲存庫的適當權限:也就是說,在 Solaris 和 Linux 上,您必須是超級使用者或是第一個建立代理程式實例的使用者。
以下各節中的範例均假設為預設的代理程式實例。
imqusermgr 指令有子指令 add、delete、list 和 update。
add 子指令可以將使用者和相關密碼增加到指定的 (或預設的) 代理程式實例儲存庫,並可選擇性指定使用者的群組。子指令語法如下:
add [-i instanceName] -u userName -p passwd [-g group] [ -s]
delete 子指令可以從指定的 (或預設的) 代理程式實例儲存庫刪除指定的使用者。子指令語法如下:
delete [-i instanceName] -u userName [ -s] [-f]
list 子指令可以顯示有關指定的 (或預設的) 代理程式實例儲存庫中,指定的使用者或所有使用者的資訊。子指令語法如下:
list [ -i instanceName] [-u userName]
update 子指令可以更新指定的 (或預設的) 代理程式實例儲存庫中,指定使用者的密碼和 (或) 狀態。子指令語法如下:
update [ -i instanceName] -u userName -p passwd [ -a state] [-s] [ -f]
update [-i instanceName] -u userName -a state [-p passwd] [-s] [-f]
表 7–2 列出了 imqusermgr 指令的選項。
表 7–2 imqusermgr 選項
選項 |
說明 |
---|---|
-a activeState |
指定使用者的狀態是否應為使用中 (true/false)。值 true 表示狀態為使用中。這是預設值。 |
-f |
未經使用者確認即執行動作。 |
-h |
顯示用法說明。不執行指令行上的其他任何指令。 |
-i instanceName |
指定要套用指令的代理程式實例名稱。如果未指定,則使用預設實例名稱 imqbroker。 |
-p passwd |
指定使用者密碼。 |
-g group |
指定使用者群組。有效值為 admin、user 和 anonymous。 |
-s |
設定無訊息模式。 |
-u userName |
指定使用者名稱。 |
-v |
顯示版本資訊。不執行指令行上的其他任何指令。 |
為代理程式實例的使用者儲存庫增加使用者項目時,您可以指定三個預先定義群組中的任一項:admin、user 或 anonymous。如果未指定群組,則預設為指定群組 user。請遵照以下說明指定群組:
admin 群組:用於代理程式管理員。依預設,已指定至此群組的使用者可以配置和管理代理程式。您可以將多個使用者指定給 admin 群組。
user 群組:用於一般 (非管理) Message Queue 用戶端使用者。大多數用戶端使用者屬於 user 群組。依預設,此群組中的使用者可以產生訊息到所有主題與佇列、使用來自所有主題與佇列的訊息,以及瀏覽任何佇列中的訊息。
anonymous 群組:用於不想使用代理程式知道的使用者名稱的 Message Queue 用戶端,可能是因為這些用戶端應用程式不知道應使用的實際使用者名稱。此帳號與大多數 FTP 伺服器中存在的匿名帳號類似。您一次僅可將一個使用者指定給 anonymous 群組。與 user 群組不一樣的是,您應當限制此群組的存取權限,或者應在部署時移除此群組中的使用者。
若要變更使用者的群組,您必須刪除此使用者項目,然後為此使用者增加其他項目,指定新的群組。
您不能將系統建立的群組重新命名或刪除,也不能建立新群組。但是,您可以指定用來定義群組成員可執行作業的存取規則。如需更多資訊,請參閱使用者授權:存取控制特性檔案。
增加使用者至儲存庫時,使用者的狀態預設為使用中。若要讓此使用者變成非使用中狀態,您必須使用更新指令。例如,以下指令可讓使用者 JoeD 的狀態變成非使用中:
imqusermgr update -u JoeD -a false
已變成非使用中使用者的項目會保留在儲存庫中;但是,非使用中的使用者無法開啟新的連線。如果使用者為非使用中,且您新增具有相同名稱的其他使用者,則作業將失敗。您必須刪除非使用中使用者項目或變更新使用者的名稱,或者為新使用者命名其他名稱。這可防止您新增重複的使用者名稱。
使用者名稱中不能包含星號 (*)、逗號 (,)、冒號 (:)、新行或換行字元。
使用者名稱或密碼必須至少包含一個字元。
如果使用者名稱或密碼包含空格,則必須將整個名稱或密碼括在引號內。
密碼或使用者名稱的長度沒有限制,除非指令 shell 對指令行上可輸入的最大字元數有所限制。
使用 add 子指令可增加使用者至儲存庫。例如,以下指令可將使用者 Katharine 和密碼 sesame,增加到預設的代理程式實例使用者儲存庫。
imqusermgr add -u Katharine -p sesame -g user
使用 delete 子指令可從儲存庫刪除使用者。例如,以下指令可刪除使用者 Bob:
imqusermgr delete -u Bob
使用 update 子指令可變更使用者的密碼或狀態。例如,以下指令將 Katharine 的密碼變更為 aladdin:
imqusermgr update -u Katharine -p aladdin
若要列出有關一個或所有使用者的資訊,請使用 list 指令。以下指令顯示名為 isa 的使用者之相關資訊:
imqusermgr list -u isa
% imqusermgr list -u isa User repository for broker instance: imqbroker ---------------------------------- User Name Group Active State ---------------------------------- isa admin true |
以下指令列出所有使用者的相關資訊:
imqusermgr list
% imqusermgr list User repository for broker instance: imqbroker -------------------------------------- User Name Group Active State -------------------------------------- admin admin true guest anonymous true isa admin true testuser1 user true testuser2 user true testuser3 user true testuser4 user false testuser5 user false |
為了安全性起見,您應將 admin 的預設密碼變更為只有您自己知道的密碼。以下指令將 mybroker 代理程式實例的預設管理員密碼 admin 變更為 grandpoobah。
imqusermgr update mybroker -u admin -p grandpoobah
當代理程式實例正在執行時,您可以透過執行任一指令行工具,以快速確認此變更是否生效。例如,下列指令會提示您提供密碼:
imqcmd list svc mybroker -u admin
輸入新密碼 (grandpoobah) 即生效,輸入舊密碼即失敗。
變更密碼後,使用任一 Message Queue 管理工具 (包括管理主控台) 時,您均應提供新的密碼。
編輯實例配置檔案
設定管理員的存取控制
若要代理程式使用目錄伺服器者,請在代理程式實例配置檔案 config.properties 中設定一些特性值。當使用者嘗試連線至代理程式實例或執行訊息傳送作業時,這些特性可讓代理程式實例查詢 LDAP 伺服器,以取得使用者和群組的相關資訊。
…/instances/instanceName /props/config.properties
如需作業系統專用的實例目錄位置之詳細資訊,請參閱附錄 AMessage QueueTM 資料的特定平台位置。
透過設定以下特性,以指定您要使用 LDAP 使用者儲存庫:
imq.authentication.basic.user_repository=ldap |
設定 imq.authentication.type 特性,以確定密碼應以 Base64 編碼 (basic) 還是以 MD5 編碼 (digest),從用戶端傳送至代理程式。將 LDAP 目錄伺服器用於使用者儲存庫時,您必須將認證類型設定為 basic。例如:
imq.authentication.type=basic |
您還必須設定可控制 LDAP 存取的代理程式特性。這些特性儲存在代理程式的實例配置檔案中。安全性服務中討論這些特性,安全性特性中也有摘要。
Message Queue 使用 JNDI API 與 LDAP 目錄伺服器通訊。如需這些特性中所參考之語法和專有名詞的更多資訊,請參閱 JNDI 文件。Message Queue 使用 Sun JNDI LDAP 提供者和簡單認證。
Message Queue 支援 LDAP 認證容錯移轉:您可以指定在進行認證時嘗試使用的 LDAP 目錄伺服器之清單 (請參閱 imq.user.repos.ldap.server 特性的參考資訊)。
如需 LDAP 使用者儲存庫相關特性的設定範例,請參閱代理程式的 config.properties 檔案。
如有必要,您需要編輯存取控制特性檔案中的使用者/群組和規則。如需使用存取控制特性檔案的更多資訊,請參閱使用者授權:存取控制特性檔案。
如果在連線認證和群組搜尋期間,您要讓代理程式透過 SSL 與 LDAP 目錄伺服器通訊,則需要啟動 LDAP 伺服器中的 SSL,然後在代理程式配置檔案中設定以下特性:
指定 LDAP 伺服器用於 SSL 通訊的連接埠。例如:
imq.user_repository.ldap.server=myhost:7878 |
將代理程式特性 imq.user_repository.ldap.ssl.enabled 設為 true。
部署多台 LDAP 目錄伺服器時,請使用 ldap:// 指定其他每一台目錄伺服器。例如:
imq.user_repository.ldap.server = myHost:7878 ldap:// otherHost:7878 …
以空格分隔每一台目錄伺服器。清單中的所有目錄伺服器必須使用相同的值,以供其他與 LDAP 相關的特性使用。
若要建立管理使用者,您可以使用存取控制特性檔案,指定可以建立 ADMIN 連線的使用者和群組。這些使用者和群組必須預先在 LDAP 目錄中定義。
任何使用者或群組只要能夠建立 ADMIN 連線,即可下達管理指令。
將代理程式特性 imq.accesscontrol.enabled 設定為 true 預設值,啟用存取控制檔案。
imq.accesscontrol.enabled 特性可以啟用存取控制檔案。
開啟存取控制檔案 accesscontrol.properties。附錄 AMessage QueueTM 資料的特定平台位置 中會列出此檔案的位置。
此檔案包含一個項目,如下所示:
service connection access control##################################connection.NORMAL.allow.user=*connection.ADMIN.allow.group=admin
列出的項目僅為範例。請注意檔案式使用者儲存庫中有 admin 群組,但是依預設,LDAP 目錄中沒有此群組。您必須將 LDAP 目錄中已定義的群組名稱,替換為要授予 Message Queue 管理員權限的群組名稱。
若要將 Message Queue 管理員權限授予使用者,請如下所示,輸入使用者名稱:
connection.ADMIN.allow.user= userName[[,userName2] …]
若要將 Message Queue 管理員權限授予群組,請如下所示,輸入群組名稱:
connection.ADMIN.allow.group= groupName[[,groupName2] …]