使用 WebSphere Application Server V6.1 中的聯合存儲庫擴展用戶註冊表選項

IBM® WebSphere® Application Server V6.1 提供了一種新的聯合用戶存儲庫功能,這方便了您訪問和維護位於多個存儲庫中的用戶數據,特別是自從能夠通過新的 Virtual Member Manager 實用工具進行配置(而非通過編碼)獲得此功能以來,更方便了用戶使用。

摘自 IBM WebSphere 開發者技術期刊

引言

在此之前,對於用戶信息存儲在多個獨立的用戶存儲庫環境,IBM WebSphere Application Server 對該環境的支持存在一定的侷限性。在 6.1 版之前,可用的註冊表選項只有:

  • 本地操作系統註冊表。
  • 單個孤立的輕量級目錄訪問協議 (LDAP) 註冊表。
  • 自定義用戶註冊表接口的單一實現。

實現支持訪問多個其他註冊表的自定義用戶註冊表是有可能的,但這可能會花費大量的開發精力,並且最終結果可能是僅支持只讀操作。

WebSphere Application Server V6.1 提供了一個新方法:聯合用戶註冊表。此功能讓使用多個存儲庫變得非常簡單,因爲此功能是使用新的 Virtual Member Manager (VMM) 通過配置而不是開發獲得的。

從本質上說,此功能提供了將多個獨立用戶存儲庫中的項映射到一個虛擬存儲庫的能力。聯合存儲庫包括一個單一的,該域由一組獨立的用戶存儲庫組成。每個存儲庫都可以是一個完整的外部域,或者是該存儲庫中的一個子樹(例如在 LDAP 中)。每個存儲庫的根都映射到聯合存儲庫中的基本項,該基本項實際上是虛擬域的分層命名空間中的起始點。在介紹如何配置 VMM 時您會對此有一個更清楚的瞭解。

這裏我們討論的是一種包含來自多個基本存儲庫的用戶的邏輯註冊表思想。對於 WebSphere Application Server 運行時,仍然只有一個註冊表,因此,計算單元中的所有應用程序仍共享這個單一的註冊表。請參見圖 1。


圖 1. WebSphere Application Server 顯示的註冊表
圖 1.  WebSphere Application Server 顯示的註冊表

Virtual Member Manager 是一個新組件,它組合了 WebSphere 註冊表、WebSphere Member Manager(來自 WebSphere Portal)中的一些現有功能,並且是安全管理功能的一個子集。VMM 的目標是:

  • 提供一個獨立於存儲庫的編程接口。
  • 支持各種可插入存儲庫。
  • 爲用戶提供一種獲得聯合模塊中多個存儲庫的單一視圖的能力。
細 心的讀者可能會注意到,自定義存儲庫沒有包括在構成聯合存儲庫域的存儲庫列表中。就目前而言,VMM 尚不支持自定義存儲庫。因此,如果您需要自定義存儲庫,則無法使用 VMM。相反,您必須編寫一個自定義用戶註冊表,這與以前版本中所需的操作相同。這種侷限性有望在不久的將來得到解決。

聯合存儲庫包含的域可能由以下存儲庫中的標識組成:

  • 內置於系統的基於文件的存儲庫。
  • 一個或多個外部 LDAP 存儲庫。
  • JDBC 可訪問數據庫存儲庫。

與本地操作系統、獨立 LDAP 目標或自定義註冊表項不同,聯合存儲庫爲用戶和組管理提供了讀寫能力。當您配置聯合存儲庫時,可以使用以下選項添加、創建和刪除用戶和組:

在本文中,我們將通過配置獨立 WebSphere Application Server V6.1 實例,使其與包含文件、數據庫和 LDAP 存儲庫的聯合存儲庫一起運行,向您介紹如何設置和使用 Virtual Member Manager 的基本功能。我們將逐漸向聯合存儲庫添加一些存儲庫,並演示爲進行用戶和組管理,作爲一個邏輯統一的存儲庫查看不同存儲庫的能力。我們還將學習如何配置 LDAP 組成員選項。

聯合存儲庫的侷限性

  • 從管理控制檯中只能將一個用戶存儲庫配置爲創建用戶/組的目標。缺省情況下,該存儲庫是文件存儲庫,但可以更改該存儲庫,稍後您將瞭解到這一點。您可以使用用戶和組管理 wsadmin 命令在其他存儲庫中創建用戶/組,或對這些存儲庫使用本機工具。

  • 用戶名(例如,LDAP 用戶 ID)在不同的存儲庫中必須是唯一的。例如,用戶在不同的 LDAP 存儲庫中不能具有相同的用戶 ID,甚至在不同的組織結構下也不能相同。

  • 如果聯合存儲庫中的一個或多個存儲庫停止運行,那麼您將無法進行身份驗證(甚至作爲管理員也無法驗證),而不論您的特定 ID 存儲在哪個存儲庫中。VMM 組件總是檢查所有存儲庫才能讓身份驗證成功。

  • 儘管 VMM 能夠支持多個域,但 WebSphere Application Server 目前僅支持一個域。它在計算單元級別定義並由所有應用程序共享。

  • 在 WebSphere Application Server V6.1 信息中心列出了其他限制





配置聯合存儲庫

缺省情況下,WebSphere Application Server V6.1 在安裝過程中支持管理安全性。除非禁用此選項,否則基於文件的存儲庫將被自動用作用戶註冊表。

我們將通過配置內置的基於文件的存儲庫開始我們的練習,並假設在安裝過程中禁用了管理安全性。如果在安裝過程中沒有禁用管理安全性選項,則需要在安裝過程中提供管理用戶名和密碼,如圖 2 所示。


圖 2. 啓用管理安全性
圖 2. 啓用管理安全性

我們將假設在安裝過程中禁用了此選項,因此我們可以向您介紹如何從頭配置聯合存儲庫。(一般情況下,在安裝過程中不應禁用管理安全性。)

要使用安全配置,請訪問 WebSphere Application Server 管理控制檯,並導航到 Security => Secure administration, applications and infrastructure。對於本文而言,我們僅配置管理安全性。另外,還應始終啓用應用程序安全性,以便應用程序能夠利用 WebSphere Application Server 安全性。

下面的部分將介紹如何使用以下選項設置聯合存儲庫:

  1. 內置的基於文件的存儲庫
  2. 數據庫存儲庫
  3. LDAP 存儲庫(以 Windows® Active Directory 和 IBM Tivoli® Directory Server 爲例)。




使用內置的基於文件的存儲庫設置聯合存儲庫

這裏,您將使用缺省的基於文件的存儲庫配置聯合存儲庫,然後啓用管理安全性。

  1. 在 Secure administration, applications, and infrastructure 對話框中,從 Available realm definitions 下拉菜單中選擇 Federated repositories,然後單擊 Configure(圖 3)。



    圖 3. 開始聯合存儲庫設置
    圖 3. 開始聯合存儲庫設置

  2. 聯合存儲庫由一個包含多個基本項的單一域構成。WebSphere Application Server 中的域是用戶註冊表的一個實例;該域是表示用戶註冊表的頂級邏輯項。在聯合存儲庫配置中,聯合存儲庫實例就是該域。缺省情況下,域名稱爲 defaultWIMFileBasedRealm(圖 4)。此名稱可以根據您的環境更改爲任何合適的名稱;它不必與域的基本項相同。儘管實際上您可以將該域名稱更改爲更合適的名稱,但在本文中,我們將把該域名稱保留爲缺省名稱。

  3. 基 本項標識域中一組對象的根(或起始點);在一個域中可以有多個基本項。在給定的存儲庫中,每個基本項都映射到目錄樹的根。在平面存儲庫中(例如基於文件的 存儲庫),基本項是存儲庫中所有項的根。在分層存儲庫中(例如 LDAP),基本項映射到目錄信息樹中標識 DIT 中子樹頂部的一個項。(我們將在介紹 LDAP 存儲庫時進一步闡述該內容。)缺省情況下,存在一個與基於文件的存儲庫對應的單一基本項:o=defaultWIMFileBasedRealm(圖 4)。這是基於文件的存儲庫的根的標識符。在此基本項下創建的所有用戶都將有一個完全限定的名稱 uid=<UID>, o=defaultWIMFileBasedRealm。由於基於文件的存儲庫不是分層結構,因此該文件存儲庫中的所有對象都將存儲在此基本項下。

  4. WebSphere Application Server V6.1 對管理環境的管理員用戶標識和驗證服務器間通信的服務器標識進行了區分。在大多數情況下,服務器標識是自動生成的,不存儲在存儲庫中。不過,如果您要將版 本 5.0.x 或 6.0.x 節點添加到版本 6.1 計算單元,則必須確保版本 5.x 或版本 6.0.x 服務器標識和密碼在存儲庫中對此計算單元進行了定義。在這種情況下,您需要輸入服務器用戶標識和密碼(圖 4)。由於我們處於單服務器環境中,其中只有一個 WebSphere Application Server V6.1 節點,因此您只能選擇自動生成的服務器標識。我們將創建一個名爲“wasadmin”的用戶作爲管理用戶,該用戶將在基於文件的存儲庫中創建和存儲。單擊 OK



    圖 4. 配置域屬性
    圖 4. 配置域屬性

  5. 輸入並確認管理用戶 ID 的密碼,然後單擊 OK(圖 5)。



    圖 5. 選擇管理用戶 ID 的密碼
    圖 5.  選擇管理用戶 ID 的密碼

  6. 現在已經完成了基本的聯合存儲庫配置。接下來,您可以配置 WebSphere Application Server 來使用管理安全性。爲此,請按下列步驟操作(圖 6):

    1. 單擊 Enable administrative security

    2. Application securityJava 2 security 在缺省情況下均被選中。爲簡化此示例,請取消選中 Java 2 security

    3. 確保將 Current realm definition 的值設置爲 Federated repositories。如果需要更改此值,請從 Available realm definitions 下拉列表中選擇 Federated repositories,然後選擇 Set as current。這將更改 Current realm definition 的值。



    圖 6. 啓用管理安全性
    圖 6. 啓用管理安全性

  7. 單擊 Apply,保存更改,然後重新啓動服務器。現在已啓動管理安全性。文件存儲庫已配置,並且可以通過管理控制檯將用戶和組添加到文件存儲庫。

爲 謹慎起見,文件存儲庫存儲在以下目錄中的概要文件中:$WAS_HOME/profiles/<profileName>/config/ cells/<cellName>/fileRegistry.xml。此文件包含用戶和組標識符,其中包括用戶項的加密密碼。用戶的密碼是 使用單向散列算法加密的,即應用 VMM 配置文件 (wimconfig.xml) 中指定的消息摘要算法。消息摘要算法的缺省值爲 SHA-1。可以使用 wsadmin 命令 updateIdMgrFileRepository 將該算法更新爲不同的值。可以與該命令一起使用的一個參數是 messageDigest Algorithm。
  1. 要再次使用管理控制檯,您需要使用剛纔配置的管理用戶 ID 和密碼進行登錄。

  2. 現在,通過導航到管理控制檯中的用戶和組部分,您可以查看文件存儲庫中的用戶。轉到 Manage Users 窗格並搜索現有用戶;使用通配符 * 進行搜索,以查看缺省文件存儲庫中的用戶(圖 7)。



    圖 7. 使用通配符搜索用戶
    圖 7. 使用通配符搜索用戶

  3. 在管理控制檯中,您可以創建和刪除組,添加和刪除用戶以及修改用戶的組成員關係。現在我們將把名爲 userFileRegistry 的用戶添加到註冊表。爲此,只需選擇 Create 並輸入所需的信息。在完成之後,Search for users 屏幕將顯示兩個用戶(圖 8)。



    圖 8. 創建新用戶
    圖 8. 創建新用戶

爲了便於理解和遵循本文中的屏幕截圖,我們將按照約定把用戶名配置爲以下格式:user<Registryname> Registry。這樣可以方便地標識用戶存儲在哪個存儲庫中。此命名約定僅適用於本文,在使用聯合存儲庫時不是 WebSphere Application Server V6.1 所必需的。





使用數據庫存儲庫設置聯合存儲庫

現在您將配置數據庫存儲庫和在上一部分中創建的基於文件的存儲庫。

在 Virtual Member Manager 中,數據庫存儲庫是一個具有特定預定義模式的數據庫,它支持 PersonAccount、Group 和 OrgContainer 的標準 VMM 實體類型。可以使用用戶定義的實體類型擴展該模式,但該主題已超出了本文的討論範圍。還可以對此模式進行擴展,例如,您可以向預定義的實體添加其他用戶屬 性。它不支持使用包含用戶和組信息的現有應用程序數據庫。

數據庫存儲庫還能夠支持包含其他存儲庫中的用戶的組,但只有數據庫存儲庫才能夠支持;基於文件的存儲庫和 LDAP 存儲庫沒有此功能。(有關如何使用 updateIdMgrRepository 命令配置 repositoriesForGroups 參數的詳細信息,請參閱 WebSphere Application Server Information Center

爲了防止發生意外,請在配置其他存儲庫之前備份 wimconfig.xml 文件。如果有必要回滾在新存儲庫配置過程所作的更改,您應能夠通過使用備份版本替換 wimconfig.xml 來做到這一點。但還是要慎重,因爲這是一個不受支持的機制。

在發佈時,無法通過管理控制檯配置數據庫存儲庫;它只能使用命令行 wsadmin 命令進行配置。在本部分中,您將瞭解如何使用 IBM DB2® 數據庫配置數據庫用戶存儲庫。(如果願意,可以使用 WebSphere Application Server 支持的任何其他數據庫,並且這些步驟是類似的。)對位於概要的以下配置目錄的文件 wimconfig.xml 進行了所有屬於新存儲庫配置的更改。$WAS_HOME/profiles/<profileName>/config/cells/ <cellName>/wim/config。

要使用 JDBC 類型 4 驅動程序配置 DB2 數據庫存儲庫:

  1. 創建 DB2 數據庫。數據庫存儲庫的表將由 wsadmin 命令創建。對於此配置,我們創建了一個名爲 wimDB 的數據庫。

  2. 配置 JNDI 名稱爲 jdbc/wimDB 的 DB2 數據源(使用管理控制檯或 wsadmin 命令)。此數據源將用於配置訪問此數據庫的聯合存儲庫。(請參閱信息中心中的 Configuring a data source using the administrative console

    如果在運行 wsadmin 命令配置數據庫存儲庫時,您遇到在類路徑中未發現 DB2 類的問題,請檢查並確保 WebSphere Application Server 變量 DB2_JDBC_DRIVER_PATH 已正確設置。

  3. 通過使用此 wsadmin 命令設置存儲庫來創建 wimDB 表(將 $WAS_HOME 替換爲 WAS_HOME 環境變量的實際值):

    wsadmin>$AdminTask setupIdMgrDBTables {-schemaLocation "$WAS_HOME/etc/wim/setup"
    -dbPropXML "$WAS_HOME /etc/wim/setup/wimdbproperties.xml" -databaseType db2 -dbURL
    jdbc:db2:wimDB -dbDriver com.ibm.db2.jcc.DB2Driver -dbAdminId <db2User> -dbAdminPassword
    <db2UserPwd> -dn o=database.org -reportSqlError true}

    在 schemaLocation $WAS_HOME/etc/wim/setup 下,您將發現用於創建 wimDB 表的特定於數據庫的 SQL 文件。對於 DB2,SQL 文件位於 $WAS_HOME/etc/wim/setup/database/db2 下。請注意,命令中的 -dn 項定義要存儲在數據庫存儲庫中的對象的專有名稱的根。這不必要與聯合數據庫存儲庫的基本項相同。數據庫存儲庫中的用戶和組將在此根專有名稱下創建,它可以是您希望的任意值(o=database.org 是本文選擇的任意值)。

    成功實現此命令將創建如圖 9 所示的表(與 DB2 控制中心中顯示的相同)。



    圖 9. 創建的數據庫表
    圖 9. 創建的數據庫表

  4. 使用此 wsadmin 命令向 VMM 註冊 DB 存儲庫:

    wsadmin>$AdminTask createIdMgrDBRepository {-id DB2Repos -dataSourceName jdbc/wimDB 
    -databaseType db2 -dbURL jdbc:db2:wimDB -JDBCDriverClass com.ibm.db2.jcc.DB2Driver
    -dbAdminId <db2User> -dbAdminPassword <db2UserPwd>}

    在此命令中,此處使用的 ID (DB2Repos) 是聯合存儲庫中此存儲庫的存儲庫標識符。(在圖 10 中看到對它的定義時會清楚這一點。)此命令設置使用直接 JDBC 連接訪問數據庫存儲庫所需的數據源名稱和值。之所以必需設置該項,是因爲存在以下情況:即當不存在任何數據源時,運行時可能需要訪問聯合存儲庫;在此情況 下,將使用直接 JDBC 訪問。

  5. 使用以下 wsadmin 命令配置此存儲庫的基本項:

    wsadmin>$AdminTask addIdMgrRepositoryBaseEntry {-id DB2Repos -name 
    "o=database.org" –nameInRepository="o=database.org" }

    此處的基本項名稱 "o=database.org,"setupIdMgrDBTables 命令的 -dn 選項的值相同。在此情況下,我們對聯合存儲庫中的基本項名稱 (-name) 使用了與實際數據庫存儲庫中相同的名稱 (-nameInRepository)。這不是必需的,可以將聯合存儲庫中的基本名稱設置爲與實際存儲庫根專有名稱不同的名稱。

  6. 將新的 baseEntry 添加到缺省域或基本域:

     

  7. 保存配置:

    wsadmin>$AdminConfig save

  8. 退出 wsadmin 並重新啓動服務器。現在已經配置了數據庫存儲庫。

  9. 當您登錄到管理控制檯時,將會看到數據庫存儲庫現在已成爲聯合存儲庫的一部分(圖 10)。



    圖 10. 數據庫存儲庫已添加到聯合存儲庫
    圖 10. 數據庫存儲庫已添加到聯合存儲庫

    而且,在管理存儲庫面板(圖 11)中,數據庫存儲庫顯示爲定義的存儲庫。(從聯合存儲庫中刪除一個存儲庫不會刪除存儲庫定義;它只是一個獨立步驟。)



    圖 11. 管理存儲庫
    圖 11. 管理存儲庫

  10. 在數據庫存儲庫中尚沒有任何用戶。當在管理控制檯中創建新用戶時,也會在基於文件的存儲庫中創建這些用戶。不過,如果還希望能夠從控制檯將 用戶添加到數據庫存儲庫,您需要進行配置更改。現在讓我們瞭解一下如何在管理控制檯中更新聯合存儲庫配置,以便在創建用戶時,也會在數據庫存儲庫中創建這 些用戶,而不是在缺省的基於文件的存儲庫中創建。

    導航到聯合存儲庫配置面板:Secure administration, applications, and infrastructure => Available Realm Definitions => Configure,並選擇 Supported entity types(圖 12)。



    圖 12. 支持的實體類型
    圖 12. 支持的實體類型

  11. 要修改缺省的用戶創建,以便可以使用數據庫存儲庫,您需要將缺省父目錄的基本項更改爲數據庫存儲庫基本項(即 o=database.org)。在本例中,對 PersonAccount 進行更改可以將用戶添加到數據庫存儲庫。(我們不準備進行詳細介紹,但您要清楚對 Group 也需要執行此更改。)選擇 PersonAccount



    圖 13. PersonAccount 屬性
    圖 13. PersonAccount 屬性

  12. 將 Base entry for the default parent(圖 13)的值更改爲 o=database.org 並單擊 Apply



    圖 14. 更改基本項的值
    圖 14. 更改基本項的值

  13. 保存更改(如圖 14 所示)並重新啓動服務器以便基本項更改生效。

    當使用管理控制檯添加新用戶時,只能將其放在一個存儲庫中:由您設置的基本項定義的存儲庫是當前缺省存儲庫。如果需要將用戶添加到其他存儲庫,請使用這些產品中可用的本機工具。

  14. 現在,按前面的內容所示通過選擇 Users and groups => Manage users => Create 創建一個用戶 ID 爲 userDatabaseRegistry 的用戶。完成此操作之後,文件存儲庫和數據庫存儲庫中的用戶都將顯示(圖 15)。



    圖 15. 搜索用戶
    圖 15. 搜索用戶

您已經瞭解瞭如何配置數據庫存儲庫以及如何進行更改,以便在數據庫存儲庫中創建新用戶和組,而不是在缺省的基於文件的存儲庫中創建。在下面的部分中,您將看到如何配置聯合存儲庫,以便將用戶和組添加到 LDAP。





使用 LDAP 存儲庫設置聯合存儲庫

現在將把兩個 LDAP 目錄添加到配置的聯合存儲庫,它目前包含兩個存儲庫:缺省的基於文件的存儲庫和數據庫存儲庫。

將 LDAP 目錄添加到聯合配置的基本步驟是:

  1. 將 LDAP 目錄添加到聯合存儲庫配置可用的存儲庫列表。

  2. 添加位於 LDAP 目錄中特定搜索基的 baseEntries。對於單個 LDAP 目錄,可以添加具有不同搜索基的多個基本項。

我們要添加的兩個 LDAP 目錄是:

  • Windows Active Directory LDAP
  • IBM Tivoli Directory Server。

添加 Active Directory LDAP

將 Active Directory LDAP 添加到可用存儲庫列表:

  1. 登錄到管理控制檯,然後導航到 Security => Secure administration, applications, and infrastructure => Federated repositories => Manage repositories,並選擇 Add



    圖 16. 添加 LDAP 存儲庫
    圖 16. 添加 LDAP 存儲庫

  2. 如圖 16 所示輸入或選擇值,然後選擇 OK 並保存配置。這將把 Active Directory LDAP 添加到配置可用的聯合存儲庫列表。您會注意到通過此配置可以指定 LDAP 故障轉移服務器。如果願意,您可以按 IP 地址或主機名列出多個 LDAP 服務器副本,並且應用服務器將在主服務器失敗時自動切換到備用服務器。還可以爲添加的 LDAP 配置其他屬性;我們將在稍後討論自定義和配置 LDAP 屬性時對其進行介紹。

  3. 現在已經將存儲庫添加到聯合存儲庫列表,需要將一個基本項配置爲指向 LDAP 目錄中的一個子樹(搜索基)。基本項可讓 LDAP 子樹中的項成爲聯合存儲庫域中的一部分。

    要在管理控制檯中配置基本項,請導航到 Security => Secure administration, applications and infrastructure =>Available realm definitions => Federated repositories => Configure

  4. 這時將顯示域中已經配置的基本項;在此情況下,您將看到與基於文件的存儲庫和數據庫存儲庫對應的基本項(圖 17)。現在您將從 Active Directory LDAP 添加一個項。選擇 Add Base entry to Realm



    圖 17. 現有基本項
    圖 17. 現有基本項

  5. 在下面的屏幕中(圖 18),選擇 TestADS 作爲 Repository 的名稱,以指示前面配置的 Active Directory LDAP 的名稱。向聯合存儲庫添加基本項的專有名稱和在 Active Directory LDAP 目錄中添加基本專有名稱,以指定搜索根。前一名稱定義虛擬域中此特定存儲庫的邏輯根項,後一名稱是 LDAP 中將成爲聯合存儲庫一部分的對象集子樹的根。您在這裏實際完成的是定義 LDAP 子樹根和虛擬域根(基)項之間的映射,以便 LDAP 中該子樹下的所有對象都顯示在定義基本項下的邏輯域中。

    如果“Distinguished name of a base entry in this repository”保留爲空,則基本項將映射到 LDAP 服務器的根 (""),並且所有操作都將在根目錄處執行。對於大多數 LDAP 服務器而言,這是不可行的。因此,您應聯繫 LDAP 管理員以確定目錄的正確根。



    圖 18. 存儲庫引用
    圖 18. 存儲庫引用

  6. 在保存之後,圖 19 中顯示的基本項將顯示在聯合存儲庫中。



    圖 19. 此域中的存儲庫
    圖 19. 此域中的存儲庫

    指定的搜索基爲 dc=testadsserver,dc=local。在本文中,我們僅爲配置的 Active Directory LDAP 指定了一個子樹。如果您希望配置其他子樹,可以在適當的子樹根中添加其他基本項。

  7. 重新啓動服務器。

  8. 現在,如果您轉到控制檯的用戶和組區域並搜索所有用戶,就會看到來自基於文件的存儲庫、數據庫存儲庫和 Active Directory LDAP 服務器的用戶。注意 LDAP 用戶的專有名稱:它是 LDAP 中用戶的實際專有名稱的串聯和聯合存儲庫定義的基本項。注意,實際 LDAP (dc=testadsserver,dc=local) 中的子樹根沒有顯示在用戶名中;而是顯示了聯合存儲庫中映射的基本項。用戶的唯一 ID 是用戶 ID 加上基本項,以確保其在聯合存儲庫中的唯一性;不過,這仍要求聯合存儲庫的所有存儲庫中的所有用戶 ID 都必須是唯一的。



    圖 20. 所有存儲庫中的所有用戶
    圖 20. 所有存儲庫中的所有用戶

    對所有用戶的搜索將顯示所有存儲庫中的用戶;注意 userADSLDAPRegistry,它是在 ADS 服務器中創建的。類似地,組搜索將顯示所有存儲庫中的組。單擊各個用戶將提供有關該用戶的詳細信息以及該用戶所屬的組。例如,Administrator 是 Active Directory LDAP 中的用戶;如果單擊此用戶 ID,將顯示圖 21。



    圖 21. 用戶詳細信息
    圖 21. 用戶詳細信息

    如果單擊 Groups 選項卡,將顯示圖 22。



    圖 22. 組詳細信息
    圖 22. 組詳細信息

添加 IBM Tivoli Directory Server

添加 Active Directory LDAP 之後,您可以按照類似步驟將 IBM Tivoli Directory Server 添加到目錄列表。

  1. 按照上述方法通過管理控制檯添加新存儲庫(圖 23)。



    圖 23. 添加新存儲庫
    圖 23. 添加新存儲庫

    與 Active Directory LDAP 的情況相同,我們所需要的是主機名稱。還需要配置其他 LDAP 屬性,這將在稍後討論。在添加 IBM LDAP 之後,將有四個存儲庫顯示在可用聯合存儲庫列表中(圖 24)。



    圖 24. 可用聯合存儲庫
    圖 24. 可用聯合存儲庫

  2. 對於 Active Directory LDAP,要讓 IBM LDAP 中的項可以在聯合存儲庫中使用,至少需要配置一個指向子樹基的基本項。要在管理控制檯中添加基本項,請導航到 Security =>Secure administration, applications and infrastructure =>Available realm definitions => Federated repositories => Configure,然後選擇 Add Base entry to Realm

  3. 在下面的面板中(圖 25),選擇 ITDSLdap。將合適的專有名稱添加到聯合存儲庫 (o=ITDSLdap),並將相應的基本項添加到實際 LDAP (dc=ibm, dc=com)。在完成時,單擊 Apply 應用更改。



    圖 25. 配置 IBM LDAP
    圖 25. 配置 IBM LDAP

    這些項將作爲基本項專有名稱 o=ITDSLdap 下聯合存儲庫的一部分添加到 IBM Tivoli Directory Server LDAP 中的 dc=ibm,dc=com 下,如圖 26 所示。



    圖 26. 聯合存儲庫
    圖 26. 聯合存儲庫

  4. 重新啓動服務器。現在,對用戶的搜索還將顯示 IBM LDAP 中的用戶(圖 27);使用 (cn=users, dc=ibm, dc=com) 中的 ITDS 管理工具在 IBM Tivoli Directory Server 中創建了用戶 userIBMLDAPRegistry。



    圖 27. 搜索所有用戶
    圖 27. 搜索所有用戶

對於其他目錄,請注意用戶 IBMLDAPRegistry 符合聯合存儲庫中的基本項,提供唯一域名稱。





配置和自定義 LDAP 屬性

在上面的部分中,您添加了具有缺省值的 LDAP 目錄,但並沒有自定義任何 LDAP 屬性。現在,我們將介紹在將 LDAP 添加爲聯合屬性的一部分時,可能需要爲 LDAP 配置的其他屬性。我們說“可能”是因爲並不是所有 LDAP 服務器都相同。不同的實現使用不同的對象類來指定用戶和組信息,並且使用不同的方法定義組成員關係。因此缺省值可能無法滿足需要。下面描述了其他可用屬 性,並舉例說明了如何執行 IBM LDAP 目錄的其他配置。

在將 LDAP 添加到聯合存儲庫時,將在配置面板的底部顯示其他三個屬性的鏈接:

  • Performance

    使用 Performance 可以爲配置的 LDAP 設置與搜索超時和搜索結果限制相關的屬性。在優化聯合存儲庫時需要配置 Performance 屬性。(有關詳細信息,請參閱信息中心中的 Increasing the performance of the federated repository configuration

  • LDAP entity types

    Virtual Member Manager 組件定義了三種即時可用的實體類型,表示聯合存儲庫中管理的對象類型。它們提供了一種方法,可以將不同存儲庫中的對象類型映射到 VMM 中的公共對象模型。這些實體類型爲:

    • Group——表示存儲庫中與組相關的對象的實體;映射到 LDAP 中的組對象。
    • OrgContainer——表示與組織相關的對象的實體;映射到 LDAP 中的組織對象。
    • PersonAccount——表示與用戶相關的對象的實體;映射到 LDAP 中的人員對象。

    例如,讓我們看一下 IBM LDAP 的實體類型和組對象配置。IBM LDAP 中的組一般存儲在對象類“groupOfNames”和“groupOfUniqueNames”下。實體類型組的缺省值是對象類 groupOfNames。因此需要添加對象類 groupOfUniqueNames,以確保 LDAP 中使用此對象類定義的所有組對象都正確映射到了 VMM 組。

    1. 在管理控制檯中,導航到 Secure administration, applications, and infrastructure => Federated repositories => Manage repositories => ITDSLdap => LDAP entity types

    2. 選擇 Group 並編輯 Object classes 字段,爲其提供值 groupOfNames;groupOfUniqueNames。注意各項由分號隔開(圖 28)。



      圖 28. 配置組實體
      圖 28. 配置組實體

    3. 您還可以在此屏幕上指定 Search bases 和 Search filter。指定的搜索基必須是存儲庫中基本項的子樹。這裏,基本項是 dc=ibm,dc=com。搜索篩選器必須是 LDAP 目錄中此項的子樹。搜索篩選器配置指定用於搜索此實體類型的 LDAP 搜索篩選器。使用 LDAP 搜索篩選器語法,有效的搜索篩選器爲: (|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames))

      下面介紹了映射 LDAP 搜索篩選器的其他詳細信息。

    4. 保存添加了對象類的組實體類型配置;實體類型配置的對象類顯示在圖 29 中。



      圖 29. 配置的對象類
      圖 29. 配置的對象類

  • Group attribute definition

    要讓 Virtual Member Manager 知道某個對象屬於哪個組,您需要爲對象類定義相關的成員關係屬性。

    1. 對象類的屬性添加在 Group attribute definition => Member attributes 下。在管理控制檯中,導航到 Secure administration, applications, and infrastructure => Federated repositories => Manage repositories => ITDSLdap,並選擇 Group attribute definition



      圖 30. 組成員關係
      圖 30. 組成員關係

    2. Name of group membership attribute(圖 30)指定一個 LDAP 屬性,指出某個項所屬的組。這項取決於所使用的 LDAP。對於 IBM LDAP,該值爲 ibm-allGroups。 對於其他 LDAP 服務器類型,在這裏需要配置本身的屬性。您還可以指定嵌套和動態組成員關係是否位於成員關係屬性範圍內。(本文不詳細介紹這些概念。)因爲並不是所有 LDAP 都具有用於定義組成員關係的支持屬性,所以此屬性是可選的。如果您使用的 LDAP 不支持此屬性,請確保使用它建立組成員關係和改進性能。如果沒有指定組成員關係屬性,則 LDAP 存儲庫通過搜索所有組可以建立成員關係,但是,最終的性能可能會非常低下。

    3. 除指定組成員關係屬性名之 外,您還可以指定組成員關係屬性的範圍。此值指示 Virtual Member Manager 如何能夠遍歷 LDAP 目錄來確定組成員關係。根據 LDAP 目錄實際管理存儲在此屬性中信息的不同方式,可能需要一個或多個調用來確定成員用戶的所有組。指定範圍可以提高諸如搜索之類的性能。對於給定 LDAP 的給定組成員關係屬性,有必要知道給定 LDAP 是如何管理其成員關係屬性的,以及此屬性會返回哪些值。例如,對於 Active Directory LDAP,memberOf 屬性的範圍是 Direct,也就是說,僅返回該用戶的直接父組。要確定用戶的 Nested 組,VMM 必須首先使用 memberOf 屬性獲取直接組,然後逐一遍歷返回的組並獲取其直接組,等等。此過程會導致對 Active Directory LDAP 的多次調用。若要使用 ibm-allGroups 對 IBM Tivoli Directory Server LDAP 執行相同的搜索,則沒有必要執行這種詳細的搜索,因爲 ITDS 維護着所有組,包括使用該屬性的嵌套和動態組成員關係。因此,該屬性的範圍應設置爲 All,以便 VMM 知道不執行其他不必要的調用。

    4. 圖 30 還顯示了兩個提供定義反向鏈接能力的附加屬性,即靜態組和動態組如何維護關於其成員的信息。對於靜態組,成員關係列表作爲成員列表在對象本身中維護。對於動態組,在成員關係屬性中實際維護的是 LDAP 搜索篩選器。

      對於定義組(如 groupOfNames 和 groupOfUniqueNames)的每個成員對象類,您可以爲每個組成員關係定義相應的成員屬性。在我們的示例中,groupOfNames 對象的成員屬性是 member,這是該對象的缺省屬性。您還需要添加一個與 groupOfUniqueNames 對象類對應的 uniqueMember 成員屬性。在 Additional Properties 部分中,選擇 Member Attributes,然後選擇 New

    5. uniqueMember 添加爲一個新成員名,併爲 Object class 添加 groupOfUniqueNames。保留範圍的缺省值 direct。在完成之後,成員屬性將如圖 31 所示。



      圖 31. 成員屬性
      圖 31. 成員屬性

    您還可以爲動態組添加成員屬性,但這超出了本文的討論範圍。不過,如果有包含靜態成員和動態成員的混合組,您可以爲同一對象類同時定義靜態搜索和動態搜索。

映射 LDAP 搜索篩選器

實體類型(組、PersonAccount、orgContainer)的搜索篩選器指定用於搜索此實體類型的 LDAP 搜索篩選器。搜索篩選器語法是標準 LDAP 篩選器的子集。下面顯示了 VMM 中的一些示例篩選器值,並比較了可能已在獨立 WebSphere Application Server 用戶註冊表配置中(未使用聯合存儲庫)使用的查詢字符串。

  1. 如果您希望按用戶 ID 在 LDAP 子樹中搜索,並將您的搜索限制在 Person 對象,則使用的搜索篩選器將是:((uid = %v)(objectclass=Person))。在 VMM 中,需要對此篩選器進行不同的指定,因爲 VMM 不支持替換參數(例如“%v”)。在 VMM 中,使用指定值替代用戶 ID 的篩選器由 VMM 運行時在登錄到應用服務器時進行(根據爲在聯合存儲庫中配置的 LDAP 指定的登錄屬性)。

    例 如,在圖 16 中:在添加 Active Directory LDAP 時,Login properties 字段指定爲“uid”。在登錄過程中,這會轉換爲搜索篩選器“uid=<value>”。如果還需要將搜索限制在 Person 對象,則需要在 PersonAccount 實體類型的搜索篩選器中指定它,如 (objectclass=Person)。對於配置的 Active Directory,將如圖 32 所示。



    圖 32. 修改搜索篩選器
    圖 32. 修改搜索篩選器

    這裏,篩選器 (uid=%v) 隱式地映射到 VMM 運行時。此搜索篩選器還潛在地從 VMM 屬性重映射到特定於 LDAP 的相應屬性。此分離功能使得在各種不同的註冊表中能夠使用標準屬性集。在此特定的示例中,第二個映射級別發生在 VMM 中,其中“uid”在提交搜索字符串以查找實際 LDAP 的用戶之前映射到特定於 LDAP 的屬性。將 VMM 屬性映射到特定於 LDAP 的屬性在 VMM 的配置文件 wimconfig.xml 中指定。

    下一個示例是關於 Active Directory 的特定篩選器,該示例詳細地介紹了映射。

  2. 接 下來,我們將瞭解特定於 Active Directory LDAP 的搜索篩選器以及在 VMM 中配置此類用戶搜索篩選器所需進行的更改。此示例通過匹配“sAMAccountName”或“userPrincipalName”屬性中的值在 Active Directory LDAP 中搜索用戶帳戶。這裏,LDAP 搜索篩選器將是: (|(sAMAccountName=%v)(userPrincipalName=%v))

    在 VMM 中映射此搜索字符串轉換爲將 Active Directory 屬性映射到 VMM 中識別的屬性。將 VMM 中特定於 LDAP 的屬性映射到 VMM 定義的屬性,如 uid、cn、sn 等等。此方法提供了通用的獨立於 LDAP 的模式定義。

    要 執行此搜索,您不需要實際爲 LDAP 實體類型 PersonAccount 指定搜索篩選器。事實上,如前例中所示,替代表達式“%v”在 VMM 的搜索篩選器中不受支持。您所需要做的只是確保 Active Directory 用戶屬性“sAMAccountName”和“userPrincipalName”映射到虛擬成員管理器屬性,並且這些屬性在登錄屬性中已配置,以便運 行時內部創建的搜索表達式能夠執行所需的映射。要完成此任務,請執行以下步驟:

    1. 在 wimconfig.xml 文件中,您需要將 Active Directory 屬性“userPrincipalName”映射到 VMM 屬性“uid”。在文件中搜索配置了 Active Directory LDAP 的部分,併爲此映射添加 <config:attribute> 元素:

      <config:repositories xsi:type="config:LdapRepositoryType"
      adapterClassName="com.ibm.ws.wim.adapter.ldap.LdapAdapter" id="testads"
      isExtIdUnique="true" supportAsyncMode="false"
      supportExternalName="false" supportPaging="false"
      supportSorting="false" supportTransactions="false" certificateFilter=""
      certificateMapMode="exactdn" ldapServerType="AD2003"
      translateRDN="false">
      <config:baseEntries name="o=ads2003"
      nameInRepository="cn=users,dc=testadsserver,dc=local"/>
      .....
      <config:attributeConfiguration>
      ...
      <config:attributes name="userPrincipalName"
      propertyName="uid">
      <config:entityTypes>PersonAccount</config:entityTypes>
      </config:attributes>
      ...
      </config:attributeConfiguration>
      ...
      </config:repositories>

    2. 將 Active Directory 屬性“sAMAccountName”映射到虛擬成員管理器屬性“cn”。與上面的操作一樣,將下面的內容添加到 wimconfig.xml 文件:

      	<config:attributeConfiguration>
      ...
      <config:attributes name="sAMAccountName"
      propertyName="cn">

      <config:entityTypes>PersonAccount</config:entityTypes>
      </config:attributes>
      ...
      </config:attributeConfiguration>

  3. 通過指定值 uid;cn 配置登錄屬性,使其接受屬性“uid”和“cn”。現在,在登錄到應用服務器期間,如果用戶 ID 值是“[email protected]”,則搜索篩選器將搜索“[email protected]”或“cn= [email protected]”。由於“uid”映射到“userPrincipalName”,“cn”映射到 “sAMAccountName”,因此“[email protected]”或 “[email protected]”的等效值是對 Active Directory LDAP 執行的搜索篩選器。

  4. 對於組搜索篩選器,“cn”是用於映射組名稱的 VMM 屬性。而且,對於搜索篩選器,如 (&(cn=%v)(|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames))),篩選器“cn=%v”由 VMM 隱式映射。篩選器 (|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames)) 在組實體類型的搜索篩選器的項中指定。





使用管理控制檯將用戶和組添加到基於 LDAP 的存儲庫

要在 WebSphere Application Server 管理控制檯中創建用戶和組,並讓它們存儲在您的 LDAP 存儲庫中,而不是存儲在缺省的基於文件的存儲庫中,您需要進行一些配置更改,更改操作類似於以前將用戶添加到數據庫存儲庫的操作。需要將缺省父項的基本項 更改爲對 LDAP 存儲庫配置的項。例如,對於配置的 IBM Tivoli Directory Server LDAP:

  1. 導航到 Secure administration, applications, and infrastructure => Federated repositories => Configure => Supported Entity Type

  2. 將 PersonAccount 更改爲含有 BaseEntry cn=users,o=ITDSLdap(圖 33)。



    圖 33. 修改基本項
    圖 33. 修改基本項

  3. 保存並重新啓動服務器。現在,通過管理控制檯添加的用戶將存儲在 IBM LDAP 中。





結束語

現在您已經使用四個獨立存儲庫配置了聯合存儲庫。從管理角度看,在應用服務器啓動時所有存儲庫均必須可用。還要求在同一聯合存儲庫配置下配置的所有 用戶存儲庫中,用戶 ID 必須是唯一的。當用戶登錄時,Virtual Member Manager 運行時將搜索每個存儲庫,以查找該用戶的所有實例。如果在組合存儲庫中發現該用戶的多個實例,則會顯示錯誤消息。

要對 J2EE 應用程序啓用安全性,確保在 WebSphere Application Server 管理控制檯中的安全配置部分中選中了應用程序安全選項(缺省情況下選中了此選項)。

安裝的應用程序將不同的存儲庫看成是一個單一的邏輯存儲庫。所有存儲庫中的用戶和組均可將用戶和組映射到 J2EE 應用程序中的受保護資源。相關示例,請訪問 http://<hostname>:9080/snoop。您應能夠作爲四個配置存儲庫之一中的用戶進行登錄和驗證,以訪問此示例應用程 序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章