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

样例虚拟配置

以下部分提供两个样例配置。这些配置说明虚拟目录的主要功能,并指出这些功能的配置方式。

联接 LDAP 目录和 MySQL 数据库

本部分中的过程介绍将 LDAP 目录和 MySQL 数据库联接在一起的样例虚拟配置。LDAP 目录是主数据源,其中包含大多数用户信息。MySQL 数据库包含有关用户的其他信息。下图说明了最终的配置。

图 23–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. 指定数据源应接收来自该数据源池的所有绑定、添加、搜索和修改操作。


    % 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 数据库,该数据库正在运行并且填充了数据,同时该数据库还具有以下特性:

下表介绍数据库中的表及其复合字段。您需要使用此信息来设置 JDBC 数据视图。

MySQL 表 

字段 

EMPLOYEE

IDSURNAMEPASSWORDROOMCOUNTRY_ID

COUNTRY

IDNAME

PHONE

USER_IDNUMBER

Procedure配置 JDBC 数据视图

  1. 为 SQL 数据库创建名为 mysql1 的 JDBC 数据源。


    % dpconf create-jdbc-data-source -b sample_sql \
     -B jdbc:mysql://host2.example.com: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 roomNumber ROOM
    % dpconf add-jdbc-attr phone1 telephoneNumber NUMBER
    % dpconf add-jdbc-attr country1 countryName NAME

    无需为 phone1 user_idcountry1 id 列创建 JDBC 属性,因为这些列仅包含用于 EMPLOYEE.ID(已为其创建 LDAP 属性 uid)中的值。

  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

测试 JDBC 数据视图之前,必须先通过配置 ACI 启用对数据视图的写入访问权限。默认情况下将拒绝对非 LDAP 数据视图的写入访问。在此示例中,只需添加一个允许用户修改其密码的全局 ACI。

  1. 以代理管理员身份向 JDBC 数据源中添加一个 ACI 池,并添加一个允许用户修改其条目的全局 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:///uid=kvaughan,o=sql";)
    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 add-virtual-transformation secondary-view-name \
    write add-attr-value dn uid=\${uid}

    注 –

    如果未设置此规则,则无法在联接数据视图上添加条目。


  4. 定义可以通过联接数据视图从主数据视图读取以及向主数据视图写入的属性集。


    % 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 数据视图,则可以读取和写入所有属性。

  5. 定义可以通过联接数据视图在从数据视图中读取以及向从数据视图写入的属性集。


    % dpconf set-jdbc-data-view-prop mysql1-view viewable-attr:dn \
     viewable-attr:objectclass viewable-attr:sn viewable-attr:roomNumber \
     viewable-attr:userpassword viewable-attr:jobtitle viewable-attr:countryName \
     viewable-attr:telephoneNumber
    % dpconf set-jdbc-data-view-prop mysql1-view writable-attr:dn \
    writable-attr:objectclass writable-attr:sn writable-attr:roomNumber \
    writable-attr:userpassword writable-attr:jobtitle \
    writable-attr:countryName writable-attr:telephoneNumber

    这些定义仅适用于联接视图环境。默认情况下,如果直接访问 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. 将连接处理程序配置为使用之前添加的 ACI 池。


    % dpconf set-connection-handler-prop default-connection-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
    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 的公司。Company 22 也将其用户数据存储在基 DN 为 dc=company22,dc=com 的 LDAP 目录中。

下图提供了说明 Example.com 用户数据存储方式的高级视图。

图 23–2 不同源中的数据存储

图中显示了 Example.com 用户数据在不同数据源中的存储方式

客户端应用程序要求

Example.com 有几个 LDAP 客户端应用程序需要访问存储在不同数据源中的数据。这些客户端应用程序的要求不尽相同。因此需要不同的数据视图。在某些情况下,客户端需要聚合数据。另外,某些客户端应用程序还需要访问 Company22 的用户数据,以便能够同时管理 Example.com 的新老员工。

下图提供了 Example.com 客户端应用程序要求的高级视图。

图 23–3 客户端应用程序要求

图中显示了 Example.com 的 LDAP 应用程序要求

以下部分提供了充分的目录代理服务器数据视图的配置示例,以满足此样例方案中所述的客户端应用程序要求。有关数据视图的工作方式的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 17  章 “Directory Proxy Server Distribution”《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 18  章 “Directory Proxy Server Virtualization”

样例方案的配置可分为以下几部分:

聚合人力资源部门 LDAP 目录和管理部门 LDIF 文件中的数据

人力资源部门存储员工姓名、入职数据和职务级别等信息。管理部门存储大楼代码和办公室编号等其他信息。处理人力资源数据的客户端应用程序需要访问来自这两个数据源的组合数据。这两个数据源有一个公用属性 employeeNumber,即每个条目中都具有该属性 。

下图说明了此客户端应用程序的要求。

图 23–4 来自 LDAP 目录和 LDIF文件的数据聚合

图中显示了 LDAP 目录和 LDIF 文件的联接视图

要满足此应用程序要求,需要为薪酬目录和管理 LDIF 文件各创建一个数据视图。然后将这两个数据视图联接在一起,以提供对聚合数据的访问。目录代理服务器可以使用此公用属性聚合每个用户的数据。

为了简单起见,本部分中使用的命令假定运行环境如下:

要获取每个命令的完整语法,请运行不含任何选项的命令。例如:

$ dpconf create-ldap-data-view
Operands are missing
Usage: dpconf 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. 配置连接数据源的权重。

    $ dpconf set-attached-ldap-data-source-prop -h payrollHost -p 2389 \
    payroll-pool payroll-directory add-weight:2 \
    bind-weight:2 compare-weight:2 delete-weight:2 \
    modify-dn-weight:2 modify-weight:2 search-weight:2
  5. 为薪酬目录创建 LDAP 数据视图。

    $ dpconf create-ldap-data-view payroll-view payroll-pool o=example.com
  6. 启用 LDAP 数据视图,以便客户端请求可以路由到此数据视图。

    $ dpconf set-ldap-data-view-prop payroll-view is-enabled:true
  7. 重新启动目录代理服务器以使更改生效。

    $ 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 将 Company 22 的数据添加到 Example.Com 的 DIT 中

Company 22 的用户数据存储在 DN dc=company22,dc=com 下。虽然在大多数情况下 Example.com 希望单独保留此用户数据,但一个客户端应用程序需要同时管理 Company 22 员工和其他 Example.com 员工。此客户端应用程序要求 Company 22 的用户数据类似于 Example.com 数据。

下图说明了此客户端应用程序的要求。

图 23–5 DN 重命名

图中显示了通过重命名 DN 将数据添加到 DIT

要满足此应用程序要求,需要为 Company 22 的目录创建一个虚拟 DN 为 dc=example,dc=com 的数据视图。

为了简单起见,本部分中使用的命令假定运行环境如下:

Procedure使用虚拟 DN 为 Company 22 的目录创建数据视图

  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. 配置连接数据源的权重。

    $ dpconf set-attached-ldap-data-source-prop -h company22Host -p 2389 \
    company22-pool company22-directory add-weight:2 \
    bind-weight:2 compare-weight:2 delete-weight:2 \
    modify-dn-weight:2 modify-weight:2 search-weight:2
  5. 使用虚拟 DN dc=example,dc=com 为 Company 22 的目录创建 LDAP 数据视图。

    $ dpconf create-ldap-data-view company22-view company22-pool dc=example,dc=com
  6. 指示目录代理服务器将此虚拟 DN 映射到 Company 22 目录中的实际 DN。

    $ dpconf set-ldap-data-view-prop company22-view \
    dn-mapping-source-base-dn:dc=company22,dc=com
  7. 启用 Company 22 目录的 LDAP 数据视图,以便客户端请求可以路由到此数据视图。

    $ dpconf set-ldap-data-view-prop company22-view is-enabled:true
  8. 重新启动目录代理服务器以使更改生效。

    $ dpadm restart /local/myDPS

将 Company 22 数据添加到人力资源数据

人力资源部门需要人力资源数据(来自 Example.com 和最近收购的 Company 22)的聚合视图。下图说明了人力资源部门全局应用程序的要求。

图 23–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 数据。

下图说明了此客户端应用程序的要求。

图 23–7 提供 SQL 数据库访问的 JDBC 数据视图

图中显示了提供 SQL 数据库访问的 JDBC 数据视图

要满足此应用程序要求,需要创建一个将 SQL 表中的列映射到 LDAP 属性的 JDBC 数据视图。

为了简单起见,本部分中使用的命令假定运行环境如下:

Procedure为 Example.com 的薪酬数据库创建 JDBC 数据视图

  1. 为薪酬数据库创建 JDBC 数据源。

    $ dpconf create-jdbc-data-source -b payrollsqldb \
      -B jdbc:payrollsqldb:payrollsql://localhost/ \
      -J file://payrollsqldb.jar \
      -S org.payrollsqldb.jdbcDriver payroll-src 
  2. 使用 SQL 数据库的属性配置 JDBC 数据源。

    $ dpconf set-jdbc-data-source-prop payroll-src \
      db-user:proxy db-pwd-file:password-file-location/myPasswordFile
  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。

    $ dpconf 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 对象类上创建超类。

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

添加虚拟访问控制

LDAP 目录上的访问控制是通过定义这些目录中的 ACI 来处理的。通过虚拟数据视图访问数据源时必须定义 ACI,这些 ACI 只适用于通过这些数据视图查看的数据。

所有通过目录代理服务器的访问都由连接处理程序进行控制。有关连接处理程序的信息,请参见第 26 章,客户端和目录代理服务器之间的连接

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