仮想一覧表示(VLV)での User Management の設定

ディレクトリ同期は、User Management にとって重要な要件です。ユーザーやグループは、ロールおよび権限の割り当てのために、エンタープライズディレクトリから LiveCycle データベースに同期されます。ユーザーの数は要件によって 100 から 100,000 以上と様々であり、データを効率的に同期させる際の技術的課題となっています。

LDAP プロトコルには、要求コントロールを使用したページ分割という方法でサイズの大きなデータセットに対してクエリーを実行するメカニズムがあります。Microsoft Active Directory を使用している場合、LDAP から LiveCycle データベースへの同期を実行すると、PagedResultsControl によって特定のサイズのデータがまとめて取得されます。Sun ONE Directory Server は、PagedResultsControl をサポートしていません。Sun ONE Directory Server に対してページ分割クエリーを完了するには、仮想一覧表示(VLV)コントロールを使用します。このコントロールを使用するには、ディレクトリサーバー側での設定とクライアント側での実装が必要です。

注意: ここでは、Sun ONE Directory Server に VLV コントロールを使用する場合について説明します。ただし、VLV コントロールをサポートするディレクトリサーバーであれば、VLV コントロールを使用できます。
  1. ディレクトリを設定する場合は、ユーザー設定ページとグループの設定ページの両方で「仮想一覧表示(VLV)コントロールを有効にする」を選択します。このチェックボックスを選択する場合は、「フィールドをソート」ボックスでソート名も指定する必要があります。デフォルト値は「uid」です(ディレクトリまたはカスタム SPI の追加または ディレクトリの編集を参照)。

  2. ユーザーおよびグループに対して LDAP VLV エントリを作成するには、Sun ONE Administration Console またはコマンドラインスクリプトを使用します。コマンドラインスクリプトでは、ユーザーおよびグループに関するサンプルの LDIF ファイルを使用できます(VLV 用の Sun ONE Directory Server の設定を参照)。

  3. サーバーを停止し、必要なインデックスを作成します(ディレクトリサーバーでの VLV のインデックスの作成を参照)。

VLV 用の Sun ONE Directory Server の設定

VLV を作成するには、vlvSearch および vlvIndex の各オブジェクトクラスが含まれている 1 組のエントリが必要です。vlvSearch エントリには検索ベースおよび vlvFilter 属性が含まれており、このうち vlvFilter 属性ではソート対象の属性が含まれているオブジェクトクラスを指定します。vlvIndex オブジェクトクラスには、ソート対象の属性とソート順序を指定する vlvSort 属性が含まれています(「-」符号はアルファベットの逆順であることを示します)。LiveCycle で VLV を使用するには、ユーザーのエントリとグループのエントリを個別に作成する必要があります。

注意: オブジェクトエントリを作成するには、Sun ONE グラフィカルユーザーインターフェイス(GUI)またはコマンドラインスクリプトを使用します。GUI を使用してオブジェクトエントリを作成する手順については、Sun One のマニュアルを参照してください。

ここでは、ユーザーの VLV エントリ用のサンプルスクリプト LDIF を示します。

dn: cn=lcuser,cn=userRoot,cn=ldbm database,cn=plugins,cn=config 
objectclass: top 
objectclass: vlvSearch 
cn: lcuser 
vlvBase: dc=corp,dc=adobe,dc=com 
vlvScope: 2 
vlvFilter: (&(objectclass=inetOrgPerson)) 
aci: (target="ldap:///cn=lcuser,cn=userRoot,cn=ldbm database,cn=plugins,cn=config")(targetattr="*")(version 3.0; acl "Config" 
;allow(read,search,compare) userdn="ldap:///all"; ) 
dn: cn=lcuser,cn=lcuser,cn=userRoot,cn=ldbm database,cn=plugins,cn=config 
cn: lcuser 
vlvSort: cn 
objectclass: top 
objectclass: vlvIndex

スクリプトを使用したオブジェクトエントリの作成

  1. サンプルスクリプトには lcuser という LDAP エントリがあります。このエントリは、LiveCycle でユーザー同期を実現する VLV 関連設定用のエントリです。適宜、次のプロパティを変更します。

    エントリ名:このサンプルのエントリ名は lcuser です。lcuser を変更する場合は、サンプルスクリプトのすべての領域で lcuser を変更する必要があります。

    vlvBase:ユーザー設定ページに指定されている BaseDN です。

    vlvFilter:ユーザー設定ページに指定されている検索フィルターです。

    vlvSort:ユーザー設定ページの VLV 設定セクションに指定されているソートフィールドです。VLV コントロールには、ソートコントロールを指定する必要があります。このフィールドは、作成した vlv インデックスのソートパラメーターとして使用されます。

    aci:サンプルスクリプトに指定されているアクセス制御は、認証済みユーザーに対して、VLV インデックスにアクセスして読み取り、検索、比較の各操作を実行する権限を付与します。管理者は、User Management ユーザーインターフェイスのディレクトリサーバー設定ページに設定されているバインドユーザーにアクセスを制限できます。権限が付与されていない場合、ユーザー検索で VLV を使用できなくなり、LDAP サーバーで権限の例外が発生します。

    注意: 慣例により、vlvIndex エントリ名も lcuser に設定しますが、異なる名前を付けることもできます。vlvindex ツールにも同じ名前を使用します(ディレクトリサーバーでの VLV のインデックスの作成を参照)。
  2. Sun ONE サーバーに付属の ldapmodify ツールを使用して、グループの Base DN、検索フィルターおよびソートフィールドをそれぞれ使用して、グループに同様のエントリを作成します。

    server directory\shared\bin>ldapmodify -v -a -h host -p port -D "admin user" -w "password" -f "LDIF file location"

    例えば、次のようにテキストを入力します。

    D:\tools\ldap\sun\shared\bin> -v -a -h localhost -p 55850 -D "uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoot" -w "admin" -f "D:\tools\ldap\data\vlv feature\users.ldif"

ディレクトリサーバーでの VLV のインデックスの作成

ディレクトリの設定を行い、ユーザーおよびグループに対して LDAP VLV エントリを作成したら、サーバーを停止し、必要なインデックスを作成します。

  1. オブジェクトエントリを作成した後、Sun ONE サーバーを停止します。

  2. vlvindex ツールを使用し、次のテキストを入力してインデックスを生成します。

    directory server instance\vlvindex.bat -n userRoot -T lcuser

    次の出力が生成されます。

    D:\tools\ldap\sun\shared\bin>..\..\slapd-chetanmeh-xp3\vlvindex.bat -n userRoot -T livecycle 
    [21/Nov/2007:16:47:26 +051800] - userRoot: Indexing VLV: livecycle 
    [21/Nov/2007:16:47:27 +051800] - userRoot: Indexed 1000 entries (5%). 
    [21/Nov/2007:16:47:27 +051800] - userRoot: Indexed 2000 entries (9%). 
    ... 
    [21/Nov/2007:16:47:29 +051800] - userRoot: Indexed 20000 entries (94%). 
    [21/Nov/2007:16:47:29 +051800] - userRoot: Indexed 21000 entries (99%). 
    [21/Nov/2007:16:47:29 +051800] - userRoot: Finished indexing.

    vlvindex ツールは、ディレクトリサーバーインスタンスディレクトリにあります。Sun ONE サーバーで server1 および server2 の 2 つのインスタンスが動作している場合、vlvindex ツールは、Sun ONE server directory\server1 directory ディレクトリにあります。パラメーター -T の値は、サンプル lDIF で既に作成した vlvindex エントリの cn 属性の値となります。この場合、値は lcuser です。

  3. VLV がグループに対しても有効になっている場合は、グループについて対応するインデックスを作成します。次のコマンドを実行して、インデックスが作成されているかどうかを確認します。

    sun one server directory\shared\bin>ldapsearch -h hostname -p port no -s base -b "" objectclass=*

    次のサンプルデータのような出力が生成されます。

    D:\tools\ldap\sun\shared\bin>ldapsearch.exe -h localhost -p 55850 -s base -b "" objectclass=* 
    ldapsearch.exe: started Tue Nov 27 16:34:20 2007 
    version: 1 
    dn: 
    objectClass: top 
    namingContexts: dc=corp,dc=adobe,dc=com 
    supportedExtension: 2.16.840.1.113730.3.5.7 
    ... 
    vlvsearch: cn=MCC ou=testdata dc=corp dc=adobe dc=com, cn=userRoot,cn=ldbm dat 
        abase,cn=plugins,cn=config 
    vlvsearch: cn=lcuser,cn=userRoot,cn=ldbm database,cn=plugins,cn=config 
    vlvsearch: cn=Browsing ou=testdata,cn=userRoot,cn=ldbm database,cn=plugins,cn= 
        config 
    1 matches