다음 절에서는 두 개의 구성 예에 대해 설명합니다. 이러한 구성은 가상 디렉토리의 기본 기능과 이러한 기능을 구성하는 방법을 보여줍니다.
이 절의 절차에서는 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 |
데이터 소스가 해당 데이터 소스 풀에서 바인드, 추가, 검색 및 수정 작업을 100% 받아야 함을 지정합니다.
% dpconf set-attached-ldap-data-source-prop myds1-pool myds1 add-weight:100 \ bind-weight:100 modify-weight:100 search-weight:100 |
dc=example,dc=com의 기본 DN을 사용하여 myds1–view라는 데이터 소스 풀에 대한 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, TITLE, COUNTRY_ID |
COUNTRY |
ID, NAME |
PHONE |
USER_ID, NUMBER |
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 |
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 |
o=sql의 기본 DN을 사용하여 myjdbc1–view라는 데이터 소스 풀에 대한 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 room ROOM % dpconf add-jdbc-attr phone1 tel NUMBER % dpconf add-jdbc-attr country1 country NAME |
phone1 user_id 및 country1 id 열은 MySQL 데이터베이스의 컨텍스트에서만 사용되므로 이러한 열에 대한 JDBC 속성을 만들 필요가 없습니다. 이러한 열에는 해당 LDAP 속성이 없습니다.
LDAP person 객체 클래스에 대한 JDBC 객체 클래스를 만듭니다.
이 단계에서 employee1 테이블은 기본 테이블로 식별되고 country1 및 phone1 테이블은 보조 테이블로 식별됩니다. 또한 JDBC 객체 클래스를 만들려면 DN이 필요합니다. 이 예에서 DN은 데이터 보기의 기본 DN 및 uid 속성에서 구성됩니다.
% 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만 추가하면 사용자가 자신의 비밀번호를 수정할 수 있습니다.
프록시 관리자로 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 |
연결 처리기를 만들어 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 |
myjoin1–view라는 결합 데이터 보기를 만듭니다.
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 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: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 데이터 보기에 직접 액세스할 경우 모든 속성을 읽고 쓸 수 있습니다.
프록시 관리자로 결합 데이터 보기에 대한 익명 액세스를 허용하는 전역 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 |
연결 처리기를 만들어 o=join 도메인에 대한 연결을 처리합니다.
% dpconf create-connection-handler myjoin1-handler |
연결 처리기를 활성화하고 o=join에 있는 사용자의 모든 바인드를 처리하도록 구성합니다.
% dpconf set-connection-handler-prop myjoin1-handler is-enabled:true \ bind-dn-filters:"uid=.*,ou=people,o=join" |
이전에 추가한 ACI 풀을 사용하도록 연결 처리기를 구성합니다.
% dpconf set-connection-handler-prop myjoin1-handler aci-source:myjoin1 |
익명 사용자로 결합 데이터 보기를 검색합니다.
이 단계에서는 Kirsten Vaughan의 항목을 검색하여 두 결합 보기의 데이터가 검색되는지 여부를 확인합니다.
% ldapsearch -p 1389 -b o=join "uid=kvaughan" |
반환된 항목에 LDAP 데이터 보기 및 JDBC 데이터 보기 속성이 모두 포함되어 있는지 확인합니다.
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 데이터베이스에 분산됩니다. HR 부서는 o=example.com의 기본 DN을 사용하여 LDAP 디렉토리에 사용자 데이터를 저장합니다. 급여 부서는 데이터를 SQL 데이터베이스에 저장합니다. 관리 부서는 dc=example,dc=com의 기본 DN을 사용하여 부서 및 건물 번호와 같은 관리 데이터를 LDIF 파일에 저장합니다.
또한 Example.com은 Company22라는 회사를 인수했습니다. Company 22 역시 dc=company22,dc=com의 기본 DN을 사용하여 사용자 데이터를 LDAP 디렉토리에 저장합니다.
다음 다이어그램은 Example.com의 사용자 데이터가 저장되는 방법에 대한 상위 수준 보기를 제공합니다.
Example.com에는 별도의 데이터 소스에 저장된 데이터에 대한 액세스 권한을 필요로 하는 여러 LDAP 클라이언트 응용 프로그램이 있습니다. 클라이언트 응용 프로그램의 요구 사항은 각각 다릅니다. 다른 데이터 보기가 필요합니다. 클라이언트가 데이터를 집계하도록 요구하는 경우도 있습니다. 또한 일부 클라이언트 응용 프로그램에는 Example.com의 새 직원을 이전 직원과 함께 관리할 수 있도록 Company22의 사용자 데이터에 대한 액세스 권한이 필요합니다.
다음 다이어그램은 Example.com의 클라이언트 응용 프로그램 요구 사항에 대한 상위 수준 보기를 제공합니다.
다음 절에서는 이 샘플 시나리오에 설명된 클라이언트 응용 프로그램의 요구 사항을 충족할 수 있는 충분한 구성 디렉토리 프록시 서버 데이터 보기를 안내합니다. 데이터 보기가 작동하는 방법에 대한 자세한 내용은 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를 참조하십시오.
샘플 시나리오의 구성은 다음 절로 구분됩니다.
HR 부서는 직원 이름, 작업 시작 데이터 및 작업 수준과 같은 정보를 저장합니다. 관리 부서는 건물 코드 및 사무실 번호와 같은 추가 데이터를 저장합니다. HR 데이터를 처리하는 클라이언트 응용 프로그램에는 두 소스의 결합된 데이터에 대한 액세스 권한이 필요합니다. 두 데이터 소스에는 각 항목에 존재하는 공통 속성인 employeeNumber가 있습니다.
다음 다이어그램은 클라이언트 응용 프로그램의 요구 사항을 보여줍니다.
이 응용 프로그램의 요구 사항을 충족하기 위해 급여 디렉토리 및 관리 LDIF 파일에 대한 데이터 보기가 만들어집니다. 그런 다음 이러한 두 데이터 보기가 결합되어 집계된 데이터에 대한 액세스를 제공합니다. 이 공통 속성을 사용하여 디렉토리 프록시 서버는 각 사용자에 대한 데이터를 집계할 수 있습니다.
단순하게 만들기 위해 이 절에 사용된 명령은 다음 정보를 가정합니다.
디렉토리 프록시 서버 인스턴스는 기본 LDAP 포트(389)를 사용하여 로컬 호스트에서 실행됩니다.
디렉토리 프록시 서버 인스턴스는 /local/myDPS에 있습니다.
프록시 관리자 비밀번호를 포함하는 파일에 대한 경로가 LDAP_ADMIN_PWF 변수로 설정되었습니다. 디렉토리 프록시 서버 환경 변수를 설정하는 방법에 대한 자세한 내용은 Sun Java System Directory Server Enterprise Edition 6.0 Installation Guide의 Environment Variables를 참조하십시오.
급여 LDAP 디렉토리는 포트 2389의 payrollHost라는 호스트에서 실행됩니다.
관리 데이터를 저장하는 데 사용되는 LDIF 파일의 이름이 example.ldif로 지정됩니다.
각 명령의 완전한 구문을 얻으려면 명령을 옵션 없이 실행합니다. 예를 들면 다음과 같습니다.
$ dpconf create-ldap-data-view Operands are missing Usage: dpcfg 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
급여 디렉토리에 대한 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에서는 대부분 이 사용자 데이터를 별도로 유지하려고 하지만 한 클라이언트 응용 프로그램은 나머지 Example.com 직원과 함께 Company 22 직원을 관리해야 합니다. 이 클라이언트 응용 프로그램의 경우 Company 22 사용자 데이터의 모양은 Example.com 데이터와 같아야 합니다.
다음 다이어그램은 클라이언트 응용 프로그램의 요구 사항을 보여줍니다.
이 응용 프로그램의 요구 사항을 충족하기 위해 dc=example,dc=com의 가상 DN을 사용하여 데이터 보기가 Company 22의 디렉토리에 대해 만들어집니다.
단순하게 만들기 위해 이 절에 사용된 명령은 다음 정보를 가정합니다.
디렉토리 프록시 서버 인스턴스는 기본 LDAP 포트(389)를 사용하여 로컬 호스트에서 실행됩니다.
디렉토리 프록시 서버 인스턴스는 /local/myDPS에 있습니다.
프록시 관리자 비밀번호를 포함하는 파일에 대한 경로가 LDAP_ADMIN_PWF 변수로 설정되었습니다. 디렉토리 프록시 서버 환경 변수를 설정하는 방법에 대한 자세한 내용은 Sun Java System Directory Server Enterprise Edition 6.0 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
dc=example,dc=com의 가상 DN을 사용하여 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
HR 부서에서는 Example.com과 새로 인수한 Company 22에 대한 HR 데이터의 집계된 보기가 필요합니다. 다음 다이어그램은 전역 HR 응용 프로그램의 요구 사항을 보여줍니다.
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.0 Installation Guide의 Environment Variables를 참조하십시오.
SQL 데이터베이스가 가동되어 실행 중입니다.
JAVA_HOME 변수가 올바른 Java 경로로 설정되었습니다.
SQL 데이터베이스의 비밀번호는 myPassword입니다.
급여 데이터베이스에 대한 JDBC 데이터 소스를 만듭니다.
$ dpconf create-jdbc-data-source payroll-src myPassword
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
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
o=payroll의 가상 DN을 사용하여 급여 데이터베이스에 대한 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을 구성해야 합니다.
$ dpcfg 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 객체 클래스에서 수퍼 클래스를 만듭니다.
$ set-jdbc-object-class-prop payroll-view person super-class:extensibleObject
LDAP 디렉토리에 대한 액세스 제어는 디렉토리 자체에 ACI를 정의하여 처리됩니다. 가상 데이터 보기를 통해 데이터 소스에 액세스할 경우 이러한 데이터 보기를 통해 표시되는 데이터에만 적용하도록 ACI를 정의해야 합니다.
디렉토리 프록시 서버를 통한 모든 액세스는 연결 처리기에서 제어됩니다. 연결 처리기에 대한 자세한 내용은 25 장, 디렉토리 프록시 서버 연결 처리기을 참조하십시오.
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