為WebSphere Portal V6.1 配置安全性

CloudSpace發表於2009-04-15

引言

通過給 WebSphere Portal 配置使用者登錄檔,可以防止未經授權的使用者訪問您的WebSphere Portal Server。在 WebSphere Portal V6.1 中支援多種型別的使用者登錄檔,配置任意一種均可達到防止未授權使用者訪問的目的。本文將向您介紹在不同的場景下,如何為 WebSphere Portal V6.1 配置不同的使用者登錄檔(聯合使用者登錄檔,單個孤立的登錄檔)來滿足此需求。

我們知道,WebSphere Application Server V6.1 引入了聯合使用者登錄檔功能,能夠將多個儲存庫中的使用者對映到一個虛擬儲存庫中,這使得我們對儲存庫的管理更為靈活。而基於它之上的 WebSphere Portal Server V6.1 也因此獲得了同樣的功能並做了相應的擴充套件。讓我們先來看一下 WebSphere Portal Server 所支援的登錄檔型別發生了什麼變化吧(表 1)。


表 1 WebSphere Portal Server 所支援的登錄檔
登錄檔型別 6.1版之前 6.1
單個孤立的輕量級目錄訪問協議 (LDAP) 登錄檔
單個孤立的資料庫登錄檔 --
自定義使用者登錄檔介面的單一實現
聯合使用者登錄檔(檔案儲存庫) --
聯合使用者登錄檔(LDAP 儲存庫) --
聯合使用者登錄檔(資料庫儲存庫) --

從表中可以看出,WebSphere Portal Server V6.1 提供了對聯合使用者組登錄檔的支援,並且去掉了對單個孤立的資料庫登錄檔的支援。

我們可以從下圖 1 中看出 WebSphere Portal Server V6.1 所支援的登錄檔型別以及如何通過 ConfigEngine 的相應任務在不同的登錄檔型別之間切換。

ConfigEngine

在 WebSphere Portal Server V6.1 版中,引入了新的配置框架 (ConfigEngine) 來替換以前的配置命令 (WPSconfig)。ConfigEngine 對 Portal 提供了元件化管理的功能,使其能夠對新的元件即插即用,並且由每個元件來管理自己的相關配置任務,由 ConfigEngine 來處理元件之間的依賴關係。在 /ConfigEngine 目錄中可以找到 ConfigEngine 相關命令。我們將在以後的文章中再來詳細介紹 ConfigEngine。


圖 1. WebSphere Portal Server V6.1 登錄檔型別和關係圖

從上圖可以看出,我們可以通過 ConfigEngine 提供的相應任務(上圖中的 A,B,C)來實現

不同的登錄檔型別之間切換。同時,ConfigEngine 也為聯合使用者登錄檔提供了額外的任務來新增多個 LDAP 儲存庫(wp-create-ldap)和資料庫儲存庫(wp-create-db),我們將在後面的章節中詳細介紹這些任務。

聯合使用者登錄檔

聯合使用者登錄檔是一個通過配置 VMM (虛擬使用者管理)來將多個儲存庫中的使用者對映到一個虛擬儲存庫的方法。聯合登錄檔是一個樹型結構,由一個或多個(Realm) 組成,每個域由一個或多個基本項 (Base Entry) 組成,每個基本項對應一個獨立的儲存庫 (Repository)。綜上所述,聯合使用者登錄檔可以看作由一個或者幾個域組成的一個虛擬儲存庫。關於聯合使用者登錄檔的詳細介紹,請參看參考資料


圖 2. 域/基本項/儲存庫之間的關係

上圖 2 通過例項顯示了域、基本項和儲存庫之間的關係。在例項中,一個域含有三個基本項,分別對應於兩個儲存庫中的三棵子樹。

從以上的介紹可以看出,使用了聯合使用者登錄檔之後可以同時支援多個儲存庫,並且允許您根據業務需求來隨時新增或刪除儲存庫。而在以前的版本中要完成此功能均需要使用者自己來實現自定義的登錄檔,現在 V6.1 預設提供的聯合使用者登錄檔無疑能大大提高易用性,同時這也是 WebSphere Portal Server V6.1 預設使用的使用者登錄檔型別。

下面我們來看一下聯合使用者登錄檔下的常用功能:

  • 查詢當前儲存庫列表
  • 新增 LDAP 儲存庫
  • 新增資料庫儲存庫
  • 刪除儲存庫
  • 設定預設儲存庫

查詢當前儲存庫列表

WebSphere Portal Server V6.1 預設使用的就是聯合使用者登錄檔,並且包含一個檔案儲存庫(InternalFileRepository)。需要注意的是,由於它是一個基於本地檔案的輕量級儲存庫,不能將其用於叢集環境下,並且一旦刪除後只能通過 WebSphere Application Server 的相關命令來將其重新新增回來。

查詢當前儲存庫

ConfigEngine 的任務 wp-qurey-repository 可以用來查詢當前為 Portal 配置的所有儲存庫資訊。

[root@pvcent107 ConfigEngine]# ./ConfigEngine.sh wp-query-repository
......
[wplc-query-federated-repository] Existing Federated Repositories
[wplc-query-federated-repository] Repository Name : {Details}
[wplc-query-federated-repository] *******************************
[wplc-query-federated-repository] InternalFileRepository : 
{repositoryType=File, host=LocalHost}
[wplc-query-federated-repository] Status = Complete
...... 

從上面可以看出,預設裝完 Portal 後聯合使用者登錄檔中將包含一個檔案儲存庫,該儲存庫 ID 為 "InternalFileRepository" ,型別為"檔案",主機為"本地主機"。查詢當前儲存庫列表並不需要額外的引數就可執行。

新增 LDAP 儲存庫

wkplc.properties

wkplc.properties 是 ConfigEngine 的主要配置檔案,在 /ConfigEngine/properties/ 中可以找到它。

下面我們來看一下如何新增一個 LDAP 儲存庫。此時我們就需要編輯 wkplc.properties 檔案來告訴 ConfigEngine 相關的引數。這裡 我們僅簡單介紹幾個重要引數,詳細引數列表請參見 WebSphere Portal Server V6.1 資訊中心

wkplc.properties

  • federated.ldap.id=RepositoryID_pvcent49.cn.ibm.com:389
    • 這個 id 用來唯一標識此儲存庫
  • federated.ldap.baseDN=dc=ids601,dc=com
    • 基本項 (Base Entry) 用來唯一標識並表明將此儲存庫的一個子樹還是全部對映到虛擬儲存庫裡
  • federated.ldap.ldapServerType=IDS6
    • 用來指定 LDAP 型別

編輯完成後,可以通過執行 ConfigEngine 的相關任務 wp-create-ldap 來新增 LDAP 儲存庫。


新增 LDAP 儲存庫

[root@pvcent107 ConfigEngine]# ./ConfigEngine.sh wp-create-ldap
......
wp-create-ldap:
Wed Apr 30 07:10:36 CST 2008
validate-federated-ldap:
Wed Apr 30 07:10:37 CST 2008
     [echo] LDAPHostName       federated.ldap.host=pvcent49.cn.ibm.com
     [echo] LDAPPort            federated.ldap.port=389
     [echo] LDAPAdminUId       federated.ldap.bindDN=cn=root
......
BUILD SUCCESSFUL
Total time: 31 seconds
[root@pvcent107 ConfigEngine]# 

值得注意的是,此命令的執行時間只是僅僅31秒,速度上比起以前版本有了極大的提升。現在,再讓我們來看一下當前的儲存庫列表:


查詢當前儲存庫

[root@pvcent107 ConfigEngine]# ./ConfigEngine.sh wp-query-repository
......
[wplc-query-federated-repository] Existing Federated Repositories
[wplc-query-federated-repository] Repository Name : {Details}
[wplc-query-federated-repository] *******************************
[wplc-query-federated-repository] RepositoryID_pvcent49.cn.ibm.com:389 : 
{specificRepositoryType=IDS6, repositoryType=LDAP, host=pvcent49.cn.ibm.com}
[wplc-query-federated-repository] InternalFileRepository : 
{repositoryType=File, host=LocalHost}
[wplc-query-federated-repository] Status = Complete
......
[root@pvcent107 ConfigEngine]#

可見,LDAP 儲存庫已經新增到聯合使用者登錄檔中。藉此,我們可以進一步來分析域/基本項/儲存庫三者是如何在 Portal 的安全配置檔案中儲存的。它們被儲存在 wimocnfig.xml 檔案中。該檔案包含了 Portal 裡有關 VMM 的配置資訊,可以在/config/cells//wim/config/ 中找到此檔案。


wimconfig.xml


  

......

      
        
          
        
      
      ......

......	  

  
	
	
	......
  
 

我們這裡摘錄的片段包括三個部分,前兩個以“

首先看到的檔案儲存庫的配置資訊,值得注意的是它的型別(“ FileRepositoryType ”),儲存庫 ID(“InternalFileRepository”) 以及基本項(“ o=defaultWIMFileBasedRealm ”)這三個引數。第二部分就是我們剛新增的 LDAP 儲存庫了,此時需要注意的引數依然是型別 (“LdapRepositoryType”),儲存庫 ID(“RepositoryID_pvcent49.cn.ibm.com:389”)以及基本項(“ dc=ids601,dc=com ”)。最後的域(Realm)配置資訊說明當前預設域是“ defaultWIMFileBasedRealm ”,此域中包含兩個基本項(“ o=defaultWIMFileBasedRealm ”以及“ dc=ids601,dc=com ”),分別對應上面所提到的兩個儲存庫。我們可以通過圖2來重新回顧一下三者之間的關係。

新增資料庫儲存庫

新增資料庫儲存庫的步驟和新增 LDAP 儲存庫的過程基本一致,我們可以把 JDBC 可訪問的資料庫也新增到聯合使用者表中,同樣需要編輯 wkplc.properties 並填寫相應引數,然後通過執行 ConfigEngine.sh wp-create-db 來完成此配置。這裡就不展開介紹了。

刪除儲存庫

當我們不再需要某一個儲存庫時,我們可以在任意時刻將它刪除,此時所說的刪除其實包括兩個步驟。第一步是將此儲存庫在域中所對應的基本項從域中移除,第二步是將儲存庫徹底刪除。其實從我們上面所分析的 wimconfig.xml 檔案來看,第一步就是修改域配置資訊,移除其相應包含的基本項,第二步是刪除存 儲庫的配置資訊。在 WebSphere Portal Server V6.1 中提供了一個任務 (wp-delete-repository) 來一次性完成這兩個步驟。此任務包括兩個配置引數:

wkplc.properties

  • federated.delete.baseentry=o=defaultWIMFileBasedRealm
    • 用來指定從域中移除的基本項
  • federated.delete.id=InternalFileRepository
    • 用來指定所需刪除的儲存庫 ID

值得注意的是,如果此儲存庫包含當前正在使用的管理員 ID,使用者需要將 Portal 管理員 ID 更改為其他儲存庫中的使用者,然後才能刪除此儲存庫。另外,如果此儲存庫同時被包含在其他域中,使用者需要先將其基本項從其他域中移除之後再來刪除。如何從其他域中刪除基本項請參看多使用者域以及虛擬門戶

設定預設儲存庫

當聯合使用者登錄檔中包含多個儲存庫時,新建立的使用者會儲存在哪一個儲存庫中呢?如何更改預設的儲存庫呢?其實這一切都可以通過分析 wimconfig.xml 來得到答案。


wimconfig.xml


  cn

……

  uid


可以看出預設的新使用者和組都會儲存在 o=defaultWIMFileBasedRealm 這個基本項中,也就是預設的檔案儲存庫。我們可以通過執行 ConfigEngine 的任務 (wp-update-entitytypes) 來完成對預設儲存庫的配置。例如:

wkplc.properties

  • personAccountParent=cn=users,dc=ids601,dc=com
    • 使用者的預設父節點
  • groupParent=cn=groups,dc=ids601,dc=com
    • 組的預設父節點

執行完任務之後我們通過 Portal 所建立的新使用者就會儲存在 LDAP 儲存庫裡,而不是以前的檔案儲存庫了,使用者 ID 也會自動新增上“ cn=users,dc=ids601,dc=com ”的字尾。新建立的組也是一樣的道理。執行完畢後,新的 wimconfig.xml 檔案相關內容如下所示。


執行 wp-update-entitytypes 之後的 wimconfig.xml


  cn

......

  uid


聯合使用者登錄檔的侷限性

  • DN(Distinguished Name) 在同一個域的所有儲存庫中必須唯一。例如,如果在 LDAP1 儲存庫中包括 uid=wpsadmin,o=youco ,那麼在其它儲存庫中不能再包括這一使用者。
  • 短名(例如: wpsadmin )也必須在同一個域的所有儲存庫中唯一。
  • 在同一個域的所有儲存庫所對應的基本項中不能出現重疊。例如,如果 LDAP1 儲存庫的基本項為 c=us,o=youco ,那麼 LDAP2 儲存庫的基本項不能為 o=youco
  • 由於 VMM 的限制,如果聯合登錄檔中的任一儲存庫停止執行,使用者將不能進行身份驗證,即使此使用者儲存在別的此時工作正常的儲存庫也不行。

    單個孤立的登錄檔

    在 WebSphere Portal Server V6.1 中,單個孤立的登錄檔並不被推薦使用。如果您的系統當中存有大量的歷史遺留應用僅支援單個孤立的登錄檔,或者考慮到與其他系統整合因素在內,可以選擇使用此使用者登錄檔。

    在單個孤立登錄檔與聯合使用者登錄檔之間切換

    我們注意到,在 WebSphere Application Server V6.1 中,我們可以隨時配置聯合使用者登錄檔或單個孤立登錄檔,並在需要的時候再將其設為當前選擇。也就是說,在 WebSphere Application Server V6.1 裡,這兩部分的配置資訊是獨立共存的,互不干擾。但是在 WebSphere Portal Server V6.1 中並不是這樣。原因在於 Portal 無論底層採用的是單個孤立登錄檔還是聯合使用者登錄檔都採取了用 VMM 直接讀取,這樣在單個孤立登錄檔時就必須也同時把它當作聯合使用者登錄檔來對待,同樣在 wimconfig.xml 中建立了域/基本項/儲存庫,只不過此時域中就只包括唯一的儲存庫了。

    需要注意的是,當使用者從聯合使用者登錄檔切換到單個孤立登錄檔時,會先刪除此時所有的基本項/儲存庫,然後再為單個孤立登錄檔建立 基本項及儲存庫,也就是說無法像 WebSphere Application Server 那樣保持各自的配置資訊獨立共存,互不干擾。同理,當使用者從單個孤立登錄檔切換到聯合使用者登錄檔時,就只會簡單得更改一下域名稱,而將原來的單個孤立登錄檔直接作為聯合使用者登錄檔中的一個儲存庫,無需再重新新增。

    單個孤立的輕量級目錄訪問協議 (LDAP) 登錄檔。

    讓我們來看一下從聯合使用者登錄檔切換到單個孤立的輕量級目錄訪問協議 (LDAP) 登錄檔的過程。在我們當前的環境中,聯合使用者登錄檔現在包括了兩個儲存庫,分別是檔案儲存庫和已經新新增的 LDAP 儲存庫(LDAP 位於 pvcent49 的主機上)現在需要切換到單個孤立的 LDAP 登錄檔上(LDAP 位於 pvcent76 的主機上)。首先依然是修改 wkplc.properties 檔案,其中需要特別注意的是如下幾個引數:

    wkplc.properties

    • standalone.ldap.realm = Realm_pvcent76.cn.ibm.com:389
      • 域 (Realm) 名稱
    • standalone.ldap.id = RepositoryID_pvcent76.cn.ibm.com:389
      • 儲存庫 ID
    • standalone.ldap.baseDN = dc=ids5201,dc=com
      • 儲存庫所對應的基本項 (BaseEntry)

    從聯合使用者登錄檔切換到單個孤立登錄檔 (LDAP)
    [root@pvcent107 ConfigEngine]# ./ConfigEngine.sh wp-modify-ldap-security
    ......
    [wplc-create-realm] Realm Realm_pvcent76.cn.ibm.com:389 was created successfully.
    ......
    [wplc-cleanup-repositories] Deleteing realm defaultWIMFileBasedRealm
    [wplc-cleanup-repositories] Deleteing repository RepositoryID_pvcent49.cn.ibm.com:389
    [wplc-cleanup-repositories] Repository 
    [wplc-cleanup-repositories] Deleteing repository InternalFileRepository
    [wplc-cleanup-repositories] Status = Complete
    ......
    wp-create-wimconfig-ldap:
    [wplc-create-federated-ldap-repository]  
       id="RepositoryID_pvcent76.cn.ibm.com:389"
    [wplc-create-federated-ldap-repository] Status = Complete
    ......
    wp-create-base-entry:
         [echo] id                  = RepositoryID_pvcent76.cn.ibm.com:389
         [echo] baseDN           = dc=ids5201,dc=com
         [echo] nameInRepository    = dc=ids5201,dc=com
    ......
    BUILD SUCCESSFUL
    Total time: 1 minute 36 seconds
    [root@pvcent107 ConfigEngine]# 
    

    可以看到在配置過程中首先建立了新的域,然後依次刪除了舊的域以及兩個儲存庫,最後再建立新的 LDAP 儲存庫以及基本項。

    事實上是不能通過檢查 wimconfig.xml 來判斷當前 Portal 的登錄檔型別的,我們可以通過檢查 security.xml 來得到當前登錄檔型別。


    security.xml
    
    
     ......
    
    

    在 security.xml 中可以看出,當前選擇的使用者登錄檔 ID 是 "LDAPUserRegistry_1",對應的是 LDAP 使用者登錄檔。如果我們在配置了聯合使用者登錄檔的時候來檢視此檔案,就會發現這裡的值是 "WIMUserRegistry_1",對應著聯合使用者登錄檔了。

    多使用者域以及虛擬門戶

    多使用者域(multiple realms)和虛擬門戶(virtual portal)的概念由來已久,最早出現在WebSphere Portal V5.1 中。在本文中我們就不詳細講解二者概念,只著重介紹 WebSphere Portal V6.1 給我們帶來了哪些新的變化。首先,我們先簡要給出使用者域和虛擬門戶在 WebSphere Portal V6.1 中的概念定義。

    • 使用者域:是將一個或多個使用者儲存庫中的使用者進行重新組合形成新的使用者群。它是一個邏輯上的概念。
    • 虛擬門戶:是在一個單獨的,公用的 WebSphere Portal 環境裡,對門戶的資源(包括頁面,使用者群等等)進行邏輯上的劃分。

    多使用者域和虛擬門戶之間的聯絡可以用下圖 3 來表示

    3. 多使用者域和虛擬門戶之間的聯絡

    可以看出,從概念和之間關聯上,多使用者域和虛擬門戶在 WebSphere Portal V6.1 中沒有什麼變化。但是 WebSphere Portal V6.1 通過 ConfigEngine 大大簡化了多使用者域的配置過程,避免了以前需要對門戶安全配置檔案的直接修改,大大提高了使用者體驗。

    WebSphere Portal V6.1 的ConfigEngine 提供如下的任務用於配置門戶的多使用者域支援:


    表 1. ConfigEngine 任務列表

    ConfigEngine 多使用者域配置任務 作用
    wp-create-realm 使用指定的基本項建立使用者域
    wp-add-realm-baseentry 將指定的基本項新增到使用者域中
    wp-delete-realm-baseentry 將指定的基本項從使用者域中刪除
    wp-query-realm-baseentry 查詢使用者域中的基本項
    wp-default-realm 設定預設使用者域 **

    注意:如果原來的 WebSphere Portal Server 以及 WebSphere Application Server 的管理員帳號不在新的預設使用者域中,則需要呼叫 wp-change-was-admin-user 和 wp-change-portal- admin-user 來修改兩個伺服器的管理員帳號。具體請參看 WebSphere Portal V6.1 產品文件

    下面我們通過一個例子來了解如何配置 WebSphere Portal V6.1 的多使用者域和虛擬門戶支援。在前面的介紹中,我們已經瞭解瞭如何配置門戶的聯合使用者登錄檔。在多使用者域和虛擬門戶的示例中,我們將利用 WebSphere Portal 中的3個儲存庫來配置多使用者域支援。3 個 LDAP 儲存庫分別來自兩個不同型別的目錄伺服器 IBM Directory Server 6.0.1 和 Domino 8 LDAP, 具體配置如下:

    • 儲存庫1:
      • federated.ldap.id=Repository1_pvcent64.cn.ibm.com:389
      • federated.ldap.baseDN=o=realm01
    • 儲存庫2:
      • federated.ldap.id=Repository2_pvcent64.cn.ibm.com:389
      • federated.ldap.baseDN=o=realm02
    • 儲存庫3:
      • federated.ldap.id=Repository3_pvcent49.cn.ibm.com:389
      • federated.ldap.baseDN=dc=ids601,dc=com

    在下面的例子中,我們將把這三個儲存庫中的三個不同基本項分佈到兩個使用者域 realm1 和 reaml2 中,如下圖 4 所示。其中 realm1 包含儲存庫1的基本項 o=realm01 和儲存庫3中的基本項 dc=ids601,dc=com;realm2 將僅包含儲存庫2的基本項 o=realm02。

    4. 多使用者域中儲存庫示例

    現在讓我們開始執行多使用者域配置的 ConfigEngine 任務來體驗它的簡單快捷吧。

    首先,來生成 realm1。在 wkplc.properties 檔案中修改如下引數,然後執行 wp-create-realm 任務。

    wkplc.properties

    • realmName=realm1
    • securityUse=active
    • delimiter=/
    • addBaseEntry=o=realm01

    任務執行完後,結果如下:


    wp-create-realm

    [root@pvcent107 ConfigEngine]# ./ConfigEngine.sh wp-create-realm
    ……
    [wplc-create-realm]   Instance attributes (Set 1 of 1):
     [wplc-create-realm]     addBaseEntry="o=realm01"
    [wplc-create-realm]     name="realm1"
    [wplc-create-realm]     ignoreDuplicateIDs="false"
     [wplc-create-realm] Base entry o=realm01 was created successfully.
    [wplc-create-realm] Realm realm1 was created successfully.
    [wplc-create-realm] Status = Complete
    ……
    BUILD SUCCESSFUL
    Total time: 16 seconds
    

    同理在 wkplc.properties 檔案中修改如下引數,再通過 wp-create-realm 任務建立 realm2。

    wkplc.properties

    • realmName=realm2
    • securityUse=active
    • delimiter=/
    • addBaseEntry=o=realm02

    接下來,我們在 wkplc.properties 檔案中修改如下引數,再通過 wp-add-realm-baseentry 任務來將儲存庫3的基本項 dc=ids601,dc=com 加入 realm2 中。

    wkplc.properties

    • realmName=realm2
    • addBaseEntry=dc=ids601,dc=com

    執行結果如下:


    wp-add-realm-baseentry

    [root@pvcent107 ConfigEngine]# ./ConfigEngine.sh wp-add-realm-baseentry
    ……
    wp-add-realm-baseentry:
    ……
    [wplc-add-realm-baseentry]   Instance attributes (Set 1 of 1):
    [wplc-add-realm-baseentry]     addBaseEntry="dc=ids601,dc=com"
    [wplc-add-realm-baseentry]     name="realm2"
    [wplc-add-realm-baseentry] Base entry dc=ids601,dc=com was added successfully.
    [wplc-add-realm-baseentry] Status = Complete
    ……
    BUILD SUCCESSFUL
    Total time: 8 seconds
    

    多使用者域已經按照我們預想的方式配置完成了。重啟 WebSphere Portal 後,我們接下來就可以使用使用者域來建立兩個虛擬入口網站-- “虛擬入口網站1”和“虛擬入口網站2”。下圖所示是通過管理器建立虛擬入口網站的過程。從圖中看到 realm1 被指定給了“虛擬入口網站1”;同理將 realm2 被指定給了“虛擬入口網站2”。這樣 realm1 中的使用者只能訪問“虛擬入口網站1”;而 realm2 中的使用者只能訪問“虛擬入口網站2”。


    圖 5. 建立虛擬入口網站

    除了上面用到的兩個任務外,ConfigEngine 還提供了一些方便的任務對多使用者域進行管理,比如可以通過任務刪除和查詢使用者域中的基本項,切換預設使用者域等等。這些任務的使用和前面的示例類似,可以參看 WebSphere Portal V6.1 文件進行使用。


    結束語

    至此,我們已經介紹了 WebSphere Portal Server V6.1 中單個孤立使用者登錄檔/聯合使用者登錄檔以及多使用者域的相關應用,聯合使用者登錄檔能夠使您靈活的新增/刪除儲存庫,單個孤立使用者登錄檔能夠更好的相容原有系統,而多使用者域和虛擬門戶的配置過程在此版本中大大簡化,更加易於使用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-589244/,如需轉載,請註明出處,否則將追究法律責任。

相關文章