以下部分提供两个样例配置。这些配置说明虚拟目录的主要功能,并指出这些功能的配置方式。
本部分中的过程介绍将 LDAP 目录和 MySQL 数据库联接在一起的样例虚拟配置。LDAP 目录是主数据源,其中包含大多数用户信息。MySQL 数据库包含有关用户的其他信息。下图说明了最终的配置。
可以使用 install-path/ds6/ldif/Example.ldif 中提供的样例数据复制此示例,也可以使用您自己的数据替换样例数据。
此配置可以分为三个部分:
配置和测试 LDAP 数据视图
配置和测试 JDBC 数据视图
配置和测试联接数据视图
为了简单起见,本部分中的所有命令都假定目录代理服务器在 /local/dps 中的本地主机上运行。这些命令还假定设置了以下环境变量:
1389
pwd.txt,包含管理员密码的文件。
4389
cn=Directory Manager
本部分中的任务假定运行环境如下:
目录服务器实例通过端口 4389 在 host1上运行。
目录服务器中的数据存储在后缀 dc=example,dc=com 下。要复制此示例,请创建一个目录服务器实例,并创建后缀 dc=example,dc=com,然后将样例数据导入 install-path/ds6/ldif/Example.ldif 中。
为目录服务器实例创建名为 myds1 的 LDAP 数据源。
% dpconf create-ldap-data-source myds1 host1:4389 |
启用该数据源,并允许对其执行写入操作。
% dpconf set-ldap-data-source-prop myds1 is-enabled:true is-read-only:false |
创建名为 myds1-pool 的 LDAP 数据源池。
% dpconf create-ldap-data-source-pool myds1-pool |
将 LDAP 数据源连接到此 LDAP 数据源池。
% dpconf attach-ldap-data-source myds1-pool myds1 |
指定数据源应接收来自该数据源池的所有绑定、添加、搜索和修改操作。
% dpconf set-attached-ldap-data-source-prop myds1-pool myds1 add-weight:100 \ bind-weight:100 modify-weight:100 search-weight:100 |
为数据源池创建名为 myds1–view 且基 DN 为 dc=example,dc=com 的 LDAP 数据视图。
% dpconf create-ldap-data-view myds1-view myds1-pool dc=example,dc=com |
以 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 的数据视图。
以 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 允许用户修改自己的密码。
以下任务假定已安装了 MySQL 数据库,该数据库正在运行并且填充了数据,同时该数据库还具有以下特性:
数据库名称:sample_sql
数据库 URL:host2.example.com:3306/
JDBC 驱动程序 URL:file:/net/host2.example/local/mysql/lib/jdbc.jar
驱动程序类:com.mysql.jdbc.Driver
数据库用户:root
数据库密码文件:mysqlpwd.txt
下表介绍数据库中的表及其复合字段。您需要使用此信息来设置 JDBC 数据视图。
MySQL 表 |
字段 |
---|---|
EMPLOYEE |
ID、SURNAME、PASSWORD、ROOM、COUNTRY_ID |
COUNTRY |
ID、NAME |
PHONE |
USER_ID、NUMBER |
为 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 |
指定该 SQL 数据库的用户名和密码文件。
% dpconf set-jdbc-data-source-prop mysql1 db-pwd-file:sqlpwd.txt db-user:root |
重新启动代理服务器。
% dpadm restart /local/dps |
启用该数据源,并允许对其执行写入操作。
% dpconf set-jdbc-data-source-prop mysql1 is-enabled:true is-read-only:false |
创建名为 mysql1–pool 的 JDBC 数据源池。
% dpconf create-jdbc-data-source-pool mysql1-pool |
将 JDBC 数据源连接到此数据源池。
% dpconf attach-jdbc-data-source mysql1-pool mysql1 |
为数据源池创建名为 myjdbc1–view 且基 DN 为 o=sql 的 JDBC 数据视图。
% dpconf create-jdbc-data-view mysql1-view mysql1-pool o=sql |
为 MySQL 数据库中的每个表创建 JDBC 表。
% dpconf create-jdbc-table employee1 EMPLOYEE % dpconf create-jdbc-table country1 COUNTRY % dpconf create-jdbc-table phone1 PHONE |
SQL 数据库中的表名区分大小写。请确保您使用的大小写与 SQL 数据库中使用的相同。
为每个表中的每一列创建 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_id 和 country1 id 列创建 JDBC 属性,因为这些列仅包含用于 EMPLOYEE.ID(已为其创建 LDAP 属性 uid)中的值。
为 LDAP person 对象类创建 JDBC 对象类。
在此步骤中,employee1 表被标识为主表,而 country1 和 phone1 表被标识为从表。创建 JDBC 对象类时也需要 DN。在此示例中,DN 是通过数据视图的 uid 属性和基 DN 构建的。
% dpconf create-jdbc-object-class mysql1-view person employee1 country1 phone1 uid |
定义主表和从表之间的联接规则。
联接规则在从表上进行定义,用于确定该表中的数据如何链接到主表数据。
% 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} |
指定 JDBC 对象类的超类。
超类表示 JDBC 对象类从中继承属性的 LDAP 对象类。
% dpconf set-jdbc-object-class-prop mysql1-view person super-class:top |
测试 JDBC 数据视图之前,必须先通过配置 ACI 启用对数据视图的写入访问权限。默认情况下将拒绝对非 LDAP 数据视图的写入访问。在此示例中,只需添加一个允许用户修改其密码的全局 ACI。
以代理管理员身份向 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 |
创建一个连接处理程序,以处理到 o=sql 域的连接。
% dpconf create-connection-handler mysql1-handler |
启用该连接处理程序,并将其配置为处理来自 o=sql 域用户的所有绑定。
% dpconf set-connection-handler-prop mysql1-handler is-enabled:true \ bind-dn-filters:"uid=.*,o=sql" |
将连接处理程序配置为使用之前添加的 ACI 池。
% dpconf set-connection-handler-prop mysql1-handler aci-source:mysql1 |
以 o=sql 下的用户身份搜索 JDBC 数据源,以验证您是否可以读取数据视图中的内容。
% ldapsearch -p 1389 -D "uid=kvaughan,o=sql" -w mypwd -b o=sql "objectclass=*" |
您必须使用 o=sql 下的用户的凭证。
以 o=sql 下的用户身份修改 userPassword 属性,以验证您是否可以向数据视图中写入内容。
% ldapmodify -p 1389 -D "uid=kvaughan,o=sql" -w mypwd dn: uid=kvaughan,o=sql changetype: modify replace: userPassword userPassword: myNewpwd |
将 LDAP 数据视图指定为主数据视图,将 JDBC 数据视图指定为从数据视图。
% dpconf create-join-data-view myjoin1-view myds1-view mysql1-view o=join |
在从数据视图上定义联接规则。
以下联接规则指定从数据视图中条目的 uid 属性应该与主数据视图中条目的 uid 属性相匹配。
% dpconf set-jdbc-data-view-prop mysql1-view filter-join-rule:uid=\${myds1-view.uid} |
如果在联接数据视图上设置了过滤器联接规则,则需要在从数据视图上设置虚拟转换规则,以便能够在联接数据视图上添加条目。
dpconf add-virtual-transformation secondary-view-name \ write add-attr-value dn uid=\${uid} |
如果未设置此规则,则无法在联接数据视图上添加条目。
定义可以通过联接数据视图从主数据视图读取以及向主数据视图写入的属性集。
% 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 数据视图,则可以读取和写入所有属性。
定义可以通过联接数据视图在从数据视图中读取以及向从数据视图写入的属性集。
% 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 数据视图,则可以读取和写入所有属性。
以代理管理员身份添加一个允许匿名访问联接数据视图的全局 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 |
将连接处理程序配置为使用之前添加的 ACI 池。
% dpconf set-connection-handler-prop default-connection-handler aci-source:myjoin1 |
在此步骤中,我们将搜索 Kirsten Vaughan 的条目,以查看是否会检索来自两个联接视图的数据。
% ldapsearch -p 1389 -b o=join "uid=kvaughan" |
请注意,返回的条目包括来自 LDAP 数据视图和 JDBC 数据视图的属性。
以 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 用户数据存储方式的高级视图。
Example.com 有几个 LDAP 客户端应用程序需要访问存储在不同数据源中的数据。这些客户端应用程序的要求不尽相同。因此需要不同的数据视图。在某些情况下,客户端需要聚合数据。另外,某些客户端应用程序还需要访问 Company22 的用户数据,以便能够同时管理 Example.com 的新老员工。
下图提供了 Example.com 客户端应用程序要求的高级视图。
以下部分提供了充分的目录代理服务器数据视图的配置示例,以满足此样例方案中所述的客户端应用程序要求。有关数据视图的工作方式的信息,请参见《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”。
样例方案的配置可分为以下几部分:
人力资源部门存储员工姓名、入职数据和职务级别等信息。管理部门存储大楼代码和办公室编号等其他信息。处理人力资源数据的客户端应用程序需要访问来自这两个数据源的组合数据。这两个数据源有一个公用属性 employeeNumber,即每个条目中都具有该属性 。
下图说明了此客户端应用程序的要求。
要满足此应用程序要求,需要为薪酬目录和管理 LDIF 文件各创建一个数据视图。然后将这两个数据视图联接在一起,以提供对聚合数据的访问。目录代理服务器可以使用此公用属性聚合每个用户的数据。
为了简单起见,本部分中使用的命令假定运行环境如下:
目录代理服务器实例通过默认 LDAP 端口 (389) 在本地主机上运行。
目录代理服务器实例位于 /local/myDPS 中。
包含代理管理员密码的文件所在的路径已被设置为变量 LDAP_ADMIN_PWF。有关设置目录代理服务器环境变量的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Installation Guide》中的“Environment Variables”。
薪酬部门的 LDAP 目录通过端口 2389 在名为 payrollHost 的主机上运行。
用于存储管理数据的 LDIF 文件名为 example.ldif。
要获取每个命令的完整语法,请运行不含任何选项的命令。例如:
$ dpconf create-ldap-data-view Operands are missing Usage: dpconf create-ldap-data-view VIEW_NAME POOL_NAME SUFFIX_DN
为薪酬目录创建 LDAP 数据源。
$ dpconf create-ldap-data-source payroll-directory payrollHost:2389
为薪酬目录创建 LDAP 数据源池。
$ dpconf create-ldap-data-source-pool payroll-pool
将薪酬数据源连接到此数据源池。
$ dpconf attach-ldap-data-source payroll-pool payroll-directory
配置连接数据源的权重。
$ 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
为薪酬目录创建 LDAP 数据视图。
$ dpconf create-ldap-data-view payroll-view payroll-pool o=example.com
启用 LDAP 数据视图,以便客户端请求可以路由到此数据视图。
$ dpconf set-ldap-data-view-prop payroll-view is-enabled:true
重新启动目录代理服务器以使更改生效。
$ dpadm restart /local/myDPS
为管理数据创建 LDIF 数据视图。
$ dpconf create-ldif-data-view admin-view example.ldif dc=example,dc=com
启用管理数据的 LDIF 数据视图。
$ dpconf set-ldif-data-view-prop admin-view is-enabled:true
指定管理视图包含可由薪酬视图中的多个条目使用的条目。
$ dpconf set-ldif-data-view-prop admin-view contains-shared-entries:true
此属性设置为 TRUE 时,删除薪酬数据视图中的条目不会导致管理数据视图中的共享条目被删除。向薪酬数据视图添加条目只会将该条目添加到从数据视图(如果该条目尚不存在)。
重新启动目录代理服务器以使更改生效。
$ dpadm restart /local/myDPS
在管理数据视图上创建过滤器联接规则,该规则指定数据的聚合方式。
以下联接规则指定应该根据用户条目的 employeeNumber 属性联接数据。
$ dpconf set-ldif-data-view-prop admin-view \ filter-join-rule:employeeNumber=\${payroll-view.employeeNumber}
创建聚合这两个数据视图的联接数据视图。
对于该联接数据视图,组织将使用后缀 DN dc=example,dc=com。
$ dpconf create-join-data-view example-join-view payroll-view admin-view \ dc=example,dc=com
Company 22 的用户数据存储在 DN dc=company22,dc=com 下。虽然在大多数情况下 Example.com 希望单独保留此用户数据,但一个客户端应用程序需要同时管理 Company 22 员工和其他 Example.com 员工。此客户端应用程序要求 Company 22 的用户数据类似于 Example.com 数据。
下图说明了此客户端应用程序的要求。
要满足此应用程序要求,需要为 Company 22 的目录创建一个虚拟 DN 为 dc=example,dc=com 的数据视图。
为了简单起见,本部分中使用的命令假定运行环境如下:
目录代理服务器实例通过默认 LDAP 端口 (389) 在本地主机上运行。
目录代理服务器实例位于 /local/myDPS 中。
包含代理管理员密码的文件所在的路径已被设置为变量 LDAP_ADMIN_PWF。有关设置目录代理服务器环境变量的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Installation Guide》中的“Environment Variables”。
Company 22 LDAP 目录通过端口 2389 在名为 company22Host 的主机上运行。
为 Company 22 的目录创建 LDAP 数据源。
$ dpconf create-ldap-data-source company22-directory company22Host:2389
为 Company 22 的目录创建 LDAP 数据源池。
$ dpconf create-ldap-data-source-pool company22-pool
将 Company 22 的数据源连接到此数据源池。
$ dpconf attach-ldap-data-source company22-pool company22-directory
配置连接数据源的权重。
$ 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
使用虚拟 DN dc=example,dc=com 为 Company 22 的目录创建 LDAP 数据视图。
$ dpconf create-ldap-data-view company22-view company22-pool dc=example,dc=com
指示目录代理服务器将此虚拟 DN 映射到 Company 22 目录中的实际 DN。
$ dpconf set-ldap-data-view-prop company22-view \ dn-mapping-source-base-dn:dc=company22,dc=com
启用 Company 22 目录的 LDAP 数据视图,以便客户端请求可以路由到此数据视图。
$ dpconf set-ldap-data-view-prop company22-view is-enabled:true
重新启动目录代理服务器以使更改生效。
$ dpadm restart /local/myDPS
人力资源部门需要人力资源数据(来自 Example.com 和最近收购的 Company 22)的聚合视图。下图说明了人力资源部门全局应用程序的要求。
在 Company 22 数据视图上创建过滤器联接规则,该规则指定数据的聚合方式。
以下联接规则指定应该根据用户条目的 employeeNumber 属性联接数据。
$ dpconf set-ldif-data-view-prop company22-view \ filter-join-rule:employeeNumber=\${example-join-view.employeeNumber}
创建联接数据视图,该视图将 Company 22 的数据视图和 Example.com 的联接数据视图聚合在一起。
$ dpconf create-join-data-view global-join-view example-join-view \ company22-view dc=example,dc=com
Example.com 的薪酬部门将薪水数据存储在 SQL 数据库中。该数据库有两个表,即 employee 表和 salary 表。Example.com 具有需要访问这些数据的 LDAP 客户端应用程序。该客户端应用程序要求 SQL 数据类似于 LDAP 数据。
下图说明了此客户端应用程序的要求。
要满足此应用程序要求,需要创建一个将 SQL 表中的列映射到 LDAP 属性的 JDBC 数据视图。
为了简单起见,本部分中使用的命令假定运行环境如下:
目录代理服务器实例通过默认 LDAP 端口 (389) 在本地主机上运行。
目录代理服务器实例位于 /local/myDPS 中。
包含代理管理员密码的文件所在的路径已被设置为变量 LDAP_ADMIN_PWF。有关设置目录代理服务器环境变量的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Installation Guide》中的“Environment Variables”。
SQL 数据库已打开并正在运行。
JAVA_HOME 变量已设置为正确的 Java 路径。
SQL 数据库密码是存储在 myPasswordFile 文件中的 myPassword。
为薪酬数据库创建 JDBC 数据源。
$ dpconf create-jdbc-data-source -b payrollsqldb \ -B jdbc:payrollsqldb:payrollsql://localhost/ \ -J file://payrollsqldb.jar \ -S org.payrollsqldb.jdbcDriver payroll-src
使用 SQL 数据库的属性配置 JDBC 数据源。
$ dpconf set-jdbc-data-source-prop payroll-src \ db-user:proxy db-pwd-file:password-file-location/myPasswordFile
启用 JDBC 数据源。
$ dpconf set-jdbc-data-source-prop payroll-src is-enabled:true
为薪酬数据库创建 JDBC 数据源池。
$ dpconf create-jdbc-data-source-pool payroll-pool
将薪酬数据源连接到此数据源池。
$ dpconf attach-jdbc-data-source payroll-pool payroll-src
使用虚拟 DN o=payroll 为薪酬数据库创建 JDBC 数据视图。
$ dpconf create-jdbc-data-view payroll-view payroll-pool o=payroll
为 SQL 数据库中的每个表创建 JDBC 表。
$ dpconf create-jdbc-table jdbc-employee employee $ dpconf create-jdbc-table jdbc-salary salary
为 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
指定可以通过 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
创建一个映射到 LDAP 对象类的 JDBC 对象类。
以下命令将创建一个映射到 LDAP person 对象类的对象类。该对象类指定应该将员工表用作主表,而将薪水表用作从表。eid 属性应用于构建 DN。
$ dpconf create-jdbc-object-class payroll-view \ person jdbc-employee jdbc-salary eid
在从表上创建过滤器联接规则,该规则指定从表中的数据应如何链接到主表数据。
以下联接规则指定应根据 employee_id 属性联接数据。
$ dpconf set-jdbc-table-prop jdbc-salary \ filter-join-rule:employee_id=\${employee.employee_id}
在 JDBC 对象类上创建超类。
$ dpconf set-jdbc-object-class-prop payroll-view person super-class:extensibleObject
LDAP 目录上的访问控制是通过定义这些目录中的 ACI 来处理的。通过虚拟数据视图访问数据源时必须定义 ACI,这些 ACI 只适用于通过这些数据视图查看的数据。
所有通过目录代理服务器的访问都由连接处理程序进行控制。有关连接处理程序的信息,请参见第 26 章,客户端和目录代理服务器之间的连接 。
添加 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");)
将连接处理程序指向虚拟 ACI。
$ dpconf set-connection-handler-prop anonymous aci-source:ldifonly-acis
启用连接处理程序。
$ dpconf set-connection-handler-prop anonymous is-enabled:true