在此之前,對于用戶信息存儲在多個獨立的用戶存儲庫環(huán)境,IBM WebSphere Application Server 對該環(huán)境的支持存在一定的局限性。在 6.1 版之前,可用的注冊表選項只有:
實現(xiàn)支持訪問多個其他注冊表的自定義用戶注冊表是有可能的,但這可能會花費(fèi)大量的開發(fā)精力,并且最終結(jié)果可能是僅支持只讀操作。
WebSphere Application Server V6.1 提供了一個新方法:聯(lián)合用戶注冊表。此功能讓使用多個存儲庫變得非常簡單,因為此功能是使用新的 Virtual Member Manager (VMM) 通過配置而不是開發(fā)獲得的。
從本質(zhì)上說,此功能提供了將多個獨立用戶存儲庫中的項映射到一個虛擬存儲庫的能力。聯(lián)合存儲庫包括一個單一的域,該域由一組獨立的用戶存儲庫組成。每個存儲庫都可以是一個完整的外部域,或者是該存儲庫中的一個子樹(例如在 LDAP 中)。每個存儲庫的根都映射到聯(lián)合存儲庫中的基本項,該基本項實際上是虛擬域的分層命名空間中的起始點。在介紹如何配置 VMM 時您會對此有一個更清楚的了解。
這里我們討論的是一種包含來自多個基本存儲庫的用戶的邏輯注冊表思想。對于 WebSphere Application Server 運(yùn)行時,仍然只有一個注冊表,因此,計算單元中的所有應(yīng)用程序仍共享這個單一的注冊表。請參見圖 1。
Virtual Member Manager 是一個新組件,它組合了 WebSphere 注冊表、WebSphere Member Manager(來自 WebSphere Portal)中的一些現(xiàn)有功能,并且是安全管理功能的一個子集。VMM 的目標(biāo)是:
![]() |
|
聯(lián)合存儲庫包含的域可能由以下存儲庫中的標(biāo)識組成:
與本地操作系統(tǒng)、獨立 LDAP 目標(biāo)或自定義注冊表項不同,聯(lián)合存儲庫為用戶和組管理提供了讀寫能力。當(dāng)您配置聯(lián)合存儲庫時,可以使用以下選項添加、創(chuàng)建和刪除用戶和組:
在本文中,我們將通過配置獨立 WebSphere Application Server V6.1 實例,使其與包含文件、數(shù)據(jù)庫和 LDAP 存儲庫的聯(lián)合存儲庫一起運(yùn)行,向您介紹如何設(shè)置和使用 Virtual Member Manager 的基本功能。我們將逐漸向聯(lián)合存儲庫添加一些存儲庫,并演示為進(jìn)行用戶和組管理,作為一個邏輯統(tǒng)一的存儲庫查看不同存儲庫的能力。我們還將學(xué)習(xí)如何配置 LDAP 組成員選項。
從管理控制臺中只能將一個用戶存儲庫配置為創(chuàng)建用戶/組的目標(biāo)。缺省情況下,該存儲庫是文件存儲庫,但可以更改該存儲庫,稍后您將了解到這一點。您可以使用用戶和組管理 wsadmin 命令在其他存儲庫中創(chuàng)建用戶/組,或?qū)@些存儲庫使用本機(jī)工具。
用戶名(例如,LDAP 用戶 ID)在不同的存儲庫中必須是唯一的。例如,用戶在不同的 LDAP 存儲庫中不能具有相同的用戶 ID,甚至在不同的組織結(jié)構(gòu)下也不能相同。
如果聯(lián)合存儲庫中的一個或多個存儲庫停止運(yùn)行,那么您將無法進(jìn)行身份驗證(甚至作為管理員也無法驗證),而不論您的特定 ID 存儲在哪個存儲庫中。VMM 組件總是檢查所有存儲庫才能讓身份驗證成功。
盡管 VMM 能夠支持多個域,但 WebSphere Application Server 目前僅支持一個域。它在計算單元級別定義并由所有應(yīng)用程序共享。
在 WebSphere Application Server V6.1 信息中心列出了其他限制。
![]() ![]() |
![]()
|
缺省情況下,WebSphere Application Server V6.1 在安裝過程中支持管理安全性。除非禁用此選項,否則基于文件的存儲庫將被自動用作用戶注冊表。
我們將通過配置內(nèi)置的基于文件的存儲庫開始我們的練習(xí),并假設(shè)在安裝過程中禁用了管理安全性。如果在安裝過程中沒有禁用管理安全性選項,則需要在安裝過程中提供管理用戶名和密碼,如圖 2 所示。
我們將假設(shè)在安裝過程中禁用了此選項,因此我們可以向您介紹如何從頭配置聯(lián)合存儲庫。(一般情況下,在安裝過程中不應(yīng)禁用管理安全性。)
要使用安全配置,請訪問 WebSphere Application Server 管理控制臺,并導(dǎo)航到 Security => Secure administration, applications and infrastructure。對于本文而言,我們僅配置管理安全性。另外,還應(yīng)始終啟用應(yīng)用程序安全性,以便應(yīng)用程序能夠利用 WebSphere Application Server 安全性。
下面的部分將介紹如何使用以下選項設(shè)置聯(lián)合存儲庫:
![]() ![]() |
![]()
|
使用內(nèi)置的基于文件的存儲庫設(shè)置聯(lián)合存儲庫
這里,您將使用缺省的基于文件的存儲庫配置聯(lián)合存儲庫,然后啟用管理安全性。
在 Secure administration, applications, and infrastructure 對話框中,從 Available realm definitions 下拉菜單中選擇 Federated repositories,然后單擊 Configure(圖 3)。
聯(lián)合存儲庫由一個包含多個基本項的單一域構(gòu)成。WebSphere Application Server 中的域是用戶注冊表的一個實例;該域是表示用戶注冊表的頂級邏輯項。在聯(lián)合存儲庫配置中,聯(lián)合存儲庫實例就是該域。缺省情況下,域名稱為 defaultWIMFileBasedRealm
(圖 4)。此名稱可以根據(jù)您的環(huán)境更改為任何合適的名稱;它不必與域的基本項相同。盡管實際上您可以將該域名稱更改為更合適的名稱,但在本文中,我們將把該域名稱保留為缺省名稱。
基本項標(biāo)識域中一組對象的根(或起始點);在一個域中可以有多個基本項。在給定的存儲庫中,每個基本項都映射到目錄樹的根。在平面存儲庫中(例如基于文件的存儲庫),基本項是存儲庫中所有項的根。在分層存儲庫中(例如 LDAP),基本項映射到目錄信息樹中標(biāo)識 DIT 中子樹頂部的一個項。(我們將在介紹 LDAP 存儲庫時進(jìn)一步闡述該內(nèi)容。)缺省情況下,存在一個與基于文件的存儲庫對應(yīng)的單一基本項:o=defaultWIMFileBasedRealm
(圖 4)。這是基于文件的存儲庫的根的標(biāo)識符。在此基本項下創(chuàng)建的所有用戶都將有一個完全限定的名稱 uid=<UID>, o=defaultWIMFileBasedRealm
。由于基于文件的存儲庫不是分層結(jié)構(gòu),因此該文件存儲庫中的所有對象都將存儲在此基本項下。
WebSphere Application Server V6.1 對管理環(huán)境的管理員用戶標(biāo)識和驗證服務(wù)器間通信的服務(wù)器標(biāo)識進(jìn)行了區(qū)分。在大多數(shù)情況下,服務(wù)器標(biāo)識是自動生成的,不存儲在存儲庫中。不過,如果您要將版本 5.0.x 或 6.0.x 節(jié)點添加到版本 6.1 計算單元,則必須確保版本 5.x 或版本 6.0.x 服務(wù)器標(biāo)識和密碼在存儲庫中對此計算單元進(jìn)行了定義。在這種情況下,您需要輸入服務(wù)器用戶標(biāo)識和密碼(圖 4)。由于我們處于單服務(wù)器環(huán)境中,其中只有一個 WebSphere Application Server V6.1 節(jié)點,因此您只能選擇自動生成的服務(wù)器標(biāo)識。我們將創(chuàng)建一個名為“wasadmin”的用戶作為管理用戶,該用戶將在基于文件的存儲庫中創(chuàng)建和存儲。單擊 OK。
輸入并確認(rèn)管理用戶 ID 的密碼,然后單擊 OK(圖 5)。
現(xiàn)在已經(jīng)完成了基本的聯(lián)合存儲庫配置。接下來,您可以配置 WebSphere Application Server 來使用管理安全性。為此,請按下列步驟操作(圖 6):
單擊 Enable administrative security。
Application security 和 Java 2 security 在缺省情況下均被選中。為簡化此示例,請取消選中 Java 2 security。
確保將 Current realm definition 的值設(shè)置為 Federated repositories。如果需要更改此值,請從 Available realm definitions 下拉列表中選擇 Federated repositories,然后選擇 Set as current。這將更改 Current realm definition 的值。
單擊 Apply,保存更改,然后重新啟動服務(wù)器。現(xiàn)在已啟動管理安全性。文件存儲庫已配置,并且可以通過管理控制臺將用戶和組添加到文件存儲庫。
![]() |
|
要再次使用管理控制臺,您需要使用剛才配置的管理用戶 ID 和密碼進(jìn)行登錄。
現(xiàn)在,通過導(dǎo)航到管理控制臺中的用戶和組部分,您可以查看文件存儲庫中的用戶。轉(zhuǎn)到 Manage Users 窗格并搜索現(xiàn)有用戶;使用通配符 *
進(jìn)行搜索,以查看缺省文件存儲庫中的用戶(圖 7)。
在管理控制臺中,您可以創(chuàng)建和刪除組,添加和刪除用戶以及修改用戶的組成員關(guān)系?,F(xiàn)在我們將把名為 userFileRegistry
的用戶添加到注冊表。為此,只需選擇 Create 并輸入所需的信息。在完成之后,Search for users 屏幕將顯示兩個用戶(圖 8)。
為了便于理解和遵循本文中的屏幕截圖,我們將按照約定把用戶名配置為以下格式:user<Registryname>Registry。這樣可以方便地標(biāo)識用戶存儲在哪個存儲庫中。此命名約定僅適用于本文,在使用聯(lián)合存儲庫時不是 WebSphere Application Server V6.1 所必需的。
![]() ![]() |
![]()
|
使用數(shù)據(jù)庫存儲庫設(shè)置聯(lián)合存儲庫
現(xiàn)在您將配置數(shù)據(jù)庫存儲庫和在上一部分中創(chuàng)建的基于文件的存儲庫。
在 Virtual Member Manager 中,數(shù)據(jù)庫存儲庫是一個具有特定預(yù)定義模式的數(shù)據(jù)庫,它支持 PersonAccount、Group 和 OrgContainer 的標(biāo)準(zhǔn) VMM 實體類型??梢允褂糜脩舳x的實體類型擴(kuò)展該模式,但該主題已超出了本文的討論范圍。還可以對此模式進(jìn)行擴(kuò)展,例如,您可以向預(yù)定義的實體添加其他用戶屬性。它不支持使用包含用戶和組信息的現(xiàn)有應(yīng)用程序數(shù)據(jù)庫。
數(shù)據(jù)庫存儲庫還能夠支持包含其他存儲庫中的用戶的組,但只有數(shù)據(jù)庫存儲庫才能夠支持;基于文件的存儲庫和 LDAP 存儲庫沒有此功能。(有關(guān)如何使用 updateIdMgrRepository 命令配置 repositoriesForGroups 參數(shù)的詳細(xì)信息,請參閱 WebSphere Application Server Information Center)
![]() |
|
在發(fā)布時,無法通過管理控制臺配置數(shù)據(jù)庫存儲庫;它只能使用命令行 wsadmin 命令進(jìn)行配置。在本部分中,您將了解如何使用 IBM DB2® 數(shù)據(jù)庫配置數(shù)據(jù)庫用戶存儲庫。(如果愿意,可以使用 WebSphere Application Server 支持的任何其他數(shù)據(jù)庫,并且這些步驟是類似的。)對位于概要的以下配置目錄的文件 wimconfig.xml 進(jìn)行了所有屬于新存儲庫配置的更改。$WAS_HOME\profiles\<profileName>\config\cells\<cellName>\wim\config。
要使用 JDBC 類型 4 驅(qū)動程序配置 DB2 數(shù)據(jù)庫存儲庫:
創(chuàng)建 DB2 數(shù)據(jù)庫。數(shù)據(jù)庫存儲庫的表將由 wsadmin 命令創(chuàng)建。對于此配置,我們創(chuàng)建了一個名為 wimDB
的數(shù)據(jù)庫。
配置 JNDI 名稱為 jdbc/wimDB
的 DB2 數(shù)據(jù)源(使用管理控制臺或 wsadmin 命令)。此數(shù)據(jù)源將用于配置訪問此數(shù)據(jù)庫的聯(lián)合存儲庫。(請參閱信息中心中的 Configuring a data source using the administrative console)
如果在運(yùn)行 wsadmin 命令配置數(shù)據(jù)庫存儲庫時,您遇到在類路徑中未發(fā)現(xiàn) DB2 類的問題,請檢查并確保 WebSphere Application Server 變量 DB2_JDBC_DRIVER_PATH 已正確設(shè)置。
通過使用此 wsadmin 命令設(shè)置存儲庫來創(chuàng)建 wimDB 表(將 $WAS_HOME 替換為 WAS_HOME 環(huán)境變量的實際值):
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ā)現(xiàn)用于創(chuàng)建 wimDB 表的特定于數(shù)據(jù)庫的 SQL 文件。對于 DB2,SQL 文件位于 $WAS_HOME\etc\wim\setup\database\db2
下。請注意,命令中的 -dn
項定義要存儲在數(shù)據(jù)庫存儲庫中的對象的專有名稱的根。這不必要與聯(lián)合數(shù)據(jù)庫存儲庫的基本項相同。數(shù)據(jù)庫存儲庫中的用戶和組將在此根專有名稱下創(chuàng)建,它可以是您希望的任意值(o=database.org
是本文選擇的任意值)。
成功實現(xiàn)此命令將創(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)合存儲庫中此存儲庫的存儲庫標(biāo)識符。(在圖 10 中看到對它的定義時會清楚這一點。)此命令設(shè)置使用直接 JDBC 連接訪問數(shù)據(jù)庫存儲庫所需的數(shù)據(jù)源名稱和值。之所以必需設(shè)置該項,是因為存在以下情況:即當(dāng)不存在任何數(shù)據(jù)源時,運(yùn)行時可能需要訪問聯(lián)合存儲庫;在此情況下,將使用直接 JDBC 訪問。
使用以下 wsadmin 命令配置此存儲庫的基本項:
wsadmin>$AdminTask addIdMgrRepositoryBaseEntry {-id DB2Repos -name "o=database.org" –nameInRepository="o=database.org" } |
此處的基本項名稱 "o=database.org,"
與 setupIdMgrDBTables
命令的 -dn
選項的值相同。在此情況下,我們對聯(lián)合存儲庫中的基本項名稱 (-name
) 使用了與實際數(shù)據(jù)庫存儲庫中相同的名稱 (-nameInRepository
)。這不是必需的,可以將聯(lián)合存儲庫中的基本名稱設(shè)置為與實際存儲庫根專有名稱不同的名稱。
將新的 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 并重新啟動服務(wù)器?,F(xiàn)在已經(jīng)配置了數(shù)據(jù)庫存儲庫。
當(dāng)您登錄到管理控制臺時,將會看到數(shù)據(jù)庫存儲庫現(xiàn)在已成為聯(lián)合存儲庫的一部分(圖 10)。
而且,在管理存儲庫面板(圖 11)中,數(shù)據(jù)庫存儲庫顯示為定義的存儲庫。(從聯(lián)合存儲庫中刪除一個存儲庫不會刪除存儲庫定義;它只是一個獨立步驟。)
在數(shù)據(jù)庫存儲庫中尚沒有任何用戶。當(dāng)在管理控制臺中創(chuàng)建新用戶時,也會在基于文件的存儲庫中創(chuàng)建這些用戶。不過,如果還希望能夠從控制臺將用戶添加到數(shù)據(jù)庫存儲庫,您需要進(jìn)行配置更改。現(xiàn)在讓我們了解一下如何在管理控制臺中更新聯(lián)合存儲庫配置,以便在創(chuàng)建用戶時,也會在數(shù)據(jù)庫存儲庫中創(chuàng)建這些用戶,而不是在缺省的基于文件的存儲庫中創(chuàng)建。
導(dǎo)航到聯(lián)合存儲庫配置面板:Secure administration, applications, and infrastructure => Available Realm Definitions => Configure,并選擇 Supported entity types(圖 12)。
要修改缺省的用戶創(chuàng)建,以便可以使用數(shù)據(jù)庫存儲庫,您需要將缺省父目錄的基本項更改為數(shù)據(jù)庫存儲庫基本項(即 o=database.org
)。在本例中,對 PersonAccount 進(jìn)行更改可以將用戶添加到數(shù)據(jù)庫存儲庫。(我們不準(zhǔn)備進(jìn)行詳細(xì)介紹,但您要清楚對 Group 也需要執(zhí)行此更改。)選擇 PersonAccount。
將 Base entry for the default parent(圖 13)的值更改為 o=database.org
并單擊 Apply。
保存更改(如圖 14 所示)并重新啟動服務(wù)器以便基本項更改生效。
當(dāng)使用管理控制臺添加新用戶時,只能將其放在一個存儲庫中:由您設(shè)置的基本項定義的存儲庫是當(dāng)前缺省存儲庫。如果需要將用戶添加到其他存儲庫,請使用這些產(chǎn)品中可用的本機(jī)工具。
現(xiàn)在,按前面的內(nèi)容所示通過選擇 Users and groups => Manage users => Create 創(chuàng)建一個用戶 ID 為 userDatabaseRegistry
的用戶。完成此操作之后,文件存儲庫和數(shù)據(jù)庫存儲庫中的用戶都將顯示(圖 15)。
您已經(jīng)了解了如何配置數(shù)據(jù)庫存儲庫以及如何進(jìn)行更改,以便在數(shù)據(jù)庫存儲庫中創(chuàng)建新用戶和組,而不是在缺省的基于文件的存儲庫中創(chuàng)建。在下面的部分中,您將看到如何配置聯(lián)合存儲庫,以便將用戶和組添加到 LDAP。
![]() ![]() |
![]()
|
現(xiàn)在將把兩個 LDAP 目錄添加到配置的聯(lián)合存儲庫,它目前包含兩個存儲庫:缺省的基于文件的存儲庫和數(shù)據(jù)庫存儲庫。
將 LDAP 目錄添加到聯(lián)合配置的基本步驟是:
將 LDAP 目錄添加到聯(lián)合存儲庫配置可用的存儲庫列表。
添加位于 LDAP 目錄中特定搜索基的 baseEntries。對于單個 LDAP 目錄,可以添加具有不同搜索基的多個基本項。
我們要添加的兩個 LDAP 目錄是:
將 Active Directory LDAP 添加到可用存儲庫列表:
登錄到管理控制臺,然后導(dǎo)航到 Security => Secure administration, applications, and infrastructure => Federated repositories => Manage repositories,并選擇 Add。
如圖 16 所示輸入或選擇值,然后選擇 OK 并保存配置。這將把 Active Directory LDAP 添加到配置可用的聯(lián)合存儲庫列表。您會注意到通過此配置可以指定 LDAP 故障轉(zhuǎn)移服務(wù)器。如果愿意,您可以按 IP 地址或主機(jī)名列出多個 LDAP 服務(wù)器副本,并且應(yīng)用服務(wù)器將在主服務(wù)器失敗時自動切換到備用服務(wù)器。還可以為添加的 LDAP 配置其他屬性;我們將在稍后討論自定義和配置 LDAP 屬性時對其進(jìn)行介紹。
現(xiàn)在已經(jīng)將存儲庫添加到聯(lián)合存儲庫列表,需要將一個基本項配置為指向 LDAP 目錄中的一個子樹(搜索基)?;卷椏勺?LDAP 子樹中的項成為聯(lián)合存儲庫域中的一部分。
要在管理控制臺中配置基本項,請導(dǎo)航到 Security => Secure administration, applications and infrastructure =>Available realm definitions => Federated repositories => Configure。
這時將顯示域中已經(jīng)配置的基本項;在此情況下,您將看到與基于文件的存儲庫和數(shù)據(jù)庫存儲庫對應(yīng)的基本項(圖 17)?,F(xiàn)在您將從 Active Directory LDAP 添加一個項。選擇 Add Base entry to Realm。
在下面的屏幕中(圖 18),選擇 TestADS 作為 Repository 的名稱,以指示前面配置的 Active Directory LDAP 的名稱。向聯(lián)合存儲庫添加基本項的專有名稱和在 Active Directory LDAP 目錄中添加基本專有名稱,以指定搜索根。前一名稱定義虛擬域中此特定存儲庫的邏輯根項,后一名稱是 LDAP 中將成為聯(lián)合存儲庫一部分的對象集子樹的根。您在這里實際完成的是定義 LDAP 子樹根和虛擬域根(基)項之間的映射,以便 LDAP 中該子樹下的所有對象都顯示在定義基本項下的邏輯域中。
如果“Distinguished name of a base entry in this repository”保留為空,則基本項將映射到 LDAP 服務(wù)器的根 (""),并且所有操作都將在根目錄處執(zhí)行。對于大多數(shù) LDAP 服務(wù)器而言,這是不可行的。因此,您應(yīng)聯(lián)系 LDAP 管理員以確定目錄的正確根。
在保存之后,圖 19 中顯示的基本項將顯示在聯(lián)合存儲庫中。
指定的搜索基為 dc=testadsserver,dc=local
。在本文中,我們僅為配置的 Active Directory LDAP 指定了一個子樹。如果您希望配置其他子樹,可以在適當(dāng)?shù)淖訕涓刑砑悠渌卷棥?/p>
重新啟動服務(wù)器。
現(xiàn)在,如果您轉(zhuǎn)到控制臺的用戶和組區(qū)域并搜索所有用戶,就會看到來自基于文件的存儲庫、數(shù)據(jù)庫存儲庫和 Active Directory LDAP 服務(wù)器的用戶。注意 LDAP 用戶的專有名稱:它是 LDAP 中用戶的實際專有名稱的串聯(lián)和聯(lián)合存儲庫定義的基本項。注意,實際 LDAP (dc=testadsserver,dc=local
) 中的子樹根沒有顯示在用戶名中;而是顯示了聯(lián)合存儲庫中映射的基本項。用戶的唯一 ID 是用戶 ID 加上基本項,以確保其在聯(lián)合存儲庫中的唯一性;不過,這仍要求聯(lián)合存儲庫的所有存儲庫中的所有用戶 ID 都必須是唯一的。
對所有用戶的搜索將顯示所有存儲庫中的用戶;注意 userADSLDAPRegistry,它是在 ADS 服務(wù)器中創(chuàng)建的。類似地,組搜索將顯示所有存儲庫中的組。單擊各個用戶將提供有關(guān)該用戶的詳細(xì)信息以及該用戶所屬的組。例如,Administrator 是 Active Directory LDAP 中的用戶;如果單擊此用戶 ID,將顯示圖 21。
如果單擊 Groups 選項卡,將顯示圖 22。
添加 IBM Tivoli Directory Server
添加 Active Directory LDAP 之后,您可以按照類似步驟將 IBM Tivoli Directory Server 添加到目錄列表。
按照上述方法通過管理控制臺添加新存儲庫(圖 23)。
與 Active Directory LDAP 的情況相同,我們所需要的是主機(jī)名稱。還需要配置其他 LDAP 屬性,這將在稍后討論。在添加 IBM LDAP 之后,將有四個存儲庫顯示在可用聯(lián)合存儲庫列表中(圖 24)。
對于 Active Directory LDAP,要讓 IBM LDAP 中的項可以在聯(lián)合存儲庫中使用,至少需要配置一個指向子樹基的基本項。要在管理控制臺中添加基本項,請導(dǎo)航到 Security =>Secure administration, applications and infrastructure =>Available realm definitions => Federated repositories => Configure,然后選擇 Add Base entry to Realm。
在下面的面板中(圖 25),選擇 ITDSLdap。將合適的專有名稱添加到聯(lián)合存儲庫 (o=ITDSLdap
),并將相應(yīng)的基本項添加到實際 LDAP (dc=ibm, dc=com
)。在完成時,單擊 Apply 應(yīng)用更改。
這些項將作為基本項專有名稱 o=ITDSLdap
下聯(lián)合存儲庫的一部分添加到 IBM Tivoli Directory Server LDAP 中的 dc=ibm,dc=com
下,如圖 26 所示。
重新啟動服務(wù)器?,F(xiàn)在,對用戶的搜索還將顯示 IBM LDAP 中的用戶(圖 27);使用 (cn=users, dc=ibm, dc=com) 中的 ITDS 管理工具在 IBM Tivoli Directory Server 中創(chuàng)建了用戶 userIBMLDAPRegistry。
對于其他目錄,請注意用戶 IBMLDAPRegistry 符合聯(lián)合存儲庫中的基本項,提供唯一域名稱。
![]() ![]() |
![]()
|
在上面的部分中,您添加了具有缺省值的 LDAP 目錄,但并沒有自定義任何 LDAP 屬性?,F(xiàn)在,我們將介紹在將 LDAP 添加為聯(lián)合屬性的一部分時,可能需要為 LDAP 配置的其他屬性。我們說“可能”是因為并不是所有 LDAP 服務(wù)器都相同。不同的實現(xiàn)使用不同的對象類來指定用戶和組信息,并且使用不同的方法定義組成員關(guān)系。因此缺省值可能無法滿足需要。下面描述了其他可用屬性,并舉例說明了如何執(zhí)行 IBM LDAP 目錄的其他配置。
在將 LDAP 添加到聯(lián)合存儲庫時,將在配置面板的底部顯示其他三個屬性的鏈接:
Performance
使用 Performance 可以為配置的 LDAP 設(shè)置與搜索超時和搜索結(jié)果限制相關(guān)的屬性。在優(yōu)化聯(lián)合存儲庫時需要配置 Performance 屬性。(有關(guān)詳細(xì)信息,請參閱信息中心中的 Increasing the performance of the federated repository configuration)
LDAP entity types
Virtual Member Manager 組件定義了三種即時可用的實體類型,表示聯(lián)合存儲庫中管理的對象類型。它們提供了一種方法,可以將不同存儲庫中的對象類型映射到 VMM 中的公共對象模型。這些實體類型為:
例如,讓我們看一下 IBM LDAP 的實體類型和組對象配置。IBM LDAP 中的組一般存儲在對象類“groupOfNames”和“groupOfUniqueNames”下。實體類型組的缺省值是對象類 groupOfNames
。因此需要添加對象類 groupOfUniqueNames
,以確保 LDAP 中使用此對象類定義的所有組對象都正確映射到了 VMM 組。
在管理控制臺中,導(dǎo)航到 Secure administration, applications, and infrastructure => Federated repositories => Manage repositories => ITDSLdap => LDAP entity types。
選擇 Group 并編輯 Object classes 字段,為其提供值 groupOfNames;groupOfUniqueNames
。注意各項由分號隔開(圖 28)。
您還可以在此屏幕上指定 Search bases 和 Search filter。指定的搜索基必須是存儲庫中基本項的子樹。這里,基本項是 dc=ibm,dc=com
。搜索篩選器必須是 LDAP 目錄中此項的子樹。搜索篩選器配置指定用于搜索此實體類型的 LDAP 搜索篩選器。使用 LDAP 搜索篩選器語法,有效的搜索篩選器為: (|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames))
。
下面介紹了映射 LDAP 搜索篩選器的其他詳細(xì)信息。
保存添加了對象類的組實體類型配置;實體類型配置的對象類顯示在圖 29 中。
Group attribute definition
要讓 Virtual Member Manager 知道某個對象屬于哪個組,您需要為對象類定義相關(guān)的成員關(guān)系屬性。
對象類的屬性添加在 Group attribute definition => Member attributes 下。在管理控制臺中,導(dǎo)航到 Secure administration, applications, and infrastructure => Federated repositories => Manage repositories => ITDSLdap,并選擇 Group attribute definition。
Name of group membership attribute(圖 30)指定一個 LDAP 屬性,指出某個項所屬的組。這項取決于所使用的 LDAP。對于 IBM LDAP,該值為 ibm-allGroups
。對于其他 LDAP 服務(wù)器類型,在這里需要配置本身的屬性。您還可以指定嵌套和動態(tài)組成員關(guān)系是否位于成員關(guān)系屬性范圍內(nèi)。(本文不詳細(xì)介紹這些概念。)因為并不是所有 LDAP 都具有用于定義組成員關(guān)系的支持屬性,所以此屬性是可選的。如果您使用的 LDAP 不支持此屬性,請確保使用它建立組成員關(guān)系和改進(jìn)性能。如果沒有指定組成員關(guān)系屬性,則 LDAP 存儲庫通過搜索所有組可以建立成員關(guān)系,但是,最終的性能可能會非常低下。
除指定組成員關(guān)系屬性名之外,您還可以指定組成員關(guān)系屬性的范圍。此值指示 Virtual Member Manager 如何能夠遍歷 LDAP 目錄來確定組成員關(guān)系。根據(jù) LDAP 目錄實際管理存儲在此屬性中信息的不同方式,可能需要一個或多個調(diào)用來確定成員用戶的所有組。指定范圍可以提高諸如搜索之類的性能。對于給定 LDAP 的給定組成員關(guān)系屬性,有必要知道給定 LDAP 是如何管理其成員關(guān)系屬性的,以及此屬性會返回哪些值。例如,對于 Active Directory LDAP,memberOf 屬性的范圍是 Direct,也就是說,僅返回該用戶的直接父組。要確定用戶的 Nested 組,VMM 必須首先使用 memberOf 屬性獲取直接組,然后逐一遍歷返回的組并獲取其直接組,等等。此過程會導(dǎo)致對 Active Directory LDAP 的多次調(diào)用。若要使用 ibm-allGroups
對 IBM Tivoli Directory Server LDAP 執(zhí)行相同的搜索,則沒有必要執(zhí)行這種詳細(xì)的搜索,因為 ITDS 維護(hù)著所有組,包括使用該屬性的嵌套和動態(tài)組成員關(guān)系。因此,該屬性的范圍應(yīng)設(shè)置為 All,以便 VMM 知道不執(zhí)行其他不必要的調(diào)用。
圖 30 還顯示了兩個提供定義反向鏈接能力的附加屬性,即靜態(tài)組和動態(tài)組如何維護(hù)關(guān)于其成員的信息。對于靜態(tài)組,成員關(guān)系列表作為成員列表在對象本身中維護(hù)。對于動態(tài)組,在成員關(guān)系屬性中實際維護(hù)的是 LDAP 搜索篩選器。
對于定義組(如 groupOfNames 和 groupOfUniqueNames)的每個成員對象類,您可以為每個組成員關(guān)系定義相應(yīng)的成員屬性。在我們的示例中,groupOfNames 對象的成員屬性是 member
,這是該對象的缺省屬性。您還需要添加一個與 groupOfUniqueNames 對象類對應(yīng)的 uniqueMember
成員屬性。在 Additional Properties 部分中,選擇 Member Attributes,然后選擇 New。
將 uniqueMember
添加為一個新成員名,并為 Object class 添加 groupOfUniqueNames
。保留范圍的缺省值 direct
。在完成之后,成員屬性將如圖 31 所示。
您還可以為動態(tài)組添加成員屬性,但這超出了本文的討論范圍。不過,如果有包含靜態(tài)成員和動態(tài)成員的混合組,您可以為同一對象類同時定義靜態(tài)搜索和動態(tài)搜索。
實體類型(組、PersonAccount、orgContainer)的搜索篩選器指定用于搜索此實體類型的 LDAP 搜索篩選器。搜索篩選器語法是標(biāo)準(zhǔn) LDAP 篩選器的子集。下面顯示了 VMM 中的一些示例篩選器值,并比較了可能已在獨立 WebSphere Application Server 用戶注冊表配置中(未使用聯(lián)合存儲庫)使用的查詢字符串。
如果您希望按用戶 ID 在 LDAP 子樹中搜索,并將您的搜索限制在 Person 對象,則使用的搜索篩選器將是:((uid = %v)(objectclass=Person))
。在 VMM 中,需要對此篩選器進(jìn)行不同的指定,因為 VMM 不支持替換參數(shù)(例如“%v”)。在 VMM 中,使用指定值替代用戶 ID 的篩選器由 VMM 運(yùn)行時在登錄到應(yīng)用服務(wù)器時進(jìn)行(根據(jù)為在聯(lián)合存儲庫中配置的 LDAP 指定的登錄屬性)。
例如,在圖 16 中:在添加 Active Directory LDAP 時,Login properties 字段指定為“uid”。在登錄過程中,這會轉(zhuǎn)換為搜索篩選器“uid=<value>”。如果還需要將搜索限制在 Person 對象,則需要在 PersonAccount 實體類型的搜索篩選器中指定它,如 (objectclass=Person)
。對于配置的 Active Directory,將如圖 32 所示。
這里,篩選器 (uid=%v)
隱式地映射到 VMM 運(yùn)行時。此搜索篩選器還潛在地從 VMM 屬性重映射到特定于 LDAP 的相應(yīng)屬性。此分離功能使得在各種不同的注冊表中能夠使用標(biāo)準(zhǔn)屬性集。在此特定的示例中,第二個映射級別發(fā)生在 VMM 中,其中“uid”在提交搜索字符串以查找實際 LDAP 的用戶之前映射到特定于 LDAP 的屬性。將 VMM 屬性映射到特定于 LDAP 的屬性在 VMM 的配置文件 wimconfig.xml 中指定。
下一個示例是關(guān)于 Active Directory 的特定篩選器,該示例詳細(xì)地介紹了映射。
接下來,我們將了解特定于 Active Directory LDAP 的搜索篩選器以及在 VMM 中配置此類用戶搜索篩選器所需進(jìn)行的更改。此示例通過匹配“sAMAccountName”或“userPrincipalName”屬性中的值在 Active Directory LDAP 中搜索用戶帳戶。這里,LDAP 搜索篩選器將是: (|(sAMAccountName=%v)(userPrincipalName=%v))
。
在 VMM 中映射此搜索字符串轉(zhuǎn)換為將 Active Directory 屬性映射到 VMM 中識別的屬性。將 VMM 中特定于 LDAP 的屬性映射到 VMM 定義的屬性,如 uid、cn、sn 等等。此方法提供了通用的獨立于 LDAP 的模式定義。
要執(zhí)行此搜索,您不需要實際為 LDAP 實體類型 PersonAccount 指定搜索篩選器。事實上,如前例中所示,替代表達(dá)式“%v”在 VMM 的搜索篩選器中不受支持。您所需要做的只是確保 Active Directory 用戶屬性“sAMAccountName”和“userPrincipalName”映射到虛擬成員管理器屬性,并且這些屬性在登錄屬性中已配置,以便運(yùn)行時內(nèi)部創(chuàng)建的搜索表達(dá)式能夠執(zhí)行所需的映射。要完成此任務(wù),請執(zhí)行以下步驟:
在 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”。與上面的操作一樣,將下面的內(nèi)容添加到 wimconfig.xml 文件:
<config:attributeConfiguration> ... <config:attributes name="sAMAccountName" propertyName="cn"> <config:entityTypes>PersonAccount</config:entityTypes> </config:attributes> ... </config:attributeConfiguration> |
通過指定值 uid;cn
配置登錄屬性,使其接受屬性“uid”和“cn”?,F(xiàn)在,在登錄到應(yīng)用服務(wù)器期間,如果用戶 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 執(zhí)行的搜索篩選器。
對于組搜索篩選器,“cn”是用于映射組名稱的 VMM 屬性。而且,對于搜索篩選器,如 (&(cn=%v)(|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames)))
,篩選器“cn=%v”由 VMM 隱式映射。篩選器 (|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames))
在組實體類型的搜索篩選器的項中指定。
![]() ![]() |
![]()
|
要在 WebSphere Application Server 管理控制臺中創(chuàng)建用戶和組,并讓它們存儲在您的 LDAP 存儲庫中,而不是存儲在缺省的基于文件的存儲庫中,您需要進(jìn)行一些配置更改,更改操作類似于以前將用戶添加到數(shù)據(jù)庫存儲庫的操作。需要將缺省父項的基本項更改為對 LDAP 存儲庫配置的項。例如,對于配置的 IBM Tivoli Directory Server LDAP:
導(dǎo)航到 Secure administration, applications, and infrastructure => Federated repositories => Configure => Supported Entity Type。
將 PersonAccount 更改為含有 BaseEntry cn=users,o=ITDSLdap
(圖 33)。
保存并重新啟動服務(wù)器。現(xiàn)在,通過管理控制臺添加的用戶將存儲在 IBM LDAP 中。
![]() ![]() |
![]()
|
現(xiàn)在您已經(jīng)使用四個獨立存儲庫配置了聯(lián)合存儲庫。從管理角度看,在應(yīng)用服務(wù)器啟動時所有存儲庫均必須可用。還要求在同一聯(lián)合存儲庫配置下配置的所有用戶存儲庫中,用戶 ID 必須是唯一的。當(dāng)用戶登錄時,Virtual Member Manager 運(yùn)行時將搜索每個存儲庫,以查找該用戶的所有實例。如果在組合存儲庫中發(fā)現(xiàn)該用戶的多個實例,則會顯示錯誤消息。
要對 J2EE 應(yīng)用程序啟用安全性,確保在 WebSphere Application Server 管理控制臺中的安全配置部分中選中了應(yīng)用程序安全選項(缺省情況下選中了此選項)。
安裝的應(yīng)用程序?qū)⒉煌拇鎯炜闯墒且粋€單一的邏輯存儲庫。所有存儲庫中的用戶和組均可將用戶和組映射到 J2EE 應(yīng)用程序中的受保護(hù)資源。相關(guān)示例,請訪問 http://<hostname>:9080/snoop。您應(yīng)能夠作為四個配置存儲庫之一中的用戶進(jìn)行登錄和驗證,以訪問此示例應(yīng)用程序。