Sun Java System Directory Server Enterprise Edition 6.0 管理指南

第 24 章 目錄代理伺服器虛擬資料檢視

本章說明如何建立虛擬資料檢視。虛擬資料檢視以某種方式轉換資料來源,再以不同檢視向用戶端應用程式顯示該資料。虛擬資料檢視包含轉換的 LDAP 資料檢視、LDIF 資料檢視、連結資料檢視及 JDBCTM 資料檢視。如需虛擬資料檢視的功能簡介與使用範例的說明,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的第 23 章「Virtual Data Views」

您無法使用目錄服務控制中心 (DSCC) 執行本章中的程序。必須使用指令行。

本章包含下列主題:

建立與配置 LDIF 資料檢視

LDIF 資料檢視是簡單的虛擬資料檢視,在其中 LDIF 檔案看似 LDAP 資料來源。與 LDAP 資料檢視不相同,當設定 LDIF 資料檢視時,不建立資料來源或資料來源池,而是在建立資料檢視時指定 LDIF 檔案。依預設,無法寫入 LDIF 資料檢視。如需詳細資訊,請參閱定義虛擬資料檢視的存取控制

如需有關建立與配置 LDIF 資料檢視的資訊,請參閱下列程序。

Procedure建立 LDIF 資料檢視

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 建立 LDIF 資料檢視。


    $ dpconf create-ldif-data-view -h host -p port view-name path-to-ldif-file suffix-dn
    
  2. (可選擇) 檢視 LDIF 資料檢視清單。


    $ dpconf list-ldif-data-views -h host -p port
    

    虛擬存取控制資料檢視是唯一的預設 LDIF 資料檢視。該資料檢視由伺服器產生,可將請求路由至虛擬存取控制指令 (ACI)。

Procedure配置 LDIF 資料檢視

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 檢視 LDIF 資料檢視的特性。


    $ dpconf get-ldif-data-view-prop -h host -p port view-name
    

    LDIF 資料檢視具有下列預設特性:


    alternate-search-base-dn                    :  ""
    alternate-search-base-dn                    :  dc=com
    attr-name-mappings                          :  none
    base-dn                                     :  suffixDN
    bind-pwd-attr                               :  userPassword
    contains-shared-entries                     :  -
    db-pwd-encryption                           :  clear-text
    description                                 :  -
    distribution-algorithm                      :  -
    dn-join-rule                                :  -
    dn-mapping-attrs                            :  none
    dn-mapping-source-base-dn                   :  none
    excluded-subtrees                           :  -
    filter-join-rule                            :  -
    is-enabled                                  :  true
    is-read-only                                :  false
    is-routable                                 :  true
    ldif-data-source                            :  /path/to/filename.ldif
    lexicographic-attrs                         :  all
    lexicographic-lower-bound                   :  none
    lexicographic-upper-bound                   :  none
    non-viewable-attr                           :  -
    non-writable-attr                           :  -
    numeric-attrs                               :  all
    numeric-default-data-view                   :  false
    numeric-lower-bound                         :  none
    numeric-upper-bound                         :  none
    pattern-matching-base-object-search-filter  :  all
    pattern-matching-dn-regular-expression      :  all
    pattern-matching-one-level-search-filter    :  all
    pattern-matching-subtree-search-filter      :  all
    process-bind                                :  -
    replication-role                            :  master
    viewable-attr                               :  all except non-viewable-attr
    writable-attr                               :  all except non-writable-attr
  2. 變更步驟 1 中所列的一或多個特性。


    $ dpconf set-ldif-data-view-prop -h host -p port view-name property:value \
     [property:value ... ]

    例如,若要變更資料檢視的來源 LDIF 檔案,請設定 ldif-data-source 特性。


    $ dpconf set-ldif-data-view-prop -h host1 -p 1389 -D cn="Proxy Manager" myLDIFDataView \
     ldif-data-source:/local/files/example.ldif

配置虛擬資料轉換

虛擬資料轉換在現有的資料檢視上定義,並從實體資料檢視建立虛擬資料檢視。如需有關其運作方式的資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的「Virtual Data Transformations」

您可以將虛擬資料轉換增加至任何類型的資料檢視:LDAP 資料檢視、LDIF 資料檢視、連結資料檢視或 JDBC 資料檢視。

Procedure增加虛擬轉換

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 將轉換增加至資料檢視。


    $ dpconf add-virtual-transformation -h host -p port view-name \
     transformation-model transformation-action attribute-name [parameters...]

    請注意,根據 transformation-modeltransformation-actionparameters 可能為必要項目。如需有關轉換模式、轉換動作與轉換參數的資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的「Virtual Data Transformations」

  2. (可選擇) 檢視在資料檢視上定義的虛擬轉換的清單。

    $ dpconf list-virtual-transformations -h host -p port view-name
    

建立與配置連結資料檢視

連結資料檢視是多個資料檢視的彙總。如需有關連結資料檢視運作方式的資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的「Join Data Views」

如需有關如何建立與配置連結資料檢視的資訊,請參閱下列程序。

Procedure建立連結資料檢視

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 識別要彙總以形成連結檢視的主要與輔助資料檢視。

    必須存在主要與輔助資料檢視,才能建立連結檢視。主要與輔助檢視可以是任何類型的資料檢視,包含 LDAP 資料檢視、LDIF 資料檢視、JDBC 資料檢視或其他連結資料檢視。必須配置輔助檢視上的特定特性,以允許其做為連結檢視的來源。如需詳細資訊,請參閱配置連結檢視的輔助檢視

  2. 建立連結資料檢視。


    $ dpconf create-join-data-view -h host -p port view-name primary-view secondary-view \
     suffix-dn
    
  3. (可選擇) 檢視連結檢視清單以檢查是否已成功建立資料檢視。


    $ dpconf list-join-data-views -h host -p port
    

Procedure配置連結資料檢視

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 檢視連結資料檢視的特性。


    $ dpconf get-join-data-view-prop -h host -p port view-name
    

    連結資料檢視的預設特性如下:


    alternate-search-base-dn                    :  ""
    alternate-search-base-dn                    :  dc=com
    attr-name-mappings                          :  none
    base-dn                                     :  suffixDN
    contains-shared-entries                     :  -
    description                                 :  -
    distribution-algorithm                      :  -
    dn-join-rule                                :  -
    dn-mapping-attrs                            :  none
    dn-mapping-source-base-dn                   :  none
    excluded-subtrees                           :  -
    filter-join-rule                            :  -
    is-enabled                                  :  true
    is-read-only                                :  false
    is-routable                                 :  true
    lexicographic-attrs                         :  all
    lexicographic-lower-bound                   :  none
    lexicographic-upper-bound                   :  none
    non-viewable-attr                           :  -
    non-writable-attr                           :  -
    numeric-attrs                               :  all
    numeric-default-data-view                   :  false
    numeric-lower-bound                         :  none
    numeric-upper-bound                         :  none
    pattern-matching-base-object-search-filter  :  all
    pattern-matching-dn-regular-expression      :  all
    pattern-matching-one-level-search-filter    :  all
    pattern-matching-subtree-search-filter      :  all
    primary-view                                :  primary-view
    process-bind                                :  -
    replication-role                            :  master
    secondary-view                              :  secondary-view
    viewable-attr                               :  all except non-viewable-attr
    writable-attr                               :  all except non-writable-attr
  2. 變更步驟 1 中所列的一或多個特性。


    $ dpconf set-join-data-view-prop -h host -p port view-name property:value \
     [property:value ... ]

    例如,若要將資料來源的主要資料檢視變更為 myLDAPDataView,請使用下列指令:


    $ dpconf set-join-data-view-prop -h host1 -p 1389 -D cn="Proxy Manager" \
     myJoinDataView primary-view:myLDAPDataView
  3. 請視需要重新啟動目錄代理伺服器實例以使變更生效。

    如需有關重新啟動目錄代理伺服器的資訊,請參閱重新啟動目錄代理伺服器

Procedure配置連結檢視的輔助檢視

必須配置輔助資料檢視上的特定特性,以允許其做為連結檢視的來源。由於輔助檢視可以是任何類型的資料檢視,您使用的指令依賴於資料檢視類型。下列指令範例假設輔助檢視為 LDAP 資料檢視。如需此處所述特性的詳細資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的「Additional Secondary Data View Properties」

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 定義確定輔助檢視如何關聯主要檢視的連結規則。

    連結規則可以是下列其中之一:

    • DN 連結規則


      $ dpconf set-ldap-data-view-prop -h host -p port secondary-view-name \
       dn-join-rule:uid=\${primary-view-name.uid},ou=People,dc=example
    • 篩選連結規則


      $ dpconf set-ldap-data-view-prop -h host -p port secondary-view-name filter-join-rule:uid=\${primary-view-name.uid}
  2. (可選擇) 指定輔助檢視上是否允許連結。

    依預設,所有資料檢視上皆允許連結。若要禁止連結至輔助資料檢視,請執行下列指令:


    $ dpconf set-ldap-data-view-prop -h host -p port secondary-view-name process-bind:false

    如需此特性的詳細資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的「Handling of Binds」

  3. (可選擇) 指定輔助檢視是否包含共用項目。


    $ dpconf set-ldap-data-view-prop -h host -p port secondary-view-name contains-shared-entries:true

    如需此特性的詳細資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的「Handling of Shared Entries」

建立與配置 JDBC 資料檢視

JDBC 資料檢視讓您能將關聯式資料庫提供給 LDAP 用戶端應用程式存取。如需有關 JDBC 資料檢視運作方式的資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的「JDBC Data Views」

如需有關如何建立與配置 JDBC 資料檢視的資訊,請參閱下列程序。

Procedure建立 JDBC 資料檢視

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 為關聯式資料庫建立 JDBC 資料來源。


    $ dpconf create-jdbc-data-source -h host -p port -b db-name -B db-url -J driver-url \
     -S driver-class source-name
    

    目前,每個 JDBC 資料檢視只支援一個 JDBC 資料來源。亦即,您無法在 JDBC 資料來源之間進行負載平衡。若要存取多個 JDBC 資料來源,可以建立每個資料來源的資料檢視,再使用連結資料檢視連結所有檢視。

    建立 JDBC 資料來源時必須設定下列特性:

    db-name

    關聯式資料庫的名稱,例如 payrolldb

    db-url

    資料庫的 URL,格式為 jdbc: vendor:driver://dbhost: dbport

    db-url 不是完整的 JDBC 資料庫 URL,因為它不包含資料庫名稱。(資料庫名稱由 db-name 特性指定。)

    driver-class

    JDBC 驅動程式類別,例如 org.hsqldb.jdbcDriver

    driver-url

    JDBC 驅動程式的路徑,例如 file:/// path/to/hsqldb/lib/hsqldb.jar

  2. 建立 JDBC 資料來源池。


    $ dpconf create-jdbc-data-source-pool -h host -p port pool-name
    
  3. 將 JDBC 資料來源附加至 JDBC 資料來源池。


    $ dpconf attach-jdbc-data-source -h host -p port pool-name source-name
    
  4. 建立 JDBC 資料檢視。


    $ dpconf create-jdbc-data-view -h host -p port view-name pool-name suffix-DN
    
  5. (可選擇) 檢視 JDBC 資料檢視清單以檢查是否已成功建立資料檢視。


    $ dpconf list-jdbc-data-views -h host -p port
    

Procedure配置 JDBC 資料檢視

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 檢視 JDBC 資料檢視的特性。


    $ dpconf get-jdbc-data-view-prop -h host -p port view-name
    

    JDBC 資料檢視的預設特性如下:


    alternate-search-base-dn                    :  -
    attr-name-mappings                          :  none
    base-dn                                     :  o=sql1
    contains-shared-entries                     :  -
    description                                 :  -
    distribution-algorithm                      :  -
    dn-join-rule                                :  -
    dn-mapping-attrs                            :  none
    dn-mapping-source-base-dn                   :  none
    excluded-subtrees                           :  -
    filter-join-rule                            :  -
    is-enabled                                  :  true
    is-read-only                                :  false
    is-routable                                 :  true
    jdbc-data-source-pool                       :  pool-name
    lexicographic-attrs                         :  all
    lexicographic-lower-bound                   :  none
    lexicographic-upper-bound                   :  none
    non-viewable-attr                           :  -
    non-writable-attr                           :  -
    numeric-attrs                               :  all
    numeric-default-data-view                   :  false
    numeric-lower-bound                         :  none
    numeric-upper-bound                         :  none
    pattern-matching-base-object-search-filter  :  all
    pattern-matching-dn-regular-expression      :  all
    pattern-matching-one-level-search-filter    :  all
    pattern-matching-subtree-search-filter      :  all
    process-bind                                :  -
    replication-role                            :  master
    viewable-attr                               :  all except non-viewable-attr
    writable-attr                               :  all except non-writable-attr
  2. 變更步驟 1 中所列的一或多個特性。


    $ dpconf set-jdbc-data-view-prop -h host -p port view-name property:value \
     [property:value ... ]

Procedure配置 JDBC 表格、屬性與物件類別

配置 JDBC 資料檢視時,必須同時配置下列物件:

  1. 為關聯式資料庫中的每個表格建立 JDBC 表格。


    % dpconf create-jdbc-table jdbc-table-name db-table
    

    db-table 的名稱區分大小寫。請確保使用與關聯式資料庫中相同的大小寫,否則以該表格為目標的作業可能會失敗。

  2. 為各關聯式資料庫表格中的每一欄建立 JDBC 屬性。


    % dpconf add-jdbc-attr table-name attr-name sql-column
    

    建立 JDBC 屬性會將表格欄對映至 LDAP 屬性。

  3. (可選擇) 如果關聯式資料庫中的欄區分大小寫,請變更 JDBC 屬性的 LDAP 語法。


    % dpconf set-jdbc-attr-prop table-name attr-name ldap-syntax:ces

    依預設,ldap-syntax 的值為 cis。這表示 jdbc-attr 不區分大小寫。如果關聯式資料庫區分大小寫,請將該值變更為 ces

    某些關聯式資料庫 (例如 Oracle 與 DB2) 預設為區分大小寫。依預設,LDAP 不區分大小寫。當目錄代理伺服器偵測到關聯式資料庫表格的某欄區分大小寫時,會將篩選內具有對應屬性的 ldapsearch 查詢轉譯為使用 UPPER 函數的 SQL 查詢。

    例如,將查詢 ldapsearch -b "dc=mysuffix" "(attr=abc)" 轉譯為下列 SQL 查詢:


    SELECT * FROM mytable WHERE (UPPER(attr)='ABC')

    依預設,不編製此類查詢的索引。因此,會嚴重影響此類查詢的效能。

    有兩種方法可以減輕對效能的影響:

    • 透過將 jdbc-attr 的 ldap-syntax 特性設為 ces

    • 透過使用 UPPER 函數為每個 jdbc-attr 編製 LDAP 篩選可能會使用的索引。

  4. 為 LDAP 關聯式資料庫表格建立 JDBC 物件類別。


    % dpconf create-jdbc-object-class view-name objectclass primary-table \
      [secondary-table... ] DN-pattern
    

    建立 JDBC 物件類別本質上是指定將與這些表格相關聯的 LDAP 物件類別。JDBC 物件類別還指定主要表格與輔助表格 (如果存在)。

    在建立 JDBC 物件類別時,指定 DN 模式。DN 模式顯示項目 DN 的建構方式。

  5. 如果存在輔助表格,請定義主要表格與輔助表格之間的連結規則。


    % dpconf set-jdbc-table-prop secondary-table-name filter-join-rule:join-rule
    

    連結規則定義於輔助表格上,並確定輔助表格的資料如何連結至主要表格的資料。如何定義物件類別的主要與輔助表格之間的關係頗為重要。如需詳細資訊,請參閱定義 JDBC 表格之間的關係

  6. 指定 JDBC 物件類別的超級類別。


    % dpconf set-jdbc-object-class-prop view-name objectclass super-class:value
    

    超級類別表示 JDBC 物件類別從其繼承的 LDAP 物件類別。

定義 JDBC 表格之間的關係

在最簡單的案例中,JDBC 物件類別僅包含單一 (主要) 表格。由於沒有輔助表格,因此無須定義表格之間的關係。

如果物件類別包含多個表格,必須清楚地定義這些表格之間的關係。表格之間的關係一律定義於輔助表格上。輔助表格的下列特性可讓您定義這些關係:

以下範例說明如何根據前兩個特性的值定義篩選連結規則。這些範例假設物件類別具有一個主要表格與一個輔助表格。


範例 24–1 is-single-row-table:truecontains-shared-entries:true

這是這些特性的預設值。在本例中,主要與輔助表格之間的關係為 n->1,亦即主要表格中有 n 列參照輔助表格某一共用列。

關聯式資料庫中,在主要表格中定義外來鍵 (FK),並指向輔助表格的某欄。

例如,在某個機構中,有數名員工與同一位經理共事。將定義兩個關聯式資料庫表格,具有如下結構:


primary table : EMPLOYEE [ID, NAME, FK_MANAGER_ID]
secondary table : MANAGER  [ID, NAME]

定義下列物件類別與屬性:


object-class : employee
attr : name (from primary EMPLOYEE.NAME)
attr : manager (from secondary MANAGER.NAME)

在輔助表格中定義下列篩選連結規則:


"${ID}=${EMPLOYEE.FK_MANAGER_ID}"

在此配置下,LDAP 作業的運作方式如下:



範例 24–2 is-single-row-table:truecontains-shared-entries:false

在本例中,主要與輔助表格之間的關係為 1->11<-1,亦即主要表格中有一列參照輔助表格中某一列。

在關聯式資料庫中,可能會在主要表格或輔助表格中定義外來鍵 (FK) 。

例如,在某個機構中,員工的 UID 儲存在一個表格中,而員工的姓氏則儲存在輔助表格中。將定義兩個關聯式資料庫表格,具有如下結構:


primary table : UID [ID, VALUE, FK_SN_ID]
secondary table : SN [ID, VALUE]

定義下列物件類別與屬性:


object-class : employee
attr : uid (from primary UID.VALUE)
attr : sn (from secondary ID.VALUE)

在輔助表格中定義下列篩選連結規則:


"${ID}=${UID.FK_SN_ID}"

此配置可能相反,外來鍵 FK_UID_ID 儲存在輔助表格中,並指向 UID.ID



範例 24–3 is-single-row-table:falsecontains-shared-entries:false

在本例中,主要與輔助表格之間的關係為 1->n,亦即輔助表格有 n 列參照主要表格某一列。此範例說明多值屬性案例。多值屬性在輔助表格中以列集合表示,每個屬性值一列。

關聯式資料庫中,在輔助表格中定義外來鍵,並指向主要表格的某欄。

例如,在某個機構中,每位員工具有數個電話號碼。將定義兩個關聯式資料庫表格,具有如下結構:


primary table : EMPLOYEE [ID, NAME]
secondary table : PHONE [ID, VALUE, USER_ID]

定義下列物件類別與屬性:


object-class : employee
attr : cn (from primary EMPLOYEE.NAME)
attr : telephoneNumber (from secondary PHONE.VALUE)

在輔助表格中定義下列篩選連結規則:


"${USER_ID}=${EMPLOYEE.ID}"


範例 24–4 is-single-row-table:falsecontains-shared-entries:true

目錄代理伺服器目前不支援此案例。


定義虛擬資料檢視的存取控制

虛擬資料檢視的 ACI 可以儲存在 LDAP 目錄或 LDIF 檔案中。如需有關虛擬 ACI 如何運作的資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的「Access Control On Virtual Data Views」

建立目錄代理伺服器實例時,定義虛擬存取控制的下列預設配置:

Procedure定義新的 ACI 儲存庫

若不想使用上述的預設 ACI 配置,可以定義其他儲存庫。

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 建立要在其中儲存虛擬 ACI 的儲存庫之資料檢視。

  2. 將上一步驟中建立的資料檢視名稱指定為 ACI 資料檢視。

    $ dpconf set-virtual-aci-prop -h host -p port aci-data-view:data-view-name
    
  3. 如果 ACI 儲存庫為 LDAP 目錄,請定義存取 ACI 資料檢視所需的憑證。

    $ dpconf set-virtual-aci-prop -h host -p port aci-manager-bind-dn:bind-dn
    $ dpconf set-virtual-aci-prop -h host -p port aci-manager-bind-pwd-file:filename
    

Procedure配置虛擬存取控制

不論使用的 ACI 儲存庫為何,皆須配置虛擬存取控制。


備註 –

僅代理伺服器管理員可以建立 ACI 池,並經由 ACI 資料檢視直接管理 ACI。如果 ACI 儲存庫為 LDAP 目錄,則必須修改該目錄的模式以包含 aciSource 物件類別與 dpsaci 屬性。如需有關自訂模式的詳細資訊,請參閱延伸目錄伺服器模式


無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 在 ACI 儲存庫中建立 ACI 池,並設定全域 ACI。

    如需有關全域 ACI 的資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的「Global ACIs」。若要設定全域 ACI,請在 ACI 資料檢視的檢視基底下增加 aciSource 項目。例如:


    % ldapmodify -p port -D "cn=proxy manager" -w -
    dn: cn=data-source-name,cn=virtual access controls
    changetype: add
    objectclass: aciSource
    dpsaci: (targetattr="*") (target = "ldap:///ou=people,o=virtual") (version 3.0; \
     acl "perm1"; allow(all) groupdn="ldap:///cn=virtualGroup1,o=groups,o=virtual";)
    cn: data-source-name
    
  2. 配置一或多個連線處理程式使用此 ACI 池。


    % dpconf set-connection-handler-prop -h host -p port connection-handler aci-source:data-source-name
    
  3. 將所需的 ACI 增加至資料。

    若要執行此項作業,請建立包含 ACI 的虛擬項目。例如:


    % ldapmodify -p port -D "cn=virtual application,ou=application users,dc=com" -w -
    dn: ou=people,o=virtual
    changetype: modify
    add: dpsaci
    dpsaci: (targetattr="*")(version 3.0; acl "perm1"; allow(all) userdn ="ldap:///self";)
    dpsaci: (targetattr="*")(version 3.0; acl "perm1"; allow(search, read, compare) \
     userdn ="ldap:///anyone";)

    備註 –

    具有適當存取權限的任何使用者皆可透過資料檢視增加和擷取虛擬 ACI。


定義虛擬資料檢視的模式檢查

通常,在 LDAP 資料檢視中,由後端目錄使用後端目錄的模式執行模式檢查。若要由目錄代理伺服器執行模式檢查,請使用下列程序。

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

若要正規化請求,特別是 DN,請依下列方式設定伺服器的 use-external-schema 特性:

Procedure定義模式檢查

  1. 表示伺服器實例應使用外部模式。


    $ dpconf set-server-prop -h host -p port use-external-schema:true
  2. 針對連線處理程式啟用模式檢查。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler\
     schema-check-enabled:true
  3. 建立顯示 cn=schema 的資料檢視。

    如果在 LDAP 目錄中定義外部模式,請如建立與配置 LDAP 資料檢視中所述,建立檢視基底為 cn=schema 的 LDAP 資料檢視。

    如果在 LDIF 檔案中定義外部模式,請如建立與配置 LDIF 資料檢視中所述,建立檢視基底為 cn=schema 的 LDIF 資料檢視。

  4. 將此資料檢視增加至連線處理程式顯示的資料檢視清單中。

    依預設,連線處理程式顯示所有資料檢視。如果已定義連線處理程式顯示的自訂資料檢視清單,請將此資料檢視增加至清單中。您必須使用下列指令指定連線處理程式將顯示所有資料檢視。


    $ dpconf set-connection-handler-prop -h host -p port connection-handler \
     data-view-routing-custom-list:data-view-name data-view-routing-custom-list:data-view-name
    

虛擬配置範例

下節提供兩個配置範例。這些配置說明虛擬目錄的主要功能,並指出這些功能的配置方式。

連結 LDAP 目錄與 MySQL 資料庫

本節中的程序說明連結 LDAP 目錄與 MySQL 資料庫的虛擬配置範例。LDAP 目錄是主要的資料來源,包含大部分的使用者資訊。mySQL 資料庫包含關於使用者的其他資訊。下圖說明產生的配置。

圖 24–1 虛擬配置範例

圖中顯示的連結資料檢視包含 LDAP 資料檢視與 JDBC 資料檢視

您可以使用 install-path /ds6/ldif/Example.ldif 中提供的資料範例複寫本範例,或者以自己的資料替代資料範例。

此配置可分為三部分:

為簡便起見,本節中的所有指令假設目錄代理伺服器在本機的 /local/dps 中執行。這些指令還假設已設定下列環境變數:

DIR_PROXY_PORT

1389

LDAP_ADMIN_PWF

pwd.txt,包含管理員密碼的檔案。

DIRSERV_PORT

4389

LDAP_ADMIN_USER

cn=Directory Manager

配置與測試 LDAP 資料檢視

Procedure配置 LDAP 資料檢視

開始之前

本節中的作業假設下列資訊:

  1. 為目錄伺服器實例建立名為 myds1 的 LDAP 資料來源。


    % dpconf create-ldap-data-source myds1 host1:4389
  2. 啟用資料來源,並允許該資料來源的寫入作業。


    % dpconf set-ldap-data-source-prop myds1 is-enabled:true is-read-only:false
  3. 建立名為 myds1-pool 的 LDAP 資料來源池。


    % dpconf create-ldap-data-source-pool myds1-pool
  4. 將 LDAP 資料來源附加至 LDAP 資料來源池。


    % dpconf attach-ldap-data-source myds1-pool myds1
  5. 指定資料來源應從資料來源池接收 100% 的連結、增加、搜尋與修改作業。


    % dpconf set-attached-ldap-data-source-prop myds1-pool myds1 add-weight:100 \
     bind-weight:100 modify-weight:100 search-weight:100
  6. 為資料來源池建立名為 myds1–view 且基底 DN 為 dc=example,dc=com 的 LDAP 資料檢視。


    % dpconf create-ldap-data-view myds1-view myds1-pool dc=example,dc=com

Procedure測試 LDAP 資料檢視

  1. dc=example,dc=com 下使用者的身份搜尋 LDAP 資料來源中的所有項目,來驗證是否可以讀取資料檢視。


    % ldapsearch -p 1389 -D "uid=kvaughan,ou=people,dc=example,dc=com" -w bribery \
     -b dc=example,dc=com "objectclass=*"

    備註 –

    您必須使用 dc=example,dc=com 下使用者的憑證。若要使用 cn=Directory Manager,則必須定義資料檢視以處理該 DN。


  2. dc=example,dc=com 下使用者的身份修改 userPassword 屬性,來驗證是否可以寫入資料檢視。


    % ldapmodify -p 1389 -D "uid=kvaughan,ou=people,dc=example,dc=com" -w bribery
    dn: uid=kvaughan,ou=people,dc=example,dc=com
    changetype: modify
    replace: userPassword
    userPassword: myNewPassword

    備註 –

    目錄伺服器中的預設 ACI 可讓使用者修改自己的密碼。


配置與測試 JDBC 資料檢視

下列作業假設 mySQL 資料庫已安裝、且正在執行並已寫入資料,以及 mySQL 資料庫具有下列特徵:

下表說明資料庫中的表格及其複合欄位。您需要此資訊才能設定 JDBC 資料檢視。

mySQL 表格 

欄位 

EMPLOYEE

IDSURNAMEPASSWORDTITLECOUNTRY_ID

COUNTRY

IDNAME

PHONE

USER_IDNUMBER

Procedure配置 JDBC 資料檢視

  1. 為 SQL 資料庫建立名為 mysql1 的 JDBC 資料來源。


    % dpconf create-jdbc-data-source -b sample_sql -B jdbc:mysql://host2:3306 \
     -J file:/net/host2.example/local/mysql/lib/jdbc.jar -S com.mysql.jdbc.Driver mysql1
  2. 指定 SQL 資料庫的使用者名稱與密碼檔案。


    % dpconf set-jdbc-data-source-prop mysql1 db-pwd-file:sqlpwd.txt db-user:root
  3. 重新啟動代理伺服器。


    % dpadm restart /local/dps
  4. 啟用資料來源,並允許該資料來源的寫入作業。


    % dpconf set-jdbc-data-source-prop mysql1 is-enabled:true is-read-only:false
  5. 建立名為 mysql1–pool 的 JDBC 資料來源池。


    % dpconf create-jdbc-data-source-pool mysql1-pool
  6. 將 JDBC 資料來源附加至資料來源池。


    % dpconf attach-jdbc-data-source mysql1-pool mysql1
  7. 為資料來源池建立名為 myjdbc1–view 且基底 DN 為 o=sql 的 JDBC 資料檢視。


    % dpconf create-jdbc-data-view mysql1-view mysql1-pool o=sql
  8. 為 MySQL 資料庫中的每個表格建立 JDBC 表格。


    % dpconf create-jdbc-table employee1 EMPLOYEE
    % dpconf create-jdbc-table country1 COUNTRY
    % dpconf create-jdbc-table phone1 PHONE

    SQL 資料庫中表格的名稱區分大小寫。請確保使用與 SQL 資料庫中相同的大小寫。

  9. 為各表格中的每一欄建立 JDBC 屬性。

    建立 JDBC 屬性會將 MySQL 欄對映至 LDAP 屬性。


    % dpconf add-jdbc-attr employee1 uid ID
    % dpconf add-jdbc-attr employee1 sn SURNAME
    % dpconf add-jdbc-attr employee1 userPassword PASSWORD
    % dpconf add-jdbc-attr employee1 room ROOM
    % dpconf add-jdbc-attr phone1 tel NUMBER
    % dpconf add-jdbc-attr country1 country NAME

    由於 phone1 user_idcountry1 id 欄僅在 MySQL 資料庫環境中使用,因此無須為這兩欄建立 JDBC 屬性。這兩欄不具有對應的 LDAP 屬性。

  10. 為 LDAP person 物件類別建立 JDBC 物件類別。

    在此步驟中,將 employee1 表格識別為主要表格,而將 country1phone1 表格識別為輔助表格。JDBC 物件類別的建立作業也需要 DN。在此範例中,DN 從資料檢視的 uid 屬性與基底 DN 中建構。


    % dpconf create-jdbc-object-class mysql1-view person employee1 country1 phone1 uid
  11. 定義主要表格與輔助表格之間的連結規則。

    連結規則定義於輔助表格上,並確定輔助表格的資料如何連結至主要表格的資料。


    % dpconf set-jdbc-table-prop country1 filter-join-rule:'ID=${EMPLOYEE.COUNTRY_ID}'
    % dpconf set-jdbc-table-prop phone1 filter-join-rule:'USER_ID=${EMPLOYEE.ID}'
  12. 指定 JDBC 物件類別的超級類別。

    超級類別表示 JDBC 物件類別從其繼承屬性的 LDAP 物件類別。


    % dpconf set-jdbc-object-class-prop mysql1-view person super-class:top

Procedure建立所需的 ACI

您必須透過配置 ACI 以啟用資料檢視的寫入存取,才能測試 JDBC 資料檢視。依預設拒絕對非 LDAP 資料檢視的寫入存取。就本例目的而言,增加一個允許使用者修改其密碼的全域 ACI 即已足夠。

  1. 以代理伺服器管理員的身份將 ACI 池增加至 JDBC 資料來源,並增加一個全域 ACI 以允許使用者修改其項目。


    % ldapmodify -p 1389 -D "cn=proxy manager" -w password
    dn: cn=mysql1,cn=virtual access controls
    changetype: add
    objectclass: acisource
    dpsaci: (targetattr="*") (target = "ldap:///o=sql") \
     (version 3.0; acl "enable all access for all users "; allow(all) userdn="ldap:///self";)
    cn: mysql1
  2. 建立連線處理程式處理與 o=sql 網域的連線。


    % dpconf create-connection-handler mysql1-handler
  3. 啟用連線處理程式,並將其配置為處理來自 o=sql 網域中使用者的所有連結。


    % dpconf set-connection-handler-prop mysql1-handler is-enabled:true \
     bind-dn-filters:"uid=.*,o=sql"
  4. 將連線處理程式配置為使用先前增加的 ACI 池。


    % dpconf set-connection-handler-prop mysql1-handler aci-source:mysql1

Procedure測試 JDBC 資料檢視

  1. o=sql 下使用者的身份搜尋 JDBC 資料來源,來驗證是否可以讀取資料檢視。


    % ldapsearch -p 1389 -D "uid=kvaughan,o=sql" -w mypwd -b o=sql "objectclass=*"

    備註 –

    您必須使用 o=sql 下使用者的憑證或匿名連結。


  2. o=sql 下使用者的身份修改 userPassword 屬性,來驗證是否可以寫入資料檢視。


    % ldapmodify -p 1389 -D "uid=kvaughan,o=sql" -w mypwd
    dn: uid=kvaughan,o=sql
    changetype: modify
    replace: userPassword
    userPassword: myNewpwd

建立與測試連結資料檢視

Procedure建立連結資料檢視

  1. 建立名為 myjoin1–view 的連結資料檢視。

    將 LDAP 資料檢視指定為主要資料檢視,而 JDBC 資料檢視為輔助資料檢視。


    % dpconf create-join-data-view myjoin1-view myds1-view mysql1-view o=join
  2. 在輔助資料檢視上定義連結規則。

    下列連結規則指定輔助資料檢視項目的 uid 屬性應與主要資料檢視項目的 uid 屬性相符。


    % dpconf set-jdbc-data-view-prop mysql1-view filter-join-rule:uid='${myds1-view.uid}'
  3. 定義可以透過連結資料檢視從主要資料檢視讀取及寫入主要資料檢視的一組屬性。


    % dpconf set-ldap-data-view-prop myds1-view viewable-attr:dn viewable-attr:cn \
     viewable-attr:sn viewable-attr:givenName viewable-attr:objectClass viewable-attr:ou \
     viewable-attr:l viewable-attr:uid viewable-attr:mail viewable-attr:telephoneNumber \
     viewable-attr:facsimileTelephoneNumber viewable-attr:roomNumber viewable-attr:userPassword
    % dpconf set-ldap-data-view-prop myds1-view writable-attr:dn writable-attr:cn \
     writable-attr:sn writable-attr:givenName writable-attr:objectClass writable-attr:ou \
     writable-attr:l writable-attr:uid writable-attr:mail writable-attr:telephoneNumber \
     writable-attr:facsimileTelephoneNumber writable-attr:roomNumber writable-attr:userPassword

    這些定義僅套用至連結檢視的環境中。依預設,如果直接存取 LDAP 資料檢視,則可以讀取與寫入所有屬性。

  4. 定義可以透過連結資料檢視從輔助資料檢視讀取及寫入輔助資料檢視的一組屬性。


    % dpconf set-jdbc-data-view-prop mysql1-view viewable-attr:dn viewable-attr:objectclass \
     viewable-attr:sn viewable-attr:room viewable-attr:userpassword viewable-attr:jobtitle \
     viewable-attr:country viewable-attr:tel
    % dpconf set-jdbc-data-view-prop mysql1-view writable-attr:dn writable-attr:objectclass \
     writable-attr:sn writable-attr:room writable-attr:userpassword writable-attr:jobtitle \
     writable-attr:country writable-attr:tel

    這些定義僅會套用到連結檢視的環境中。依預設,如果直接存取 JDBC 資料檢視,則可以讀取與寫入所有屬性。

Procedure建立所需的 ACI

  1. 以代理伺服器管理員的身份增加全域 ACI,來允許對連結資料檢視的匿名存取。


    % ldapmodify -p 1389 -D "cn=proxy manager" -w password
    dn: cn=myjoin1,cn=virtual access controls
    changetype: add
    objectclass: acisource
    dpsaci: (targetattr="*") (target = "ldap:///o=join") \
     (version 3.0; acl "anonymous_access"; allow(all) userdn="ldap:///anyone";)
    cn: myjoin1
  2. 建立連線處理程式處理與 o=join 網域的連線。


    % dpconf create-connection-handler myjoin1-handler
  3. 啟用連線處理程式,並將其配置為處理來自 o=join 下使用者的所有連結。


    % dpconf set-connection-handler-prop myjoin1-handler is-enabled:true \
     bind-dn-filters:"uid=.*,ou=people,o=join"
  4. 將連線處理程式配置為使用先前增加的 ACI 池。


    % dpconf set-connection-handler-prop myjoin1-handler aci-source:myjoin1

Procedure測試連結資料檢視

  1. 以匿名使用者身份搜尋連結資料檢視。

    此步驟將搜尋 Kirsten Vaughan 的項目,以查看是否同時從兩個連結檢視擷取資料。


    % ldapsearch -p 1389 -b o=join "uid=kvaughan"

    請注意,傳回的項目包含 LDAP 資料檢視與 JDBC 資料檢視的屬性。

  2. o=join 下使用者的身份修改 userPassword 屬性,來驗證是否可以寫入連結資料檢視。


    % ldapmodify -p 1389 -D "uid=kvaughan,ou=people,o=join" -w myNewPassword
    dn: uid=kvaughan,ou=people,o=join
    changetype: modify
    replace: userPassword
    userPassword: myPassword

連結多個不同的資料來源

此配置以 Example.com 機構為例,說明虛擬目錄的部分功能可以滿足其特定的目錄服務需求。

資料儲存方案

Example.com 將機構資料儲存在多個不同的資料來源中。為了支援舊版,使用者資料分佈在 LDAP 目錄、平面 LDIF 檔案與 SQL 資料庫中。人力資源部門將使用者資料儲存在基底 DN 為 o=example.com 的 LDAP 目錄中。薪資部門將資料儲存在 SQL 資料庫中。管理部門將部門與大樓編號等管理資料儲存在基底 DN 為 dc=example,dc=com 的 LDIF 檔案中。

此外,Example.com 已買入名為 Company22 的公司。Company22 也將其使用者資料儲存在基底 DN 為 dc=company22,dc=com 的 LDAP 目錄中。

下圖提供如何儲存 Example.com 使用者資料的高階檢視。

圖 24–2 不同來源中的資料儲存

該圖顯示 Example.com 的使用者資料如何儲存在不同的資料來源中

用戶端應用程式需求

Example.com 具有數個必須能夠存取儲存在不同資料來源中的資料的 LDAP 用戶端應用程式。這些用戶端應用程式的需求不盡相同。因此需要不同的資料檢視。在某些情況下,用戶端必須彙總資料。此外,某些用戶端應用程式必須能夠存取 Company22 的使用者資料,以便能夠同時管理 Example.com 的新舊員工。

下圖提供 Example.com 用戶端應用程式需求的高階檢視。

圖 24–3 用戶端應用程式需求

該圖顯示 Example.com 的 LDAP 應用程式需求

以下幾節引導您充分配置目錄代理伺服器資料檢視,以滿足本範例方案中所述之用戶端應用程式需求。如需有關資料檢視如何運作的資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的第 22 章「Directory Proxy Server LDAP Data Views」「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的第 23 章「Virtual Data Views」

範例方案的配置分為下列幾節:

彙總來自人力資源部門 LDAP 目錄與管理部門 LDIF 檔案的資料

人力資源部門儲存員工姓名、工作開始資料與工作職級等資訊。管理部門儲存其他資料,例如大樓代碼與辦公室編號。處理人力資源部門資料的用戶端應用程式必須能夠存取合併自這兩個來源的資料。這兩個資料來源具有存在於每個項目中的共用屬性 employeeNumber

下圖說明用戶端應用程式的需求。

圖 24–4 來自 LDAP 目錄與 LDIF 檔案的資料彙總

該圖顯示 LDAP 目錄與 LDIF 檔案的連結檢視

若要滿足此應用程式需求,必須為薪資部門的目錄與管理部門的 LDIF 檔案建立資料檢視。然後,連結這兩個資料檢視以提供對彙總資料的存取。此共用屬性可讓目錄代理伺服器彙總每個使用者的資料。

為簡便起見,本節中所用的指令假設下列資訊:

若要取得每個指令的完整語法,請執行不含任何選項的指令。例如:

$ dpconf create-ldap-data-view
Operands are missing
Usage: dpcfg create-ldap-data-view VIEW_NAME POOL_NAME SUFFIX_DN

Procedure建立與啟用薪資部門目錄的 LDAP 資料檢視

  1. 為薪資部門目錄建立 LDAP 資料來源。

    $ dpconf create-ldap-data-source payroll-directory payrollHost:2389
  2. 為薪資部門目錄建立 LDAP 資料來源池。

    $ dpconf create-ldap-data-source-pool payroll-pool
  3. 將薪資部門資料來源附加至資料來源池。

    $ dpconf attach-ldap-data-source payroll-pool payroll-directory
  4. 建立薪資部門目錄的 LDAP 資料檢視。

    $ dpconf create-ldap-data-view payroll-view payroll-pool o=example.com
  5. 啟用 LDAP 資料檢視以將用戶端請求路由至此資料檢視。

    $ dpconf set-ldap-data-view-prop payroll-view is-enabled:true
  6. 重新啟動目錄代理伺服器以使變更生效。

    $ dpadm restart /local/myDPS

Procedure建立與啟用管理部門資料的 LDIF 資料檢視

  1. 建立管理部門資料的 LDIF 資料檢視。

    $ dpconf create-ldif-data-view admin-view example.ldif dc=example,dc=com
  2. 啟用管理部門資料的 LDIF 資料檢視。

    $ dpconf set-ldif-data-view-prop admin-view is-enabled:true
  3. 指定管理部門檢視包含薪資部門檢視中多個項目所使用的項目。

    $ dpconf set-ldif-data-view-prop admin-view contains-shared-entries:true

    當此特性設為 TRUE 時,刪除薪資部門資料檢視中的某項目,不會導致刪除管理部門資料檢視中的共用項目。如果某項目不存在,將該項目增加至薪資部門資料檢視僅會將其增加至輔助資料檢視。

  4. 重新啟動目錄代理伺服器以使變更生效。

    $ dpadm restart /local/myDPS

Procedure連結薪資部門資料檢視與管理部門資料檢視

  1. 建立管理部門資料檢視的篩選連結規則,以指定彙總資料的方式。

    下列連結規則指定應根據使用者項目的 employeeNumber 屬性連結資料。

    $ dpconf set-ldif-data-view-prop admin-view filter-join-rule:'employeeNumber=\${payroll-view.employeeNumber}'
  2. 建立彙總這兩個資料檢視的連結資料檢視。

    對於此連結資料檢視,該機構使用尾碼 DN dc=example,dc=com

    $ dpconf create-join-data-view example-join-view payroll-view admin-view dc=example,dc=com

透過重新命名 DN 將資料從 Company22 增加至 Example.Com 的 DIT

Company22 的使用者資料儲存在 DN dc=company22,dc=com 下。雖然 Example.com 希望在大多數情況下能夠單獨儲存此使用者資料,但卻只有一個用戶端應用程式同時管理 Company 22 員工與其他 Example.com 員工。此用戶端應用程式要求 Company22 的使用者資料必須類似於 Example.com 的資料。

下圖說明用戶端應用程式的需求。

圖 24–5 DN 重新命名

該圖顯示重新命名 DN 以將資料增加至 DIT

若要滿足此應用程式需求,必須為 Company22 的目錄建立虛擬 DN 為 dc=example,dc=com 的資料檢視。

為簡便起見,本節中所用的指令假設下列資訊:

Procedure為 Company 22 的目錄建立含虛擬 DN 的資料檢視

  1. 為 Company 22 的目錄建立 LDAP 資料來源。

    $ dpconf create-ldap-data-source company22-directory company22Host:2389
  2. 為 Company 22 的目錄建立 LDAP 資料來源池。

    $ dpconf create-ldap-data-source-pool company22-pool
  3. 將 Company 22 的資料來源附加至資料來源池。

    $ dpconf attach-ldap-data-source company22-pool company22-directory
  4. 為 Company 22 的目錄建立虛擬 DN 為 dc=example,dc=com 的 LDAP 資料檢視。

    $ dpconf create-ldap-data-view company22-view company22-pool dc=example,dc=com
  5. 指示目錄代理伺服器將此虛擬 DN 對映至 Company 22 目錄中的實際 DN。

    $ dpconf set-ldap-data-view-prop company22-view dn-mapping-source-base-dn:dc=company22,dc=com
  6. 啟用 Company 22 目錄的 LDAP 資料檢視,以將用戶端請求路由至此資料檢視。

    $ dpconf set-ldap-data-view-prop company22-view is-enabled:true
  7. 重新啟動目錄代理伺服器以使變更生效。

    $ dpadm restart /local/myDPS

將 Company 22 的資料增加至人力資源部門的資料

人力資源部門需要 Example.com 與新買入的 Company 22 人力資源部門資料的彙總檢視。下圖說明人力資源部門全域應用程式的需求。

圖 24–6 來自連結資料檢視與 LDAP 資料檢視的資料彙總

該圖顯示 LDAP 目錄與其他連結檢視的複合連結檢視

Procedure連結範例連接資料檢視與 Company 22 資料檢視

  1. 建立 Company 22 資料檢視的篩選連結規則,以指定彙總資料的方式。

    下列連結規則指定應根據使用者項目的 employeeNumber 屬性連結資料。

    $ dpconf set-ldif-data-view-prop company22-view filter-join-rule:'employeeNumber=\${example-join-view.employeeNumber}'
  2. 建立彙總 Company 22 的資料檢視與 Example.com 連結資料檢視的連結資料檢視。

    $ dpconf create-join-data-view global-join-view example-join-view company22-view dc=example,dc=com

讓 LDAP 用戶端存取 SQL 資料庫中的薪資部門資料

Example.com 的薪資部門將薪水資料儲存在 SQL 資料庫中。該資料庫有兩個表格,分別為 employee 表格與 salary 表格。Example.com 具有要求能夠存取那些資料的 LDAP 用戶端應用程式。用戶端應用程式要求 SQL 資料必須類似於 LDAP 資料。

下圖說明用戶端應用程式的需求。

圖 24–7 提供 SQL 資料庫存取的 JDBC 資料檢視

該圖顯示提供 SQL 資料庫存取的 JDBC 資料檢視

若要滿足此應用程式需求,必須建立 JDBC 資料檢視將 SQL 表格中的欄對映至 LDAP 屬性。

為簡便起見,本節中所用的指令假設下列資訊:

Procedure為 Example.com 的薪資部門資料庫建立 JDBC 資料檢視

  1. 為薪資部門資料庫建立 JDBC 資料來源。

    $ dpconf create-jdbc-data-source payroll-src myPassword
  2. 以 SQL 資料庫的特性配置 JDBC 資料來源。

    $ dpconf set-jdbc-data-source-prop payroll-src db-user:proxy
      db-pwd:myPassword
      db-url:jdbc:payrollsqldb:payrollsql://localhost
      driver-url:file://payrollsqldb.jar
      driver-class:org.payrollsqldb.jdbcDriver
      
  3. 啟用 JDBC 資料來源。

    $ dpconf set-jdbc-data-source-prop payroll-src is-enabled:true
  4. 為薪資部門資料庫建立 JDBC 資料來源池。

    $ dpconf create-jdbc-data-source-pool payroll-pool
  5. 將薪資部門資料來源附加至資料來源池。

    $ dpconf attach-jdbc-data-source payroll-pool payroll-src
  6. 為薪資部門資料庫建立虛擬 DN 為 o=payroll 的 JDBC 資料檢視。

    $ dpconf create-jdbc-data-view payroll-view payroll-pool o=payroll
  7. 為 SQL 資料庫中的每個表格建立 JDBC 表格。

    $ dpconf create-jdbc-table jdbc-employee employee
    $ dpconf create-jdbc-table jdbc-salary salary
  8. 為 SQL 表格中的每一欄增加 JDBC 屬性。

    $ dpconf add-jdbc-attr jdbc-employee eid employee_id
    $ dpconf add-jdbc-attr jdbc-employee first firstname
    $ dpconf add-jdbc-attr jdbc-employee last lastname
    $ dpconf add-jdbc-attr jdbc-employee description description
    $ dpconf add-jdbc-attr jdbc-employee spouse spousename
    $ dpconf add-jdbc-attr jdbc-salary salary salary
    $ dpconf add-jdbc-attr jdbc-salary social ssn
  9. 指定可以透過 JDBC 資料檢視進行檢視與寫入的屬性。

    $ dpconf set-jdbc-data-view-prop payroll-view \
     viewable-attr:eid
     viewable-attr:first
     viewable-attr:last
     viewable-attr:desc
     viewable-attr:spouse
     viewable-attr:salary
     viewable-attr:social 
     $ dpconf set-jdbc-data-view-prop payroll-view \
     writable-attr:eid
     writable-attr:first
     writable-attr:last
     writable-attr:description
     writable-attr:spouse
     writable-attr:salary
    writable-attr:social
  10. 建立對映至 LDAP 物件類別的 JDBC 物件類別。

    下列指令建立對映至 LDAP person 物件類別的物件類別。該物件類別指定員工表格應作為主要表格使用,而薪資表格應用做輔助表格。eid 屬性應用來建構 DN。

    $ dpcfg create-jdbc-object-class payroll-view \
     person jdbc-employee jdbc-salary eid
  11. 在輔助表格上建立篩選連結規則,以指定輔助表格的資料如何連結至主要表格的資料。

    下列連結規則指定應根據 employee_id 屬性連結資料。

    $ dpconf set-jdbc-table-prop jdbc-salary filter-join-rule:'employee_id=\${employee.employee_id}'
  12. 建立 JDBC 物件類別的超級類別。

    $ set-jdbc-object-class-prop payroll-view person super-class:extensibleObject

增加虛擬存取控制

透過在 LDAP 目錄中定義 ACI 可處理該目錄的存取控制。透過虛擬資料檢視存取資料來源時,必須定義 ACI 僅會套用至透過這些資料檢視進行檢視的資料。

連線處理程式控制透過目錄代理伺服器的所有存取。如需有關連線處理程式的資訊,請參閱第 25 章, 目錄代理伺服器連線處理程式

Procedure增加允許匿名存取的 ACI

  1. 增加 ACI。

    $ ldapadd -v -D "cn=proxy manager" -w password -p 389
    dn: cn=ldifonly-acis,cn=virtual access controls
    objectclass: top
    objectclass: aciSource
    cn: ldifonly-acis
    dpsaci: (targetattr="*")(version 3.0; acl "anonymous_access"; allow(all) (userdn="ldap:///anyone");)
  2. 將連線處理程式指向虛擬 ACI。

    $ dpconf set-connection-handler-prop anonymous aci-source:ldifonly-acis
  3. 啟用連線處理程式。

    $ dpconf set-connection-handler-prop anonymous is-enabled:true