Sun Java System Message Queue 3.7 UR1 管理指南

使用者認證

當使用者嘗試連線至代理程式時,此代理程式將檢查使用者提供的名稱和密碼,以便進行認證。如果名稱和密碼與配置每個代理程式要參考的特定代理程式使用者儲存庫中的名稱和密碼相符,則代理程式承認此連線。

您負責維護使用者儲存庫中的使用者清單、使用者群組清單以及使用者密碼清單。您可以在每個代理程式實例使用不同的使用者儲存庫。本節介紹如何建立、寫入和管理儲存庫。

儲存庫可能是下列任一類型:

使用平面檔案使用者儲存庫

Message Queue 提供平面檔案使用者儲存庫和指令行工具,即使用者管理員公用程式 (imqusermgr),您可以使用此工具寫入和管理平面檔案使用者儲存庫。以下各節描述平面檔案使用者儲存庫,以及您如何使用使用者管理員公用程式寫入和管理儲存庫。

建立使用者儲存庫

平面檔案使用者儲存庫是針對實例的。您啟動的每個代理程式實例,都會自動建立預設的使用者儲存庫 (稱為 passwd)。此使用者儲存庫的所在目錄名稱,與此儲存庫相關聯之代理程式實例名稱相同 (請參閱附錄 AMessage QueueTM 資料的特定平台位置):

   …/instances/instanceName/etc/passwd

此儲存庫在建立時就有兩個項目。表 7–1 的每一列表示一個項目。

表 7–1 使用者儲存庫中的初始項目

使用者名稱 

密碼 

群組 

狀態 

admin

admin

admin

active

guest

guest

anonymous

active

這些初始項目可讓 Message Queue 代理程式在安裝之後立即使用,而無需管理員的介入:

以下各節介紹如何寫入和管理平面檔案使用者儲存庫。

使用者管理員公用程式

Message Queue 使用者管理員公用程式 (imqusermgr) 可讓您編輯或寫入平面檔案使用者儲存庫。本節介紹使用者管理員公用程式。後續各節介紹如何使用 imqusermgr 子指令完成特定的工作。

如需 imqusermgr 指令的完整參考資訊,請參閱第 13 章, 指令行參照

操作使用者管理員之前,請注意以下事項:


備註 –

以下各節中的範例均假設為預設的代理程式實例。


子指令

imqusermgr 指令有子指令 adddeletelistupdate

指令選項

表 7–2 列出了 imqusermgr 指令的選項。

表 7–2 imqusermgr 選項

選項 

說明 

-a activeState

指定使用者的狀態是否應為使用中 (true/false)。值 true 表示狀態為使用中。這是預設值。

-f

未經使用者確認即執行動作。 

-h

顯示用法說明。不執行指令行上的其他任何指令。 

-i instanceName

指定要套用指令的代理程式實例名稱。如果未指定,則使用預設實例名稱 imqbroker

-p passwd

指定使用者密碼。 

-g group

指定使用者群組。有效值為 adminuseranonymous

-s

設定無訊息模式。 

-u userName

指定使用者名稱。 

-v

顯示版本資訊。不執行指令行上的其他任何指令。 

群組

為代理程式實例的使用者儲存庫增加使用者項目時,您可以指定三個預先定義群組中的任一項:adminuseranonymous。如果未指定群組,則預設為指定群組 user請遵照以下說明指定群組:

若要變更使用者的群組,您必須刪除此使用者項目,然後為此使用者增加其他項目,指定新的群組。

您不能將系統建立的群組重新命名或刪除,也不能建立新群組。但是,您可以指定用來定義群組成員可執行作業的存取規則。如需更多資訊,請參閱使用者授權:存取控制特性檔案

使用者狀態

增加使用者至儲存庫時,使用者的狀態預設為使用中。若要讓此使用者變成非使用中狀態,您必須使用更新指令。例如,以下指令可讓使用者 JoeD 的狀態變成非使用中:

imqusermgr update -u JoeD -a false

已變成非使用中使用者的項目會保留在儲存庫中;但是,非使用中的使用者無法開啟新的連線。如果使用者為非使用中,且您新增具有相同名稱的其他使用者,則作業將失敗。您必須刪除非使用中使用者項目或變更新使用者的名稱,或者為新使用者命名其他名稱。這可防止您新增重複的使用者名稱。

使用者名稱與密碼的格式

使用者名稱與密碼必須遵循以下準則:

寫入和管理使用者儲存庫

使用 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 管理工具 (包括管理主控台) 時,您均應提供新的密碼。

將 LDAP 伺服器用於使用者儲存庫

若要將 LDAP 伺服器用於使用者儲存庫,請執行下列工作:

編輯實例配置檔案

若要代理程式使用目錄伺服器者,請在代理程式實例配置檔案 config.properties 中設定一些特性值。當使用者嘗試連線至代理程式實例或執行訊息傳送作業時,這些特性可讓代理程式實例查詢 LDAP 伺服器,以取得使用者和群組的相關資訊。

實例配置檔案位於代理程式實例目錄下的目錄中。路徑格式如下:

/instances/instanceName

/props/config.properties

如需作業系統專用的實例目錄位置之詳細資訊,請參閱附錄 AMessage QueueTM 資料的特定平台位置

Procedure編輯配置檔案以使用 LDAP 伺服器

  1. 透過設定以下特性,以指定您要使用 LDAP 使用者儲存庫:


    imq.authentication.basic.user_repository=ldap
  2. 設定 imq.authentication.type 特性,以確定密碼應以 Base64 編碼 (basic) 還是以 MD5 編碼 (digest),從用戶端傳送至代理程式。將 LDAP 目錄伺服器用於使用者儲存庫時,您必須將認證類型設定為 basic。例如:


    imq.authentication.type=basic
  3. 您還必須設定可控制 LDAP 存取的代理程式特性。這些特性儲存在代理程式的實例配置檔案中。安全性服務中討論這些特性,安全性特性中也有摘要。

    Message Queue 使用 JNDI API 與 LDAP 目錄伺服器通訊。如需這些特性中所參考之語法和專有名詞的更多資訊,請參閱 JNDI 文件。Message Queue 使用 Sun JNDI LDAP 提供者和簡單認證。

    Message Queue 支援 LDAP 認證容錯移轉:您可以指定在進行認證時嘗試使用的 LDAP 目錄伺服器之清單 (請參閱 imq.user.repos.ldap.server 特性的參考資訊)。

    如需 LDAP 使用者儲存庫相關特性的設定範例,請參閱代理程式的 config.properties 檔案。

  4. 如有必要,您需要編輯存取控制特性檔案中的使用者/群組和規則。如需使用存取控制特性檔案的更多資訊,請參閱使用者授權:存取控制特性檔案

  5. 如果在連線認證和群組搜尋期間,您要讓代理程式透過 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 連線,即可下達管理指令。

Procedure設定管理使用者

  1. 將代理程式特性 imq.accesscontrol.enabled 設定為 true 預設值,啟用存取控制檔案。

    imq.accesscontrol.enabled 特性可以啟用存取控制檔案。

  2. 開啟存取控制檔案 accesscontrol.properties附錄 AMessage QueueTM 資料的特定平台位置 中會列出此檔案的位置。

    此檔案包含一個項目,如下所示:

    service connection access control##################################connection.NORMAL.allow.user=*connection.ADMIN.allow.group=admin

    列出的項目僅為範例。請注意檔案式使用者儲存庫中有 admin 群組,但是依預設,LDAP 目錄中沒有此群組。您必須將 LDAP 目錄中已定義的群組名稱,替換為要授予 Message Queue 管理員權限的群組名稱。

  3. 若要將 Message Queue 管理員權限授予使用者,請如下所示,輸入使用者名稱:

    connection.ADMIN.allow.user= userName[[,userName2] ]

  4. 若要將 Message Queue 管理員權限授予群組,請如下所示,輸入群組名稱:

    connection.ADMIN.allow.group= groupName[[,groupName2] ]