在此之前,對于用戶(hù)信息存儲在多個(gè)獨立的用戶(hù)存儲庫環(huán)境,IBM WebSphere Application Server 對該環(huán)境的支持存在一定的局限性。在 6.1 版之前,可用的注冊表選項只有:
實(shí)現支持訪(fǎng)問(wèn)多個(gè)其他注冊表的自定義用戶(hù)注冊表是有可能的,但這可能會(huì )花費大量的開(kāi)發(fā)精力,并且最終結果可能是僅支持只讀操作。
WebSphere Application Server V6.1 提供了一個(gè)新方法:聯(lián)合用戶(hù)注冊表。此功能讓使用多個(gè)存儲庫變得非常簡(jiǎn)單,因為此功能是使用新的 Virtual Member Manager (VMM) 通過(guò)配置而不是開(kāi)發(fā)獲得的。
從本質(zhì)上說(shuō),此功能提供了將多個(gè)獨立用戶(hù)存儲庫中的項映射到一個(gè)虛擬存儲庫的能力。聯(lián)合存儲庫包括一個(gè)單一的域,該域由一組獨立的用戶(hù)存儲庫組成。每個(gè)存儲庫都可以是一個(gè)完整的外部域,或者是該存儲庫中的一個(gè)子樹(shù)(例如在 LDAP 中)。每個(gè)存儲庫的根都映射到聯(lián)合存儲庫中的基本項,該基本項實(shí)際上是虛擬域的分層命名空間中的起始點(diǎn)。在介紹如何配置 VMM 時(shí)您會(huì )對此有一個(gè)更清楚的了解。
這里我們討論的是一種包含來(lái)自多個(gè)基本存儲庫的用戶(hù)的邏輯注冊表思想。對于 WebSphere Application Server 運行時(shí),仍然只有一個(gè)注冊表,因此,計算單元中的所有應用程序仍共享這個(gè)單一的注冊表。請參見(jiàn)圖 1。

Virtual Member Manager 是一個(gè)新組件,它組合了 WebSphere 注冊表、WebSphere Member Manager(來(lái)自 WebSphere Portal)中的一些現有功能,并且是安全管理功能的一個(gè)子集。VMM 的目標是:
![]() |
|
聯(lián)合存儲庫包含的域可能由以下存儲庫中的標識組成:
與本地操作系統、獨立 LDAP 目標或自定義注冊表項不同,聯(lián)合存儲庫為用戶(hù)和組管理提供了讀寫(xiě)能力。當您配置聯(lián)合存儲庫時(shí),可以使用以下選項添加、創(chuàng )建和刪除用戶(hù)和組:
在本文中,我們將通過(guò)配置獨立 WebSphere Application Server V6.1 實(shí)例,使其與包含文件、數據庫和 LDAP 存儲庫的聯(lián)合存儲庫一起運行,向您介紹如何設置和使用 Virtual Member Manager 的基本功能。我們將逐漸向聯(lián)合存儲庫添加一些存儲庫,并演示為進(jìn)行用戶(hù)和組管理,作為一個(gè)邏輯統一的存儲庫查看不同存儲庫的能力。我們還將學(xué)習如何配置 LDAP 組成員選項。
從管理控制臺中只能將一個(gè)用戶(hù)存儲庫配置為創(chuàng )建用戶(hù)/組的目標。缺省情況下,該存儲庫是文件存儲庫,但可以更改該存儲庫,稍后您將了解到這一點(diǎn)。您可以使用用戶(hù)和組管理 wsadmin 命令在其他存儲庫中創(chuàng )建用戶(hù)/組,或對這些存儲庫使用本機工具。
用戶(hù)名(例如,LDAP 用戶(hù) ID)在不同的存儲庫中必須是唯一的。例如,用戶(hù)在不同的 LDAP 存儲庫中不能具有相同的用戶(hù) ID,甚至在不同的組織結構下也不能相同。
如果聯(lián)合存儲庫中的一個(gè)或多個(gè)存儲庫停止運行,那么您將無(wú)法進(jìn)行身份驗證(甚至作為管理員也無(wú)法驗證),而不論您的特定 ID 存儲在哪個(gè)存儲庫中。VMM 組件總是檢查所有存儲庫才能讓身份驗證成功。
盡管 VMM 能夠支持多個(gè)域,但 WebSphere Application Server 目前僅支持一個(gè)域。它在計算單元級別定義并由所有應用程序共享。
在 WebSphere Application Server V6.1 信息中心列出了其他限制。
![]() ![]() |
![]()
|
缺省情況下,WebSphere Application Server V6.1 在安裝過(guò)程中支持管理安全性。除非禁用此選項,否則基于文件的存儲庫將被自動(dòng)用作用戶(hù)注冊表。
我們將通過(guò)配置內置的基于文件的存儲庫開(kāi)始我們的練習,并假設在安裝過(guò)程中禁用了管理安全性。如果在安裝過(guò)程中沒(méi)有禁用管理安全性選項,則需要在安裝過(guò)程中提供管理用戶(hù)名和密碼,如圖 2 所示。

我們將假設在安裝過(guò)程中禁用了此選項,因此我們可以向您介紹如何從頭配置聯(lián)合存儲庫。(一般情況下,在安裝過(guò)程中不應禁用管理安全性。)
要使用安全配置,請訪(fǎng)問(wèn) WebSphere Application Server 管理控制臺,并導航到 Security => Secure administration, applications and infrastructure。對于本文而言,我們僅配置管理安全性。另外,還應始終啟用應用程序安全性,以便應用程序能夠利用 WebSphere Application Server 安全性。
下面的部分將介紹如何使用以下選項設置聯(lián)合存儲庫:
![]() ![]() |
![]()
|
這里,您將使用缺省的基于文件的存儲庫配置聯(lián)合存儲庫,然后啟用管理安全性。
在 Secure administration, applications, and infrastructure 對話(huà)框中,從 Available realm definitions 下拉菜單中選擇 Federated repositories,然后單擊 Configure(圖 3)。

聯(lián)合存儲庫由一個(gè)包含多個(gè)基本項的單一域構成。WebSphere Application Server 中的域是用戶(hù)注冊表的一個(gè)實(shí)例;該域是表示用戶(hù)注冊表的頂級邏輯項。在聯(lián)合存儲庫配置中,聯(lián)合存儲庫實(shí)例就是該域。缺省情況下,域名稱(chēng)為 defaultWIMFileBasedRealm(圖 4)。此名稱(chēng)可以根據您的環(huán)境更改為任何合適的名稱(chēng);它不必與域的基本項相同。盡管實(shí)際上您可以將該域名稱(chēng)更改為更合適的名稱(chēng),但在本文中,我們將把該域名稱(chēng)保留為缺省名稱(chēng)。
基本項標識域中一組對象的根(或起始點(diǎn));在一個(gè)域中可以有多個(gè)基本項。在給定的存儲庫中,每個(gè)基本項都映射到目錄樹(shù)的根。在平面存儲庫中(例如基于文件的存儲庫),基本項是存儲庫中所有項的根。在分層存儲庫中(例如 LDAP),基本項映射到目錄信息樹(shù)中標識 DIT 中子樹(shù)頂部的一個(gè)項。(我們將在介紹 LDAP 存儲庫時(shí)進(jìn)一步闡述該內容。)缺省情況下,存在一個(gè)與基于文件的存儲庫對應的單一基本項:o=defaultWIMFileBasedRealm(圖 4)。這是基于文件的存儲庫的根的標識符。在此基本項下創(chuàng )建的所有用戶(hù)都將有一個(gè)完全限定的名稱(chēng) uid=<UID>, o=defaultWIMFileBasedRealm。由于基于文件的存儲庫不是分層結構,因此該文件存儲庫中的所有對象都將存儲在此基本項下。
WebSphere Application Server V6.1 對管理環(huán)境的管理員用戶(hù)標識和驗證服務(wù)器間通信的服務(wù)器標識進(jìn)行了區分。在大多數情況下,服務(wù)器標識是自動(dòng)生成的,不存儲在存儲庫中。不過(guò),如果您要將版本 5.0.x 或 6.0.x 節點(diǎn)添加到版本 6.1 計算單元,則必須確保版本 5.x 或版本 6.0.x 服務(wù)器標識和密碼在存儲庫中對此計算單元進(jìn)行了定義。在這種情況下,您需要輸入服務(wù)器用戶(hù)標識和密碼(圖 4)。由于我們處于單服務(wù)器環(huán)境中,其中只有一個(gè) WebSphere Application Server V6.1 節點(diǎn),因此您只能選擇自動(dòng)生成的服務(wù)器標識。我們將創(chuàng )建一個(gè)名為“wasadmin”的用戶(hù)作為管理用戶(hù),該用戶(hù)將在基于文件的存儲庫中創(chuàng )建和存儲。單擊 OK。

輸入并確認管理用戶(hù) ID 的密碼,然后單擊 OK(圖 5)。

現在已經(jīng)完成了基本的聯(lián)合存儲庫配置。接下來(lái),您可以配置 WebSphere Application Server 來(lái)使用管理安全性。為此,請按下列步驟操作(圖 6):
單擊 Enable administrative security。
Application security 和 Java 2 security 在缺省情況下均被選中。為簡(jiǎn)化此示例,請取消選中 Java 2 security。
確保將 Current realm definition 的值設置為 Federated repositories。如果需要更改此值,請從 Available realm definitions 下拉列表中選擇 Federated repositories,然后選擇 Set as current。這將更改 Current realm definition 的值。

單擊 Apply,保存更改,然后重新啟動(dòng)服務(wù)器?,F在已啟動(dòng)管理安全性。文件存儲庫已配置,并且可以通過(guò)管理控制臺將用戶(hù)和組添加到文件存儲庫。
![]() |
|
要再次使用管理控制臺,您需要使用剛才配置的管理用戶(hù) ID 和密碼進(jìn)行登錄。
現在,通過(guò)導航到管理控制臺中的用戶(hù)和組部分,您可以查看文件存儲庫中的用戶(hù)。轉到 Manage Users 窗格并搜索現有用戶(hù);使用通配符 * 進(jìn)行搜索,以查看缺省文件存儲庫中的用戶(hù)(圖 7)。

在管理控制臺中,您可以創(chuàng )建和刪除組,添加和刪除用戶(hù)以及修改用戶(hù)的組成員關(guān)系?,F在我們將把名為 userFileRegistry 的用戶(hù)添加到注冊表。為此,只需選擇 Create 并輸入所需的信息。在完成之后,Search for users 屏幕將顯示兩個(gè)用戶(hù)(圖 8)。

為了便于理解和遵循本文中的屏幕截圖,我們將按照約定把用戶(hù)名配置為以下格式:user<Registryname>Registry。這樣可以方便地標識用戶(hù)存儲在哪個(gè)存儲庫中。此命名約定僅適用于本文,在使用聯(lián)合存儲庫時(shí)不是 WebSphere Application Server V6.1 所必需的。
![]() ![]() |
![]()
|
現在您將配置數據庫存儲庫和在上一部分中創(chuàng )建的基于文件的存儲庫。
在 Virtual Member Manager 中,數據庫存儲庫是一個(gè)具有特定預定義模式的數據庫,它支持 PersonAccount、Group 和 OrgContainer 的標準 VMM 實(shí)體類(lèi)型??梢允褂糜脩?hù)定義的實(shí)體類(lèi)型擴展該模式,但該主題已超出了本文的討論范圍。還可以對此模式進(jìn)行擴展,例如,您可以向預定義的實(shí)體添加其他用戶(hù)屬性。它不支持使用包含用戶(hù)和組信息的現有應用程序數據庫。
數據庫存儲庫還能夠支持包含其他存儲庫中的用戶(hù)的組,但只有數據庫存儲庫才能夠支持;基于文件的存儲庫和 LDAP 存儲庫沒(méi)有此功能。(有關(guān)如何使用 updateIdMgrRepository 命令配置 repositoriesForGroups 參數的詳細信息,請參閱 WebSphere Application Server Information Center)
![]() |
|
在發(fā)布時(shí),無(wú)法通過(guò)管理控制臺配置數據庫存儲庫;它只能使用命令行 wsadmin 命令進(jìn)行配置。在本部分中,您將了解如何使用 IBM DB2® 數據庫配置數據庫用戶(hù)存儲庫。(如果愿意,可以使用 WebSphere Application Server 支持的任何其他數據庫,并且這些步驟是類(lèi)似的。)對位于概要的以下配置目錄的文件 wimconfig.xml 進(jìn)行了所有屬于新存儲庫配置的更改。$WAS_HOME\profiles\<profileName>\config\cells\<cellName>\wim\config。
要使用 JDBC 類(lèi)型 4 驅動(dòng)程序配置 DB2 數據庫存儲庫:
創(chuàng )建 DB2 數據庫。數據庫存儲庫的表將由 wsadmin 命令創(chuàng )建。對于此配置,我們創(chuàng )建了一個(gè)名為 wimDB 的數據庫。
配置 JNDI 名稱(chēng)為 jdbc/wimDB 的 DB2 數據源(使用管理控制臺或 wsadmin 命令)。此數據源將用于配置訪(fǎng)問(wèn)此數據庫的聯(lián)合存儲庫。(請參閱信息中心中的 Configuring a data source using the administrative console)
如果在運行 wsadmin 命令配置數據庫存儲庫時(shí),您遇到在類(lèi)路徑中未發(fā)現 DB2 類(lèi)的問(wèn)題,請檢查并確保 WebSphere Application Server 變量 DB2_JDBC_DRIVER_PATH 已正確設置。
通過(guò)使用此 wsadmin 命令設置存儲庫來(lái)創(chuàng )建 wimDB 表(將 $WAS_HOME 替換為 WAS_HOME 環(huán)境變量的實(shí)際值):
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 |--10--------20--------30--------40--------50--------60--------70--------80--------9| |-------- XML error: The previous line is longer than the max of 90 characters ---------| <db2UserPwd> -dn o=database.org -reportSqlError true} |
在 schemaLocation $WAS_HOME\etc\wim\setup 下,您將發(fā)現用于創(chuàng )建 wimDB 表的特定于數據庫的 SQL 文件。對于 DB2,SQL 文件位于 $WAS_HOME\etc\wim\setup\database\db2 下。請注意,命令中的 -dn 項定義要存儲在數據庫存儲庫中的對象的專(zhuān)有名稱(chēng)的根。這不必要與聯(lián)合數據庫存儲庫的基本項相同。數據庫存儲庫中的用戶(hù)和組將在此根專(zhuān)有名稱(chēng)下創(chuàng )建,它可以是您希望的任意值(o=database.org 是本文選擇的任意值)。
成功實(shí)現此命令將創(chuàng )建如圖 9 所示的表(與 DB2 控制中心中顯示的相同)。

使用此 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) 是聯(lián)合存儲庫中此存儲庫的存儲庫標識符。(在圖 10 中看到對它的定義時(shí)會(huì )清楚這一點(diǎn)。)此命令設置使用直接 JDBC 連接訪(fǎng)問(wèn)數據庫存儲庫所需的數據源名稱(chēng)和值。之所以必需設置該項,是因為存在以下情況:即當不存在任何數據源時(shí),運行時(shí)可能需要訪(fǎng)問(wèn)聯(lián)合存儲庫;在此情況下,將使用直接 JDBC 訪(fǎng)問(wèn)。
使用以下 wsadmin 命令配置此存儲庫的基本項:
wsadmin>$AdminTask addIdMgrRepositoryBaseEntry {-id DB2Repos -name "o=database.org" –nameInRepository="o=database.org" } |
此處的基本項名稱(chēng) "o=database.org," 與 setupIdMgrDBTables 命令的 -dn 選項的值相同。在此情況下,我們對聯(lián)合存儲庫中的基本項名稱(chēng) (-name) 使用了與實(shí)際數據庫存儲庫中相同的名稱(chēng) (-nameInRepository)。這不是必需的,可以將聯(lián)合存儲庫中的基本名稱(chēng)設置為與實(shí)際存儲庫根專(zhuān)有名稱(chēng)不同的名稱(chēng)。
將新的 baseEntry 添加到缺省域或基本域:
wsadmin>$AdminTask addIdMgrRealmBaseEntry {-name "defaultWIMFileBasedRealm" -baseEntry "o=database.org"} |--10--------20--------30--------40--------50--------60--------70--------80--------9| |-------- XML error: The previous line is longer than the max of 90 characters ---------| |
保存配置:
wsadmin>$AdminConfig save |
退出 wsadmin 并重新啟動(dòng)服務(wù)器?,F在已經(jīng)配置了數據庫存儲庫。
當您登錄到管理控制臺時(shí),將會(huì )看到數據庫存儲庫現在已成為聯(lián)合存儲庫的一部分(圖 10)。

而且,在管理存儲庫面板(圖 11)中,數據庫存儲庫顯示為定義的存儲庫。(從聯(lián)合存儲庫中刪除一個(gè)存儲庫不會(huì )刪除存儲庫定義;它只是一個(gè)獨立步驟。)
在數據庫存儲庫中尚沒(méi)有任何用戶(hù)。當在管理控制臺中創(chuàng )建新用戶(hù)時(shí),也會(huì )在基于文件的存儲庫中創(chuàng )建這些用戶(hù)。不過(guò),如果還希望能夠從控制臺將用戶(hù)添加到數據庫存儲庫,您需要進(jìn)行配置更改?,F在讓我們了解一下如何在管理控制臺中更新聯(lián)合存儲庫配置,以便在創(chuàng )建用戶(hù)時(shí),也會(huì )在數據庫存儲庫中創(chuàng )建這些用戶(hù),而不是在缺省的基于文件的存儲庫中創(chuàng )建。
導航到聯(lián)合存儲庫配置面板:Secure administration, applications, and infrastructure => Available Realm Definitions => Configure,并選擇 Supported entity types(圖 12)。

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

將 Base entry for the default parent(圖 13)的值更改為 o=database.org 并單擊 Apply。

保存更改(如圖 14 所示)并重新啟動(dòng)服務(wù)器以便基本項更改生效。
當使用管理控制臺添加新用戶(hù)時(shí),只能將其放在一個(gè)存儲庫中:由您設置的基本項定義的存儲庫是當前缺省存儲庫。如果需要將用戶(hù)添加到其他存儲庫,請使用這些產(chǎn)品中可用的本機工具。
現在,按前面的內容所示通過(guò)選擇 Users and groups => Manage users => Create 創(chuàng )建一個(gè)用戶(hù) ID 為 userDatabaseRegistry 的用戶(hù)。完成此操作之后,文件存儲庫和數據庫存儲庫中的用戶(hù)都將顯示(圖 15)。

您已經(jīng)了解了如何配置數據庫存儲庫以及如何進(jìn)行更改,以便在數據庫存儲庫中創(chuàng )建新用戶(hù)和組,而不是在缺省的基于文件的存儲庫中創(chuàng )建。在下面的部分中,您將看到如何配置聯(lián)合存儲庫,以便將用戶(hù)和組添加到 LDAP。
![]() ![]() |
![]()
|
現在將把兩個(gè) LDAP 目錄添加到配置的聯(lián)合存儲庫,它目前包含兩個(gè)存儲庫:缺省的基于文件的存儲庫和數據庫存儲庫。
將 LDAP 目錄添加到聯(lián)合配置的基本步驟是:
將 LDAP 目錄添加到聯(lián)合存儲庫配置可用的存儲庫列表。
添加位于 LDAP 目錄中特定搜索基的 baseEntries。對于單個(gè) LDAP 目錄,可以添加具有不同搜索基的多個(gè)基本項。
我們要添加的兩個(gè) LDAP 目錄是:
將 Active Directory LDAP 添加到可用存儲庫列表:
登錄到管理控制臺,然后導航到 Security => Secure administration, applications, and infrastructure => Federated repositories => Manage repositories,并選擇 Add。

如圖 16 所示輸入或選擇值,然后選擇 OK 并保存配置。這將把 Active Directory LDAP 添加到配置可用的聯(lián)合存儲庫列表。您會(huì )注意到通過(guò)此配置可以指定 LDAP 故障轉移服務(wù)器。如果愿意,您可以按 IP 地址或主機名列出多個(gè) LDAP 服務(wù)器副本,并且應用服務(wù)器將在主服務(wù)器失敗時(shí)自動(dòng)切換到備用服務(wù)器。還可以為添加的 LDAP 配置其他屬性;我們將在稍后討論自定義和配置 LDAP 屬性時(shí)對其進(jìn)行介紹。
現在已經(jīng)將存儲庫添加到聯(lián)合存儲庫列表,需要將一個(gè)基本項配置為指向 LDAP 目錄中的一個(gè)子樹(shù)(搜索基)?;卷椏勺?LDAP 子樹(shù)中的項成為聯(lián)合存儲庫域中的一部分。
要在管理控制臺中配置基本項,請導航到 Security => Secure administration, applications and infrastructure =>Available realm definitions => Federated repositories => Configure。
這時(shí)將顯示域中已經(jīng)配置的基本項;在此情況下,您將看到與基于文件的存儲庫和數據庫存儲庫對應的基本項(圖 17)?,F在您將從 Active Directory LDAP 添加一個(gè)項。選擇 Add Base entry to Realm。

在下面的屏幕中(圖 18),選擇 TestADS 作為 Repository 的名稱(chēng),以指示前面配置的 Active Directory LDAP 的名稱(chēng)。向聯(lián)合存儲庫添加基本項的專(zhuān)有名稱(chēng)和在 Active Directory LDAP 目錄中添加基本專(zhuān)有名稱(chēng),以指定搜索根。前一名稱(chēng)定義虛擬域中此特定存儲庫的邏輯根項,后一名稱(chēng)是 LDAP 中將成為聯(lián)合存儲庫一部分的對象集子樹(shù)的根。您在這里實(shí)際完成的是定義 LDAP 子樹(shù)根和虛擬域根(基)項之間的映射,以便 LDAP 中該子樹(shù)下的所有對象都顯示在定義基本項下的邏輯域中。
如果“Distinguished name of a base entry in this repository”保留為空,則基本項將映射到 LDAP 服務(wù)器的根 (""),并且所有操作都將在根目錄處執行。對于大多數 LDAP 服務(wù)器而言,這是不可行的。因此,您應聯(lián)系 LDAP 管理員以確定目錄的正確根。

在保存之后,圖 19 中顯示的基本項將顯示在聯(lián)合存儲庫中。

指定的搜索基為 dc=testadsserver,dc=local。在本文中,我們僅為配置的 Active Directory LDAP 指定了一個(gè)子樹(shù)。如果您希望配置其他子樹(shù),可以在適當的子樹(shù)根中添加其他基本項。
重新啟動(dòng)服務(wù)器。
現在,如果您轉到控制臺的用戶(hù)和組區域并搜索所有用戶(hù),就會(huì )看到來(lái)自基于文件的存儲庫、數據庫存儲庫和 Active Directory LDAP 服務(wù)器的用戶(hù)。注意 LDAP 用戶(hù)的專(zhuān)有名稱(chēng):它是 LDAP 中用戶(hù)的實(shí)際專(zhuān)有名稱(chēng)的串聯(lián)和聯(lián)合存儲庫定義的基本項。注意,實(shí)際 LDAP (dc=testadsserver,dc=local) 中的子樹(shù)根沒(méi)有顯示在用戶(hù)名中;而是顯示了聯(lián)合存儲庫中映射的基本項。用戶(hù)的唯一 ID 是用戶(hù) ID 加上基本項,以確保其在聯(lián)合存儲庫中的唯一性;不過(guò),這仍要求聯(lián)合存儲庫的所有存儲庫中的所有用戶(hù) ID 都必須是唯一的。

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

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

添加 IBM Tivoli Directory Server
添加 Active Directory LDAP 之后,您可以按照類(lèi)似步驟將 IBM Tivoli Directory Server 添加到目錄列表。
按照上述方法通過(guò)管理控制臺添加新存儲庫(圖 23)。

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

對于 Active Directory LDAP,要讓 IBM LDAP 中的項可以在聯(lián)合存儲庫中使用,至少需要配置一個(gè)指向子樹(shù)基的基本項。要在管理控制臺中添加基本項,請導航到 Security =>Secure administration, applications and infrastructure =>Available realm definitions => Federated repositories => Configure,然后選擇 Add Base entry to Realm。
在下面的面板中(圖 25),選擇 ITDSLdap。將合適的專(zhuān)有名稱(chēng)添加到聯(lián)合存儲庫 (o=ITDSLdap),并將相應的基本項添加到實(shí)際 LDAP (dc=ibm, dc=com)。在完成時(shí),單擊 Apply 應用更改。

這些項將作為基本項專(zhuān)有名稱(chēng) o=ITDSLdap 下聯(lián)合存儲庫的一部分添加到 IBM Tivoli Directory Server LDAP 中的 dc=ibm,dc=com 下,如圖 26 所示。

重新啟動(dòng)服務(wù)器?,F在,對用戶(hù)的搜索還將顯示 IBM LDAP 中的用戶(hù)(圖 27);使用 (cn=users, dc=ibm, dc=com) 中的 ITDS 管理工具在 IBM Tivoli Directory Server 中創(chuàng )建了用戶(hù) userIBMLDAPRegistry。

對于其他目錄,請注意用戶(hù) IBMLDAPRegistry 符合聯(lián)合存儲庫中的基本項,提供唯一域名稱(chēng)。
![]() ![]() |
![]()
|
在上面的部分中,您添加了具有缺省值的 LDAP 目錄,但并沒(méi)有自定義任何 LDAP 屬性?,F在,我們將介紹在將 LDAP 添加為聯(lián)合屬性的一部分時(shí),可能需要為 LDAP 配置的其他屬性。我們說(shuō)“可能”是因為并不是所有 LDAP 服務(wù)器都相同。不同的實(shí)現使用不同的對象類(lèi)來(lái)指定用戶(hù)和組信息,并且使用不同的方法定義組成員關(guān)系。因此缺省值可能無(wú)法滿(mǎn)足需要。下面描述了其他可用屬性,并舉例說(shuō)明了如何執行 IBM LDAP 目錄的其他配置。
在將 LDAP 添加到聯(lián)合存儲庫時(shí),將在配置面板的底部顯示其他三個(gè)屬性的鏈接:
Performance
使用 Performance 可以為配置的 LDAP 設置與搜索超時(shí)和搜索結果限制相關(guān)的屬性。在優(yōu)化聯(lián)合存儲庫時(shí)需要配置 Performance 屬性。(有關(guān)詳細信息,請參閱信息中心中的 Increasing the performance of the federated repository configuration)
LDAP entity types
Virtual Member Manager 組件定義了三種即時(shí)可用的實(shí)體類(lèi)型,表示聯(lián)合存儲庫中管理的對象類(lèi)型。它們提供了一種方法,可以將不同存儲庫中的對象類(lèi)型映射到 VMM 中的公共對象模型。這些實(shí)體類(lèi)型為:
例如,讓我們看一下 IBM LDAP 的實(shí)體類(lèi)型和組對象配置。IBM LDAP 中的組一般存儲在對象類(lèi)“groupOfNames”和“groupOfUniqueNames”下。實(shí)體類(lèi)型組的缺省值是對象類(lèi) groupOfNames。因此需要添加對象類(lèi) groupOfUniqueNames,以確保 LDAP 中使用此對象類(lèi)定義的所有組對象都正確映射到了 VMM 組。
在管理控制臺中,導航到 Secure administration, applications, and infrastructure => Federated repositories => Manage repositories => ITDSLdap => LDAP entity types。
選擇 Group 并編輯 Object classes 字段,為其提供值 groupOfNames;groupOfUniqueNames。注意各項由分號隔開(kāi)(圖 28)。

您還可以在此屏幕上指定 Search bases 和 Search filter。指定的搜索基必須是存儲庫中基本項的子樹(shù)。這里,基本項是 dc=ibm,dc=com。搜索篩選器必須是 LDAP 目錄中此項的子樹(shù)。搜索篩選器配置指定用于搜索此實(shí)體類(lèi)型的 LDAP 搜索篩選器。使用 LDAP 搜索篩選器語(yǔ)法,有效的搜索篩選器為: (|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames))。
下面介紹了映射 LDAP 搜索篩選器的其他詳細信息。
保存添加了對象類(lèi)的組實(shí)體類(lèi)型配置;實(shí)體類(lèi)型配置的對象類(lèi)顯示在圖 29 中。

Group attribute definition
要讓 Virtual Member Manager 知道某個(gè)對象屬于哪個(gè)組,您需要為對象類(lèi)定義相關(guān)的成員關(guān)系屬性。
對象類(lèi)的屬性添加在 Group attribute definition => Member attributes 下。在管理控制臺中,導航到 Secure administration, applications, and infrastructure => Federated repositories => Manage repositories => ITDSLdap,并選擇 Group attribute definition。

Name of group membership attribute(圖 30)指定一個(gè) LDAP 屬性,指出某個(gè)項所屬的組。這項取決于所使用的 LDAP。對于 IBM LDAP,該值為 ibm-allGroups。對于其他 LDAP 服務(wù)器類(lèi)型,在這里需要配置本身的屬性。您還可以指定嵌套和動(dòng)態(tài)組成員關(guān)系是否位于成員關(guān)系屬性范圍內。(本文不詳細介紹這些概念。)因為并不是所有 LDAP 都具有用于定義組成員關(guān)系的支持屬性,所以此屬性是可選的。如果您使用的 LDAP 不支持此屬性,請確保使用它建立組成員關(guān)系和改進(jìn)性能。如果沒(méi)有指定組成員關(guān)系屬性,則 LDAP 存儲庫通過(guò)搜索所有組可以建立成員關(guān)系,但是,最終的性能可能會(huì )非常低下。
除指定組成員關(guān)系屬性名之外,您還可以指定組成員關(guān)系屬性的范圍。此值指示 Virtual Member Manager 如何能夠遍歷 LDAP 目錄來(lái)確定組成員關(guān)系。根據 LDAP 目錄實(shí)際管理存儲在此屬性中信息的不同方式,可能需要一個(gè)或多個(gè)調用來(lái)確定成員用戶(hù)的所有組。指定范圍可以提高諸如搜索之類(lèi)的性能。對于給定 LDAP 的給定組成員關(guān)系屬性,有必要知道給定 LDAP 是如何管理其成員關(guān)系屬性的,以及此屬性會(huì )返回哪些值。例如,對于 Active Directory LDAP,memberOf 屬性的范圍是 Direct,也就是說(shuō),僅返回該用戶(hù)的直接父組。要確定用戶(hù)的 Nested 組,VMM 必須首先使用 memberOf 屬性獲取直接組,然后逐一遍歷返回的組并獲取其直接組,等等。此過(guò)程會(huì )導致對 Active Directory LDAP 的多次調用。若要使用 ibm-allGroups 對 IBM Tivoli Directory Server LDAP 執行相同的搜索,則沒(méi)有必要執行這種詳細的搜索,因為 ITDS 維護著(zhù)所有組,包括使用該屬性的嵌套和動(dòng)態(tài)組成員關(guān)系。因此,該屬性的范圍應設置為 All,以便 VMM 知道不執行其他不必要的調用。
圖 30 還顯示了兩個(gè)提供定義反向鏈接能力的附加屬性,即靜態(tài)組和動(dòng)態(tài)組如何維護關(guān)于其成員的信息。對于靜態(tài)組,成員關(guān)系列表作為成員列表在對象本身中維護。對于動(dòng)態(tài)組,在成員關(guān)系屬性中實(shí)際維護的是 LDAP 搜索篩選器。
對于定義組(如 groupOfNames 和 groupOfUniqueNames)的每個(gè)成員對象類(lèi),您可以為每個(gè)組成員關(guān)系定義相應的成員屬性。在我們的示例中,groupOfNames 對象的成員屬性是 member,這是該對象的缺省屬性。您還需要添加一個(gè)與 groupOfUniqueNames 對象類(lèi)對應的 uniqueMember 成員屬性。在 Additional Properties 部分中,選擇 Member Attributes,然后選擇 New。
將 uniqueMember 添加為一個(gè)新成員名,并為 Object class 添加 groupOfUniqueNames。保留范圍的缺省值 direct。在完成之后,成員屬性將如圖 31 所示。

您還可以為動(dòng)態(tài)組添加成員屬性,但這超出了本文的討論范圍。不過(guò),如果有包含靜態(tài)成員和動(dòng)態(tài)成員的混合組,您可以為同一對象類(lèi)同時(shí)定義靜態(tài)搜索和動(dòng)態(tài)搜索。
實(shí)體類(lèi)型(組、PersonAccount、orgContainer)的搜索篩選器指定用于搜索此實(shí)體類(lèi)型的 LDAP 搜索篩選器。搜索篩選器語(yǔ)法是標準 LDAP 篩選器的子集。下面顯示了 VMM 中的一些示例篩選器值,并比較了可能已在獨立 WebSphere Application Server 用戶(hù)注冊表配置中(未使用聯(lián)合存儲庫)使用的查詢(xún)字符串。
如果您希望按用戶(hù) ID 在 LDAP 子樹(shù)中搜索,并將您的搜索限制在 Person 對象,則使用的搜索篩選器將是:((uid = %v)(objectclass=Person))。在 VMM 中,需要對此篩選器進(jìn)行不同的指定,因為 VMM 不支持替換參數(例如“%v”)。在 VMM 中,使用指定值替代用戶(hù) ID 的篩選器由 VMM 運行時(shí)在登錄到應用服務(wù)器時(shí)進(jìn)行(根據為在聯(lián)合存儲庫中配置的 LDAP 指定的登錄屬性)。
例如,在圖 16 中:在添加 Active Directory LDAP 時(shí),Login properties 字段指定為“uid”。在登錄過(guò)程中,這會(huì )轉換為搜索篩選器“uid=<value>”。如果還需要將搜索限制在 Person 對象,則需要在 PersonAccount 實(shí)體類(lèi)型的搜索篩選器中指定它,如 (objectclass=Person)。對于配置的 Active Directory,將如圖 32 所示。

這里,篩選器 (uid=%v) 隱式地映射到 VMM 運行時(shí)。此搜索篩選器還潛在地從 VMM 屬性重映射到特定于 LDAP 的相應屬性。此分離功能使得在各種不同的注冊表中能夠使用標準屬性集。在此特定的示例中,第二個(gè)映射級別發(fā)生在 VMM 中,其中“uid”在提交搜索字符串以查找實(shí)際 LDAP 的用戶(hù)之前映射到特定于 LDAP 的屬性。將 VMM 屬性映射到特定于 LDAP 的屬性在 VMM 的配置文件 wimconfig.xml 中指定。
下一個(gè)示例是關(guān)于 Active Directory 的特定篩選器,該示例詳細地介紹了映射。
接下來(lái),我們將了解特定于 Active Directory LDAP 的搜索篩選器以及在 VMM 中配置此類(lèi)用戶(hù)搜索篩選器所需進(jìn)行的更改。此示例通過(guò)匹配“sAMAccountName”或“userPrincipalName”屬性中的值在 Active Directory LDAP 中搜索用戶(hù)帳戶(hù)。這里,LDAP 搜索篩選器將是: (|(sAMAccountName=%v)(userPrincipalName=%v))。
在 VMM 中映射此搜索字符串轉換為將 Active Directory 屬性映射到 VMM 中識別的屬性。將 VMM 中特定于 LDAP 的屬性映射到 VMM 定義的屬性,如 uid、cn、sn 等等。此方法提供了通用的獨立于 LDAP 的模式定義。
要執行此搜索,您不需要實(shí)際為 LDAP 實(shí)體類(lèi)型 PersonAccount 指定搜索篩選器。事實(shí)上,如前例中所示,替代表達式“%v”在 VMM 的搜索篩選器中不受支持。您所需要做的只是確保 Active Directory 用戶(hù)屬性“sAMAccountName”和“userPrincipalName”映射到虛擬成員管理器屬性,并且這些屬性在登錄屬性中已配置,以便運行時(shí)內部創(chuàng )建的搜索表達式能夠執行所需的映射。要完成此任務(wù),請執行以下步驟:
在 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> |
將 Active Directory 屬性“sAMAccountName”映射到虛擬成員管理器屬性“cn”。與上面的操作一樣,將下面的內容添加到 wimconfig.xml 文件:
<config:attributeConfiguration> ... <config:attributes name="sAMAccountName" propertyName="cn"> <config:entityTypes>PersonAccount</config:entityTypes> </config:attributes> ... </config:attributeConfiguration> |
通過(guò)指定值 uid;cn 配置登錄屬性,使其接受屬性“uid”和“cn”?,F在,在登錄到應用服務(wù)器期間,如果用戶(hù) ID 值是“bob@testadsserver.local”,則搜索篩選器將搜索“uid=Bob@testadsserver.local”或“cn=bob@testadsserver.local”。由于“uid”映射到“userPrincipalName”,“cn”映射到“sAMAccountName”,因此“userPrincipalName=bob@testadsserver.local”或“sAMAccountName=bob@testadsserver.local”的等效值是對 Active Directory LDAP 執行的搜索篩選器。
對于組搜索篩選器,“cn”是用于映射組名稱(chēng)的 VMM 屬性。而且,對于搜索篩選器,如 (&(cn=%v)(|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames))),篩選器“cn=%v”由 VMM 隱式映射。篩選器 (|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames)) 在組實(shí)體類(lèi)型的搜索篩選器的項中指定。
![]() ![]() |
![]()
|
使用管理控制臺將用戶(hù)和組添加到基于 LDAP 的存儲庫
要在 WebSphere Application Server 管理控制臺中創(chuàng )建用戶(hù)和組,并讓它們存儲在您的 LDAP 存儲庫中,而不是存儲在缺省的基于文件的存儲庫中,您需要進(jìn)行一些配置更改,更改操作類(lèi)似于以前將用戶(hù)添加到數據庫存儲庫的操作。需要將缺省父項的基本項更改為對 LDAP 存儲庫配置的項。例如,對于配置的 IBM Tivoli Directory Server LDAP:
導航到 Secure administration, applications, and infrastructure => Federated repositories => Configure => Supported Entity Type。
將 PersonAccount 更改為含有 BaseEntry cn=users,o=ITDSLdap(圖 33)。

保存并重新啟動(dòng)服務(wù)器?,F在,通過(guò)管理控制臺添加的用戶(hù)將存儲在 IBM LDAP 中。
![]() ![]() |
![]()
|
現在您已經(jīng)使用四個(gè)獨立存儲庫配置了聯(lián)合存儲庫。從管理角度看,在應用服務(wù)器啟動(dòng)時(shí)所有存儲庫均必須可用。還要求在同一聯(lián)合存儲庫配置下配置的所有用戶(hù)存儲庫中,用戶(hù) ID 必須是唯一的。當用戶(hù)登錄時(shí),Virtual Member Manager 運行時(shí)將搜索每個(gè)存儲庫,以查找該用戶(hù)的所有實(shí)例。如果在組合存儲庫中發(fā)現該用戶(hù)的多個(gè)實(shí)例,則會(huì )顯示錯誤消息。
要對 J2EE 應用程序啟用安全性,確保在 WebSphere Application Server 管理控制臺中的安全配置部分中選中了應用程序安全選項(缺省情況下選中了此選項)。
安裝的應用程序將不同的存儲庫看成是一個(gè)單一的邏輯存儲庫。所有存儲庫中的用戶(hù)和組均可將用戶(hù)和組映射到 J2EE 應用程序中的受保護資源。相關(guān)示例,請訪(fǎng)問(wèn) http://<hostname>:9080/snoop。您應能夠作為四個(gè)配置存儲庫之一中的用戶(hù)進(jìn)行登錄和驗證,以訪(fǎng)問(wèn)此示例應用程序。
聯(lián)系客服