Java CAPS での LDAP の使用

リポジトリの設定

リポジトリユーザーの管理に LDAP サーバーを使用するには、リポジトリの server.xml ファイルに <Realm> 要素を追加する必要があります。このファイルは JavaCAPS-install-dir/repository/repository/server/conf ディレクトリにあります。

server.xml ファイルには、ユーザーデータベースのフラットファイル実装を指定する、デフォルトの <Realm> 要素が含まれています。このフラットファイル実装は、JavaCAPS-install-dir/repository/repository/data/files ディレクトリにある tomcat-users.xml ファイルを使用します。

次の表に、<Realm> 要素のLDAP バージョンで使用される属性を示します。指定できるすべての属性の詳細については、org.apache.catalina.realm.JNDIRealm クラスに関する Tomcat のマニュアルを参照してください。

属性 

説明 

className 

常に org.apache.catalina.realm.JNDIRealm という値を使用してください。

connectionURL 

LDAP サーバーの場所を識別します。LDAP サーバーの名前、および LDAP サーバーが要求を待機するポートが含まれています。 

roleBase 

ロール検索のベースエントリ。この属性が指定されていない場合は、最上位のディレクトリコンテキストが検索ベースになります。 

roleName 

ロールの名前を格納する、ロールエントリの属性。 

roleSearch 

ロールエントリを選択するための LDAP 検索フィルタ。識別名を表す {0} や、認証ユーザーのユーザー名を表す {1} を、パターン置換として含むこともあります。特定の認証ユーザー (Administrator など) の場合には、オプション {0} を選択するようにしてください。

roleSubtree 

デフォルトでは、LDAP ディレクトリのロール領域の検索対象は、ルートエントリの 1 レベル下だけです。サブツリー全体の検索を有効にするには、この値を true に設定します。

userBase 

ユーザーを格納しているサブツリーのベースであるエントリ。この属性が指定されていない場合は、最上位のコンテキストが検索ベースになります。 

userPattern 

ユーザーのディレクトリエントリの識別名 (DN) を表すパターン。java.text.MessageFormat クラスでサポートされている構文に従っており、{0} は実際のユーザー名が挿入される場所を示します。

userRoleName 

このユーザーに割り当てられているロールの名前の値を 0 個以上格納する、ユーザーのディレクトリエントリの属性の名前。また、ディレクトリの検索で見つかった個々のロールエントリから取得する属性の名前を、roleName 属性を使用して指定することもできます。userRoleName が指定されていない場合は、ユーザーのすべてのロールがロール検索から取得されます。

userRoleNamePattern 

ロールのディレクトリエントリの識別名 (DN) を表すパターン。java.text.MessageFormat クラスでサポートされている構文に従っており、{0} は実際のロール名を示します。このパターンを使用して DN を解析することによって、Java CAPS での承認に使用される実際のロール名が取得され、そこで実際のユーザー名が挿入されます。

userSearch 

{0} のユーザー名を置換したあとでユーザーエントリを選択するために使用する LDAP 検索フィルタ。

userSubtree 

デフォルトでは、LDAP ディレクトリのユーザー領域の検索対象は、ルートエントリの 1 レベル下だけです。サブツリー全体の検索を有効にするには、この値を true に設定します。

Procedureリポジトリを設定する

  1. JavaCAPS-install-dir/repository/repository/server/conf ディレクトリにある server.xml ファイルを開きます。

  2. デフォルトの <Realm> 要素を削除するかコメントアウトします。

  3. Sun Java System Directory Server を使用している場合は、次の <Realm> 要素を <Engine> タグの内側に追加します。必要に応じて、デフォルト値を変更します。属性については前述の表で説明されています。


    <Realm className="org.apache.catalina.realm.JNDIRealm"
        connectionURL="ldap://localhost:489"
        userBase="cn=People,dc=sun,dc=com"
        userSearch="(uid={0})"
        userSubtree="true"
        userRoleName="nsroledn"
        userRoleNamePattern="cn={0},dc=sun,dc=com"
        roleSubtree="true"
    />
  4. Active Directory を使用している場合は、次の <Realm> 要素を <Engine> タグの内側に追加します。必要に応じて、デフォルト値を変更します。属性については前述の表で説明されています。


    <Realm className="org.apache.catalina.realm.JNDIRealm"
        connectionURL="ldap://localhost:389"
        userBase="cn=Users,dc=sun,dc=com"
        userSearch="(cn={0})"
        userSubtree="true"
        roleBase="ou=CAPSRoles,dc=sun,dc=com"
        roleName="cn"
        roleSearch="(member={0})"
        roleSubtree="true"
    />
  5. OpenLDAP Directory Server を使用している場合は、次の <Realm> 要素を <Engine> タグの内側に追加します。必要に応じて、デフォルト値を変更します。属性については前述の表で説明されています。


    <Realm className="org.apache.catalina.realm.JNDIRealm"
        connectionURL="ldap://localhost:389"
        userBase="ou=People,dc=sun,dc=com"
        userSearch="(uid={0})"
        userSubtree="true"
        roleBase="ou=CAPSRoles,dc=sun,dc=com"
        roleName="cn"
        roleSearch="(uniquemember={0})"
        roleSubtree="true"
    />
  6. LDAP サーバーが匿名の読み取りアクセスに対応するよう設定されていない場合は、connectionName 属性と connectionPassword 属性を <Realm> 要素に追加します。最初の属性は、Administrator ユーザーの DN に設定します。2 番目の属性は、ユーザーの暗号化されたパスワードに設定します。次の例を参照してください。

    Sun Java System Directory Server:


    connectionName="cn=Directory Manager"
    connectionPassword="E451KDVb0OPcH+GN46OZcg=="

    Active Directory:


    connectionName="Administrator@sun.com"
    connectionPassword="geEiVIbtO+DcH+GN46OZcg=="

    OpenLDAP Directory Server:


    connectionName="cn=Manager,dc=sun,dc=com"
    connectionPassword="l/ZRt1cfNKc="

    パスワードを暗号化するには、JavaCAPS-install-dir/repository/repository/util ディレクトリにある encrypt ユーティリティーを使用します。このユーティリティーのファイル拡張子は、プラットフォームによって異なります。このユーティリティーは、暗号化されていないパスワードを引数として受け取ります。次に例を示します。


    C:\JavaCAPS6\repository\repository\util>encrypt mypwd
    LCUApSkYpuE
  7. server.xml ファイルを保存して閉じます。

  8. LDAP サーバーを起動します。

  9. リポジトリをシャットダウンし、再起動します。