本章說明如何增加、刪除和編輯可存取伺服器的使用者和群組。
使用管理伺服器可以存取關於使用者帳號、群組清單、存取權限 (ACL)、組織單位以及其他使用者和群組特定資訊的應用程式資料。
使用者和群組資訊以文字格式儲存在平面檔案中,或儲存在目錄伺服器 (例如 Sun Java System Directory Server) 中,支援 簡易目錄存取協定 (LDAP)。LDAP 是透過 TCP/IP 執行的開放式目錄存取協定,可延伸至全域大小和數百萬個項目。
目錄伺服器 (如 Sun Java System Directory Server) 允許您管理來自單一應用程式的所有使用者資訊。您也可以將目錄伺服器配置為允許您的使用者從多個易存取的網路位置擷取目錄資訊。
在 Web Server 7.0 中,您可以配置三種不同類型的目錄服務以對使用者和群組進行認證與授權。如果未配置任何其他目錄服務,則不管新建的目錄服務為何類型,均會將其設定為值 default。
當您建立目錄服務時,將會使用目錄服務詳細資訊更新 server.xml 檔案。
Web Server 7.0 支援的不同目錄服務類型包括:
LDAP — 將使用者和群組資訊儲存在基於 LDAP 的目錄伺服器中。
金鑰檔案 — 金鑰檔案是文字檔案,包含雜湊格式的使用者密碼以及該使用者所屬群組的清單。金鑰檔案中儲存的使用者和群組僅由 file 範圍用於進行授權和認證;他們與系統使用者和群組無任何關係。
金鑰檔案格式僅當意在使用 HTTP 基本驗證時才可使用。
摘要檔案 — 根據加密的使用者名稱和密碼儲存使用者和群組資訊。
Digest file 格式意在支援使用 HTTP 摘要驗證。然而,它也支援基本認證,因此它可同時用於這兩種驗證方法。
如果您要設定分散式管理,則預設目錄服務必須是基於 LDAP 的目錄服務。
使用者是您 LDAP 資料庫中的個人,例如您公司的員工。群組是共用某個一般屬性的兩個或多個使用者。組織單位是公司內的部門。
企業中每個使用者和群組將由辨別名稱 (DN) 屬性來表示。DN 屬性是一個包含關聯使用者、群組或物件之識別資訊的文字字串。每當您變更使用者或群組目錄項目時,就要使用 DN。例如,每當建立或修改目錄項目、設定存取控制以及為應用程式 (例如,郵件或發佈) 設定使用者帳號時,您都需要指定 DN 資訊。

上圖是 DN 表示的範例。以下範例表示 Sun Microsystems 公司某位員工的典型 DN:
uid=doe,e=doe@sun.com,cn=John Doe,o=Sun Microsystems Inc.,c=US
此範例中每個等號前縮寫的涵義如下:
uid:使用者 ID
e: 電子郵件位址
cn: 使用者的一般名稱
0: 組織
c: 國家/地區
DN 可能包含各種「名稱-值」對。它們用於在支援 LDAP 的目錄中識別憑證主體和項目。
如果您目前沒有目錄,或者您想將新的子樹狀結構增加至現有目錄中,則可以使用目錄伺服器的 Administration Server LDIF 匯入功能。此功能接受包含 LDIF 的檔案,並且會嘗試從 LDIF 項目建立目錄或新子樹。您還可以使用目錄伺服器的 LDIF 匯出功能,將目前目錄匯出至 LDIF。此功能會建立一個代表您目錄的 LDIF 格式的檔案。可以使用 ldapmodify 指令和適當的 LDIF 更新描述來增加或編輯項目。
若要使用 LDIF 將項目增加至資料庫中,請先定義 LDIF 檔案中的項目,然後從目錄伺服器匯入 LDIF 檔案。
認證資料庫也稱為 auth-db,代表已知使用者的資料庫,認證用戶端請求的機制就是以該資料庫為基礎。伺服器可同時配置擁有多個同一類型的 auth-db 項目。auth-db 使用者資料庫由 ACL 處理模組使用。
伺服器支援以下認證資料庫:
LDAP — 使用者資料儲存在 LDAP 目錄伺服器 (例如 Sun Java System Directory Server) 中。
檔案 — 使用者資料儲存在磁碟檔案中。對於不使用 (或不需要) 集中使用者管理的開發或小型部署來說,此 auth-db 尤其方便。檔案 auth-db 支援數種不同的檔案格式︰
keyfile — keyfile 格式可儲存使用者 (也可以額外列出每個使用者的群組成員身份) 清單。密碼儲存為單向 (不可回復的) 雜湊。這是預設格式。
digestfile — digestfile 與 keyfile 非常類似,並且也支援 HTTP 摘要認證方法。
htaccess — 這是一種舊格式,絕不能用於全新安裝或用以增加新使用者。
PAM — PAM 是 Web 伺服器 所支援的新 auth-db。PAM auth-db 會將認證委託給 Solaris PAM 堆疊,而此舉可讓 Web 伺服器系統上的現有 Solaris 使用者也能對 Web 伺服器進行認證。
僅 Solaris 9 和 Solaris 10 (或更高版本) 支援 PAM auth-db,且 Web 伺服器實例必須以超級使用者身份執行。
若要透過管理主控台來建立認證資料庫,請按一下 [配置] > [配置名稱] > [存取控制] > [認證資料庫] > [新增] 按鈕。 檢查管理主控台內嵌說明以便取得欄位描述。欄位會根據選取的認證資料庫而有變化。例如,對於基於 PAM 的認證資料庫,只需要認證資料庫名稱即可。
此處已列舉建立認證資料庫的必要選項:
|
LDAP |
|
|
金鑰檔案 |
|
|
摘要檔案 |
|
|
PAM |
|
若要透過 CLI 建立認證資料庫,請執行以下指令。
wadm> create-authdb --user=admin --password-file=admin.pwd --host=serverhost --port=8989 --config=config1 --url=ldap://ldapserver.com:20002/dc=xxx,dc=sun,dc=com LDAP1 |
請參閱 CLI 參考資料 create-authdb(1)。
在上述範例中,已為認證資料庫指定 URL。此 URL 格式中已指定認證資料庫的類型。例如,ldap://ds.example.come/dc=example,dc=com 會將 LDAP 目錄伺服器配置為認證資料庫。
管理伺服器可讓您編輯 LDAP 和檔案 auth-db 類型的使用者帳號、群組清單、存取權限、組織單位以及其他使用者和群組特定的資訊。
選取配置。
從配置清單中選取配置。按一下 [配置] 標籤以取得清單。
按一下 [存取控制] > [使用者] 標籤。
按一下 [新增] 按鈕。
增加使用者資訊。
輸入使用者 ID 與密碼。選擇性地輸入使用者所屬的群組。使用者 ID 必須唯一。如果是基於 LDAP 的認證資料庫,則管理伺服器將從搜尋基底 (基底 DN) 向下搜尋整個目錄,以查看使用者 ID 是否處於使用中狀態,確保使用者 ID 的確是唯一。但是,請注意,如果您使用目錄伺服器 ldapmodify 指令行公用程式 (如果可用) 建立使用者,則無法確保使用者 ID 能否是唯一。
使用 CLI
若要透過 CLI 建立使用者,請執行以下指令。
wadm> create-user --user=admin --password-file=admin.pwd --host=serverhost --port=8989 --config=config1 --authdb=KEYFILE1 --full-name=keyfile-config1-u1 keyfile-config1-u1 |
請參閱 CLI 參考資料 create-user(1)。
選取配置。
從配置清單中選取配置。按一下 [配置] 標籤以取得清單。
按一下 [存取控制] > [群組] 標籤。
按一下 [新增] 按鈕。
輸入群組名稱。
在 [將使用者增加至群組中] 區段中搜尋,並將現有使用者增加至群組中。
在認證資料庫 (如 keyfile 或 digestfile) 中建立群組需要至少指定一個使用者。
使用 CLI
若要透過 CLI 建立群組,請執行以下指令。
wadm> create-group --user=admin --password-file=admin.pwd --host=serverhost --port=8989 --config=config1 --authdb=LDAP1 group1 |
請參閱 CLI 參考資料 create-group(1)。
選取配置。
從配置清單中選取配置。按一下 [配置] 標籤以取得清單。
按一下 [存取控制] > [使用者] 標籤。
選取您需要從中刪除使用者的認證資料庫。
在 [搜尋使用者] 文字方塊中輸入使用者 ID,然後按一下 [搜尋] 按鈕。
從 [使用者 ID] 欄中選取使用者,然後按一下 [刪除] 按鈕。
如果刪除使用者後,群組中就沒有任何成員,則刪除 keyfile/digestfile 認證資料庫中的使用者時也會刪除關聯的群組。其原因是 keyfile/digestfile 認證資料庫不允許群組中無成員。
使用 CLI
若要透過 CLI 刪除使用者,請執行以下指令。
wadm> delete-user --user=admin --password-file=admin.pwd --host=serverhost --port=8989 --config config1 --authdb KEYFILE1 user1 |
請參閱 CLI 參考資料 delete-user(1)。
選取配置。
從配置清單中選取配置。按一下 [配置] 標籤以取得清單。
按一下 [存取控制] > [群組] 標籤。
選取您需要從中刪除群組的認證資料庫。
在 [搜尋使用者] 文字方塊中輸入群組名稱,然後按一下 [搜尋] 按鈕。
從 [群組名稱] 欄中選取群組,然後按一下 [刪除] 按鈕。
刪除群組並不會刪除屬於該群組的使用者。您必須手動刪除使用者或重新指定群組。
使用 CLI
若要透過 CLI 刪除群組,請執行以下指令。
wadm> delete-group --user=admin --password-file=admin.pwd --host=serverhost --port=8989 --config config1 --authdb LDAP1 group1 |
請參閱 CLI 參考資料 delete-group(1)。
群組是描述 LDAP 資料庫中物件集的物件。Web Server 7.0 群組由共用某個一般屬性的使用者組成。例如,物件集可能是在您公司行銷部工作的一些員工。這些員工可能屬於稱為 Marketing 的群組。
對於 LDAP 服務,定義群組成員關係的方式有兩種: 靜態和動態。靜態群組會明確列舉其成員物件。一個靜態群組就是一個 CN,包含 uniqueMembers 和/或 memberURLs 和/或 memberCertDescriptions。靜態群組的成員並不共用某個一般屬性,但 CN=<Groupname> 屬性除外。
動態群組允許您使用 LDAP URL 來定義僅與群組成員符合的規則集。動態群組的成員共用 memberURL 篩選器中定義的一般屬性或屬性集。例如,如果您需要一個包含所有 Sales 人員的群組,且他們已位於以下的 LDAP 資料庫
「ou=Sales,o=Airius.com」中,您需要使用以下 memberurl 定義一個動態群組:
ldap:///ou=Sales,o=Airius.com??sub?(uid=*)
隨後,此群組將包含樹中「ou=Sales,o=sun」點下具有 uid 屬性的所有物件,即所有 Sales 成員。
對於靜態和動態群組,如果您使用 memberCertDescription,則成員可以共用憑證中的一般屬性。請注意,這些僅在 ACL 使用 SSL 方法時才適用。
建立新群組後,您即可在其中增加使用者或成員。
對於 LDAP服務,管理伺服器可使您透過在任意數量使用者的 DN 中指定相同群組屬性來建立靜態群組。靜態群組僅在您於其中加入或刪除使用者時才變更。
靜態群組可以包含其他靜態或動態群組。
您也可以選擇性地增加新群組的描述。
如果已為您的目錄定義任何組織單位,則可以使用 [增加新群組至] 清單指定要放置新群組的位置。預設位置為您目錄的根目錄位置或最頂層項目。
動態群組具有 groupOfURLs 的 objectclass,並具有零個或多個 memberURL 屬性,每一個屬性都是描述物件集的 LDAP URL。
對於 LDAP 服務,如果您想要根據任意屬性將使用者自動分組,或者想要將 ACL 套用至包含相符 DN 的特定群組,Web 伺服器可使您建立動態群組。例如,您可以建立一個群組,該群組將自動包括含有department=marketing 屬性的任何 DN。如果您為 department=marketing 套用搜尋篩選器,則搜尋將傳回一個群組,其中包括含有 department=marketing 屬性的所有 DN。然後,您可以基於此篩選器的搜尋結果來定義動態群組。隨後,您可以針對結果動態群組定義一個 ACL。
Web 伺服器在 LDAP 伺服器模式中以 objectclass = groupOfURLs 來實作動態群組。groupOfURLS 類別可以具有多個 memberURL 屬性,每個屬性均包含一個 LDAP URL,用來列舉目錄中的物件集。群組成員將是這些物件集的併集。例如,以下群組僅包含一個成員 URL:
ldap:///o=mcom.com??sub?(department=marketing)
此範例所說明的集合包含「o=mcom.com」之下所屬部門為「行銷」的所有物件。LDAP URL 可包含搜尋基底 DN、範圍與篩選器,但不包含主機名稱與連接埠。這就意味著您僅能參考同一 LDAP 伺服器上的物件。支援所有範圍。
將自動包括 DN,而無須您在群組中逐個增加。此伺服器實例僅具有一個 HTTP 偵聽程式,可在連接埠 80 (或在安裝時選取的任何連接埠) 上偵聽配置給電腦的任何 IP 位址。ACL 檔案中使用的使用者和群組名稱與 LDAP 資料庫中物件的 cn 屬性相對應。
Web 伺服器使用 cn (commonName) 屬性做為 ACL 的群組名稱。
ACL 與 LDAP 資料庫的對映定義於 dbswitch.conf 配置檔案 (將 ACL 資料庫名稱與實際 LDAP 資料庫 URL 關聯) 中,以及 ACL 檔案 (定義各資料庫可用於哪個 ACL) 中。例如,若想讓「staff」群組中的成員擁有基底存取權限,ACL 代碼將查詢物件類別為 groupOf<anything> 且 CN 設定為 staff 的物件。物件定義群組成員的方式有兩種:明確列舉成員 DN (靜態群組的 groupOfUniqueNames 作業即如此),或指定 LDAP URL (例如,groupOfURLs)。
群組物件可同時具有 objectclass = groupOfUniqueMembers 和 objectclass = groupOfURLs,因此「uniqueMember」和「memberURL」屬性都是有效的。群組的成員關係是其靜態成員和動態成員的併集。
使用動態群組時會影響伺服器的效能。如果您正在測試群組成員關係,且 DN 不是靜態群組的成員,則 Web 伺服器將會檢查資料庫基底 DN 中的所有動態群組。Web 伺服器為完成此作業,會檢查基底 DN 和範圍 (對照使用者的 DN),並藉由使用者 DN (做為基底 DN) 和篩選器 memberURL 來執行基底搜尋,從而檢查每一個 memberURL 是否符合。此程序會產生大量的個別搜尋。
使用管理伺服器建立新動態群組時,請考量以下準則:
動態群組不能包含其他群組。
使用以下格式 (沒有主機和連接埠資訊,因為這些參數被忽略) 輸入群組的 LDAP URL:
ldap:///<basedn>?<attributes>?<scope>?<(filter)>
下表描述了需要的參數:
請注意,<attributes>、<scope> 和 <(filter)> 參數是依據它們在 URL 中的位置進行識別的。即使您不想指定任何屬性,也仍需要包括問號來分隔該欄位。
您也可以選擇性地增加新群組的描述。
如果已為您的目錄定義任何組織單位,則可以使用 [增加新群組至] 清單指定要放置新群組的位置。預設位置為您目錄的根目錄位置或最頂層項目。