Java CAPS での LDAP の使用

第 1 章 Java CAPS での LDAP の使用

ここに示す各トピックでは、Sun JavaTM Composite Application Platform Suite (Java CAPS) で LDAP (Lightweight Directory Access Protocol) を使用する方法について説明します。

質問または問題がある場合は、Java CAPS の Web サイト http://goldstar.stc.com/support を参照してください。

LDAP の概要

LDAP (Lightweight Directory Access Protocol) は、クライアントがディレクトリサービスのデータを照会したり更新したりできるようにする標準規格です。

LDAP ディレクトリには一連の「エントリ」が含まれています。エントリは、「属性」のコレクションと、エントリを一意に識別する「識別名」から構成されます。

次の例では、最初の行で DN を指定しています。後続の行で属性を指定しています。


dn: cn=all, ou=Roles, dc=company, dc=com
objectClass: top
objectClass: groupOfUniqueNames
cn: all
ou: Roles

DN の構成要素は、もっとも具体的なものからより範囲の広いものへ、階層的に並べられます。つまり、DN の最後の構成要素は、ディレクトリのルートエントリを示します。

各属性には、型と 1 つ以上の値が含まれています。たとえば、属性 ou: Roles は、ou (組織単位) という型と Roles という値を持っています。「オブジェクトクラス」は、エントリの必須属性と省略可能属性を指定する属性です。RFC 2256 には多くのオブジェクトクラスの定義が記載されています。

前述の例は LDIF (LDAP データ交換形式) で表現されています。エントリをグラフィカルに表すこともできます。

LDAP ディレクトリを検索する際は、「検索フィルタ」を使用して検索条件を指定します。ワイルドカード文字としてアスタリスクを使用することができます。次に例を示します。


(cn=John S*)

LDAP サーバーを使用したリポジトリユーザーの管理

Java CAPS リポジトリを設定して、ユーザー管理に LDAP サーバーを使用することができます。

ユーザーがリポジトリにログインしようとすると、ユーザー名およびパスワードが、LDAP サーバーに格納されているユーザー名およびパスワードと照合されます。また、リポジトリのさまざまなオブジェクトに対するユーザーのアクセスを承認するために、ユーザーのロールのリストがサーバーから取得されます。

次の LDAP サーバーがサポートされています。

最初に LDAP サーバーを設定する必要があります。該当する節を参照してください。

次に、リポジトリを設定して、LDAP サーバーを特定し、適切な情報 (ディレクトリのうちユーザーが格納されている領域など) を見つけることができるようにします。「リポジトリの設定」を参照してください。

リポジトリと LDAP サーバーの間の通信を暗号化する場合は、「SSL のサポート」を参照してください。

Java CAPS ユーザーの管理』には、リポジトリユーザーの管理に関する基本的な情報が記載されています。

Sun JavaTM System Directory Server の設定

Sun Java System Directory Server version 5.1 および 5.2 には、次の主要コンポーネントが含まれています。

ディレクトリサーバーコンソールを使用すると、ほとんどの管理タスクを実行できます。コンソールには、「タスク」、「設定」、「ディレクトリ」、および「ステータス」という 4 つの最上位タブがあります。「ディレクトリ」タブには、ディレクトリのエントリがツリー形式で表示されます。このタブからは、すべてのエントリと属性を参照、表示、および編集することができます。

設定ファイルを編集するか、コマンド行ユーティリティーを使用することによって、管理タスクを手動で実行することもできます。

Sun Java System Directory Server version 6.x には、ディレクトリのエントリを管理するための次の方法が用意されています。

DSCC は Sun JavaTM Web コンソールに組み込まれています。DSCC には、「共通タスク」、「ディレクトリサーバー」、「プロキシサーバー」、「サーバーグループ」、および「設定」という 5 つの最上位タブがあります。

「ディレクトリサーバー」タブ、サーバーの名前、「エントリの管理」タブの順にクリックすると、エントリの参照、追加、および変更を行うことのできるページに到達します。左側にディレクトリ情報ツリー (DIT) が表示されます。

「共通タスク」タブを使用して、新規エントリを作成したりデータを参照したりすることもできます。


注 –

次に示す手順を実行する方法の詳細については、Sun Java System Directory Server に付属のマニュアルを参照してください。


ProcedureSun Java System Directory Server を設定する

  1. admin ユーザーと Administrator ユーザーを People ディレクトリの下に作成します。

  2. alladministration、および management の各ロールを最上位ノードの下に作成します。

  3. 作成したロールを admin ユーザーと Administrator ユーザーに割り当てます。

  4. 「リポジトリの設定」 に進みます。

Active Directory サービスの設定

Active Directory は Windows 2003 の重要な部分です。Active Directory は管理容易性、セキュリティー、および相互運用性に関連するさまざまな機能を提供します。主要な管理ツールは、「Active Directory ユーザーとコンピュータ」と呼ばれるスナップインです。

Active Directory はロールの概念をサポートしていません。そのため、Active Directory では「グループ」の概念を使用して Java CAPS のロールのシミュレーションを行う必要があります。

Users ディレクトリ内にグループを作成するのではなく、CAPSRoles という新しい組織単位にグループを作成します。


注 –

次に示す手順を実行する方法の詳細については、Active Directory に付属のマニュアルを参照してください。


ProcedureActive Directory サービスを設定する

  1. 「Active Directory ユーザーとコンピュータ」管理ツールを起動します。

  2. ルートノードを右クリックし、「新規作成」、「組織単位」の順に選択します。

    「新しいオブジェクト - 組織単位 (OU)」ダイアログボックスが表示されます。

  3. 「名前」フィールドに値 (CAPSRoles など) を入力します。

  4. 「OK」をクリックします。

  5. 組織単位の下に、alladministration、および management というグループを作成します。グループを作成するには、組織単位を右クリックし、「新規作成」、「グループ」の順に選択します。「グループのスコープ」と「グループの種類」にはデフォルト値を使用します。

    グループを追加すると、それらが組織単位の下に表示されます。

  6. 作成したすべてのグループにメンバーとして admin ユーザーと Administrator ユーザーを追加します。そのためには、各グループをダブルクリックし、ダイアログボックスから adminAdministrator を選択します。

  7. 「リポジトリの設定」 に進みます。

OpenLDAP Directory Server の設定

OpenLDAP プロジェクトでは、LDAP プロトコルのオープンソース実装が提供されています。LDAP サーバーは、slapd と呼ばれるスタンドアロンデーモンとして実行されます。主要な設定ファイルは slapd.conf と呼ばれます。このファイルには、グローバルな情報、バックエンド固有の情報、およびデータベース固有の情報が含まれています。データベースにエントリを追加するには、slapadd プログラムなどのさまざまな方法を使用できます。データベースを検索するには、ldapsearch プログラムを使用します。

詳細については、http://www.openldap.org を参照してください。


注 –

次に示す手順を実行する方法の詳細については、OpenLDAP Directory Server に付属のマニュアルを参照してください。


ProcedureOpenLDAP Directory Server を設定する

  1. ユーザーが置かれているノードの下に、admin ユーザーと Administrator ユーザーを作成します。

  2. 使用しているスキーマにロール用のノードがない場合は、次の手順で作成する Java CAPS 固有のロール用にノードを作成します。次に例を示します。


    dn: ou=CAPSRoles, dc=sun, dc=com
    objectClass: top
    objectClass: organizationalUnit
    ou: CAPSRoles
  3. ロールが置かれているノードの下に、alladministration、および management というロールを作成します。各ロールに admin ユーザーと Administrator ユーザーを一意のメンバーとして追加します。次に例を示します。


    dn: cn=all, ou=CAPSRoles, dc=sun, dc=com
    objectClass: top
    objectClass: groupOfUniqueNames
    cn: all
    ou: CAPSRoles
    uniqueMember: uid=admin, ou=People, dc=sun, dc=com
    uniqueMember: uid=Administrator, ou=People, dc=sun, dc=com
    
    dn: cn=administration, ou=CAPSRoles, dc=sun, dc=com
    objectClass: top
    objectClass: groupOfUniqueNames
    cn: administration
    ou: CAPSRoles
    uniqueMember: uid=admin, ou=People, dc=sun, dc=com
    uniqueMember: uid=Administrator, ou=People, dc=sun, dc=com
    
    dn: cn=management, ou=CAPSRoles, dc=sun, dc=com
    objectClass: top
    objectClass: groupOfUniqueNames
    cn: management
    ou: CAPSRoles
    uniqueMember: uid=admin, ou=People, dc=sun, dc=com
    uniqueMember: uid=Administrator, ou=People, dc=sun, dc=com
    
  4. 必要に応じて、ほかのユーザーを 1 つまたは複数のロールに追加します。次に例を示します。


    dn: cn=all, ou=CAPSRoles, dc=sun, dc=com
    objectClass: top
    objectClass: groupOfUniqueNames
    cn: all
    ou: CAPSRoles
    uniqueMember: uid=admin, ou=People, dc=sun, dc=com
    uniqueMember: uid=Administrator, ou=People, dc=sun, dc=com
    uniqueMember: uid=userA, ou=People, dc=sun, dc=com
    uniqueMember: uid=userB, ou=People, dc=sun, dc=com
    
    dn: cn=administration, ou=CAPSRoles, dc=sun, dc=com
    objectClass: top
    objectClass: groupOfUniqueNames
    cn: administration
    ou: CAPSRoles
    uniqueMember: uid=admin, ou=People, dc=sun, dc=com
    uniqueMember: uid=Administrator, ou=People, dc=sun, dc=com
    uniqueMember: uid=userB, ou=People, dc=sun, dc=com
    
    dn: cn=management, ou=CAPSRoles, dc=sun, dc=com
    objectClass: top
    objectClass: groupOfUniqueNames
    cn: management
    ou: CAPSRoles
    uniqueMember: uid=admin, ou=People, dc=sun, dc=com
    uniqueMember: uid=Administrator, ou=People, dc=sun, dc=com
  5. 「リポジトリの設定」 に進みます。

リポジトリの設定

リポジトリユーザーの管理に 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. リポジトリをシャットダウンし、再起動します。

SSL のサポート

デフォルトでは、リポジトリと LDAP サーバーの間の通信は暗号化されません。

リポジトリと LDAP サーバーの間の通信を暗号化するには、このトピックで前述する手順に次の追加と変更を加えます。

LDAP サーバーでの SSL の設定

LDAP サーバーが SSL (Secure Sockets Layer) を使用するように設定されていることを確認します。詳細な手順については、LDAP サーバーに付属のマニュアルを参照してください。

次の手順の準備として、LDAP サーバーの証明書をファイルにエクスポートします。

LDAP サーバーの証明書のインポート

リポジトリの信頼できる証明書のリストに、LDAP サーバーの証明書を追加する必要があります。このリストは cacerts というファイルにあります。

次の手順では、keytool プログラムを使用します。このプログラムは Java SDK に付属しています。

ProcedureLDAP サーバーの証明書をインポートする

  1. JDK-install-dir/jre/bin ディレクトリに移動します。

    リポジトリのインストール時に指定した JDK を使用します。

  2. 次のコマンドを実行します。


    keytool -import -trustcacerts -alias alias -file certificate_filename 
    -keystore cacerts_filename

    -alias オプションには任意の値を指定できます。

    -file オプションには、LDAP サーバーの証明書の完全修飾名を指定します。次に例を示します。


    C:\mycertificate.cer

    -keystore オプションには、cacerts ファイルの完全修飾名を指定します。cacerts ファイルは JDK-install-dir/jre/lib/security ディレクトリにあります。次に例を示します。


    C:\Java\jdk1.6.0_06\jre\lib\security\cacerts
  3. プロンプトが表示されたら、キーストアのパスワードを入力します。デフォルトのパスワードは changeit です。

  4. この証明書を信頼することを確認するプロンプトが表示されたら、yes と入力します。

    次のメッセージが表示されます。


    Certificate was added to keystore

LDAP サーバーの URL の変更

server.xml ファイルの <Realm> 要素で、LDAP サーバーの URL を次のように変更します。

次に例を示します。


<Realm className="org.apache.catalina.realm.JNDIRealm"
    connectionURL="ldaps://myldapserver:636"
    ...

LDAP サーバーを使用した Sun JMS IQ Manager ユーザーの管理

Sun JMS IQ Manager を設定して、ユーザー管理に LDAP サーバーを使用することができます。

「レルム」は、セキュリティーポリシーの適用に使用されるユーザー、グループ、およびロールのコレクションです。JMS IQ Manager では、複数の LDAP レルムの同時実行がサポートされます。

次の手順を実行する際、JMS IQ Manager へのアクセスが許可されるのは、有効なユーザー名とパスワードで接続している場合だけです。

次の LDAP サーバーがサポートされています。

Java CAPS ユーザーの管理』には、Sun JMS IQ Manager ユーザーの管理に関する基本的な情報が記載されています。

LDAP サーバーの設定

次の手順では、LDAP サーバーにユーザーとロールを作成します。

ProcedureLDAP サーバーを設定する

  1. 1 人以上の JMS IQ Manager ユーザーを作成します。

  2. 次のロールを 1 つ以上作成します。

    ロール 

    説明 

    application 

    クライアントが JMS IQ Manager にアクセスできるようにします。 

    asadmin 

    JMS 管理ユーティリティー (stcmsctrlutil) または Enterprise Manager を使用可能にし、クライアントが JMS IQ Manager にアクセスできるようにします。

  3. 必要に応じて、ユーザーにロールを割り当てます。

Sun JMS IQ Manager の設定

JMS IQ Manager を設定して、LDAP サーバーを特定し、適切な情報を見つけることができるようにする必要があります。

複数の LDAP サーバーを使用可能にできます。また、デフォルトレルムを指定することもできます。

ProcedureSun JMS IQ Manager を設定する

  1. アプリケーションサーバーが稼働していない場合は、アプリケーションサーバーを起動します。

  2. 設定エージェントにログインします。URL の形式は http://hostname:port-number/configagent です。hostname は、アプリケーションサーバーがインストールされているコンピュータの TCP/IP ホスト名に設定します。port-number は、アプリケーションサーバーの管理ポート番号に設定します。次に例を示します。

    http://localhost:4848/configagent

  3. 左区画で、JMS IQ Manager ノード (IQ[lowbar]Manager[lowbar]18007 など) をクリックします。

  4. 「アクセス制御」タブをクリックします。

  5. 「必要な認証」ラベルの右にあるチェックボックスが選択されていることを確認します。

  6. Sun Java System Directory Server を使用可能にするには、「Sun Java System ディレクトリサーバーの有効化」ラベルの右にあるチェックボックスを選択し、「プロパティーの表示」をクリックします。

    次の表に、出現するプロパティーを示します。デフォルト値は、Sun Java System Directory Server の標準スキーマに一致するように設計されています。各プロパティーのデフォルト値を確認します。必要な場合は、デフォルト値を変更します。

    プロパティー 

    説明 

    ネーミングプロバイダの URL 

    JNDI (Java Naming and Directory Interface) サービスプロバイダの URL。 

    デフォルト値は ldap://IP[lowbar]address:589 です。

    ネーミング初期ファクトリ 

    初期コンテキストを作成するファクトリクラスの完全修飾名。初期コンテキストは、JNDI ネーミング操作の開始点となります。 

    デフォルト値は com.sun.jndi.ldap.LdapCtxFactory です。

    ネーミングセキュリティー認証 

    JNDI ネーミング操作で使用するセキュリティーレベル。 

    デフォルト値は simple です。

    ネーミングセキュリティープリンシパル 

    LDAP サーバーへの接続に使用するセキュリティープリンシパル。 

    ネーミングセキュリティー認証 

    ネーミングセキュリティープリンシパルのパスワード。 

    デフォルト値は STC です。値を保存してから再度表示するとき、値は暗号化されています。

    グループ内のグループ DN 属性名 

    グループエントリの識別名属性の名前。 

    デフォルト値は entrydn です。

    グループ DN のグループ名フィールド 

    グループ識別名のグループ名フィールドの名前。 

    デフォルト値は cn です。

    グループの親 DN 下のユーザーフィルタのグループ 

    ユーザーのすべてのグループを取得するために使用する LDAP 検索フィルタ。このプロパティーは java.text.MessageFormat クラスでサポートされている構文に従っており、{1} はユーザーの識別名が挿入される場所を示します。

    デフォルト値は uniquemember={1} です。

    グループの親 DN 

    グループエントリの親識別名。つまり、このプロパティーは、LDAP ディレクトリのグループ領域のルートエントリを指定します。 

    ユーザー内のロール名の属性名 

    ユーザーエントリのロール名属性の名前。 

    デフォルト値は nsroledn です。

    ロール DN のロール名フィールド 

    ロール識別名のロール名フィールドの名前。 

    デフォルト値は cn です。

    ロールの親 DN 

    ロールエントリの親識別名。つまり、このプロパティーは、LDAP ディレクトリのロール領域のルートエントリを指定します。 

    グループサブツリーの検索 

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

    デフォルト値は false です。

    ロールサブツリーの検索 

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

    デフォルト値は false です。

    ユーザーサブツリーの検索 

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

    デフォルト値は false です。

    ユーザー内のユーザー DN 属性名 

    ユーザーエントリの識別名属性の名前。 

    デフォルト値は entrydn です。

    ユーザー内のユーザー ID 属性名 

    ユーザーエントリのユーザー ID 属性の名前。 

    デフォルト値は uid です。

    ユーザーの親 DN 

    ユーザーエントリの親識別名。つまり、このプロパティーは、LDAP ディレクトリのユーザー領域のルートエントリを指定します。 

  7. Active Directory を使用可能にするには、「Microsoft アクティブディレクトリサーバーの有効化」ラベルの右にあるチェックボックスを選択し、「プロパティーの表示」をクリックします。

    次の表に、出現するプロパティーを示します。デフォルト値は、Active Directory の標準スキーマに一致するように設計されています。各プロパティーのデフォルト値を確認します。必要な場合は、デフォルト値を変更します。

    プロパティー 

    説明 

    ネーミングプロバイダの URL 

    JNDI (Java Naming and Directory Interface) サービスプロバイダの URL。 

    デフォルト値は ldap://IP[lowbar]address:389 です。

    ネーミング初期ファクトリ 

    初期コンテキストを作成するファクトリクラスの完全修飾名。初期コンテキストは、JNDI ネーミング操作の開始点となります。 

    デフォルト値は com.sun.jndi.ldap.LdapCtxFactory です。

    ネーミングセキュリティー認証 

    JNDI ネーミング操作で使用するセキュリティーレベル。 

    デフォルト値は simple です。

    ネーミングセキュリティープリンシパル 

    LDAP サーバーへの接続に使用するセキュリティープリンシパル。 

    ネーミングセキュリティー認証 

    ネーミングセキュリティープリンシパルのパスワード。 

    デフォルト値は STC です。値を保存してから再度表示するとき、値は暗号化されています。

    ユーザーの親 DN 

    ユーザーエントリの親識別名。つまり、このプロパティーは、LDAP ディレクトリのユーザー領域のルートエントリを指定します。 

    ユーザー内のユーザー DN 属性名 

    ユーザーエントリの識別名属性の名前。 

    デフォルト値は distinguishedName です。

    ユーザー内のユーザー ID 属性名 

    ユーザーエントリのユーザー ID (つまり、ログイン ID) 属性の名前。 

    デフォルト値は sAMAccountName です。

    ロールの親 DN 

    ロールエントリの親識別名。つまり、このプロパティーは、LDAP ディレクトリのロール領域のルートエントリを指定します。 

    ロール内のロール DN 属性名 

    ロールエントリの識別名属性の名前。 

    デフォルト値は cn です。

    ロールの親 DN 下のユーザーフィルタのロール 

    ユーザーのすべてのロールを取得するために使用する LDAP 検索フィルタ。このプロパティーは java.text.MessageFormat クラスでサポートされている構文に従っており、{1} はユーザーの識別名が挿入される場所を示します。

    デフォルト値は (&(member={1})(objectclass=group)) です。

    グループの親 DN 

    グループエントリの親識別名。つまり、このプロパティーは、LDAP ディレクトリのグループ領域のルートエントリを指定します。 

    グループ内のグループ DN 属性名 

    グループエントリの識別名属性の名前。 

    デフォルト値は distinguishedName です。

    グループ DN のグループ名フィールド 

    グループ識別名のグループ名フィールドの名前。 

    デフォルト値は cn です。

    グループの親 DN 下のユーザーフィルタのグループ 

    ユーザーのすべてのグループを取得するために使用する LDAP 検索フィルタ。このプロパティーは java.text.MessageFormat クラスでサポートされている構文に従っており、{1} はユーザーの識別名が挿入される場所を示します。

    デフォルト値は (&(member={1})(objectclass=group)) です。

    グループサブツリーの検索

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

    デフォルト値は false です。

    ユーザーサブツリーの検索 

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

    デフォルト値は false です。

    ロールサブツリーの検索 

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

    デフォルト値は false です。

  8. OpenLDAP Directory Server を使用可能にするには、「汎用 LDAP サーバーの有効化」ラベルの右にあるチェックボックスを選択し、「プロパティーの表示」をクリックします。

    次の表に、出現するプロパティーを示します。各プロパティーのデフォルト値を確認します。必要な場合は、デフォルト値を変更します。

    プロパティー 

    説明 

    ネーミングプロバイダの URL 

    JNDI (Java Naming and Directory Interface) サービスプロバイダの URL。 

    デフォルト値は ldap://IP[lowbar]address:489 です。

    ネーミング初期ファクトリ 

    初期コンテキストを作成するファクトリクラスの完全修飾名。初期コンテキストは、JNDI ネーミング操作の開始点となります。 

    デフォルト値は com.sun.jndi.ldap.LdapCtxFactory です。

    ネーミングセキュリティー認証 

    JNDI ネーミング操作で使用するセキュリティーレベル。 

    デフォルト値は simple です。

    ユーザーの親 DN 

    ユーザーエントリの親識別名。つまり、このプロパティーは、LDAP ディレクトリのユーザー領域のルートエントリを指定します。 

    ユーザー内のユーザー ID 属性名 

    ユーザーエントリのユーザー ID 属性の名前。 

    デフォルト値は uid です。

    ロールの親 DN 

    ロールエントリの親識別名。つまり、このプロパティーは、LDAP ディレクトリのロール領域のルートエントリを指定します。 

    ロール内のロール名の属性名 

    ユーザーエントリのロール名属性の名前。 

    デフォルト値は cn です。

    ロールの親 DN 下のユーザーフィルタのロール 

    ユーザーのすべてのロールを取得するために使用する LDAP 検索フィルタ。このプロパティーは java.text.MessageFormat クラスでサポートされている構文に従っており、{1} はユーザーの識別名が挿入される場所を示します。

    デフォルト値は uniquemember={1} です。

    グループ DN のグループ名フィールド 

    グループ識別名のグループ名フィールドの名前。 

    デフォルト値は cn です。

    グループの親 DN 

    グループエントリの親識別名。つまり、このプロパティーは、LDAP ディレクトリのグループ領域のルートエントリを指定します。 

    グループの親 DN 下のユーザーフィルタのグループ 

    ユーザーのすべてのグループを取得するために使用する LDAP 検索フィルタ。このプロパティーは java.text.MessageFormat クラスでサポートされている構文に従っており、{1} はユーザーの識別名が挿入される場所を示します。

    デフォルト値は uniquemember={1} です。

    グループサブツリーの検索

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

    デフォルト値は false です。

    ユーザーサブツリーの検索 

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

    デフォルト値は false です。

    ロールサブツリーの検索 

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

    デフォルト値は false です。

  9. デフォルトレルムを変更するには、「デフォルトレルム」ドロップダウンリストからレルムを選択します。

  10. 「保存」をクリックします。

LDAP サーバーを使用した Enterprise Manager ユーザーの管理

Enterprise Manager を設定して、ユーザー管理に LDAP サーバーを使用することができます。

次の LDAP サーバーがサポートされています。

最初に LDAP サーバーを設定します。次に、Enterprise Manager サーバーを設定して、LDAP サーバーを特定し、適切な情報 (ディレクトリのうちユーザーが格納されている領域など) を見つけることができるようにします。

Java CAPS ユーザーの管理』には、Enterprise Manager ユーザーの管理に関する基本的な情報が記載されています。

Sun Java System Directory Server の設定

Sun Java System Directory Server version 5.1 および 5.2 には、次の主要コンポーネントが含まれています。

ディレクトリサーバーコンソールを使用すると、ほとんどの管理タスクを実行できます。コンソールには、「タスク」、「設定」、「ディレクトリ」、および「ステータス」という 4 つの最上位タブがあります。「ディレクトリ」タブには、ディレクトリエントリがツリー形式で表示されます。このタブから、すべてのエントリと属性を参照、表示、および編集することができます。

設定ファイルを編集するか、コマンド行ユーティリティーを使用することによって、管理タスクを手動で実行することもできます。

Sun Java System Directory Server version 6.x には、ディレクトリのエントリを管理するための次の方法が用意されています。

DSCC は Sun JavaTM Web Console に組み込まれています。DSCC には、「共通タスク」、「ディレクトリサーバー」、「プロキシサーバー」、「サーバーグループ」、および「設定」という 5 つの最上位タブがあります。

「ディレクトリサーバー」タブ、サーバーの名前、「エントリの管理」タブの順にクリックすると、エントリの参照、追加、および変更を行うことのできるページに到達します。左側にディレクトリ情報ツリー (DIT) が表示されます。

「共通タスク」タブを使用して、新規エントリを作成したりデータを参照したりすることもできます。


注 –

次に示す手順を実行する方法の詳細については、Sun Java System Directory Server に付属のマニュアルを参照してください。


ProcedureSun Java System Directory Server を設定する

  1. admin ユーザーと Administrator ユーザーを People ディレクトリの下に作成します。

  2. 最上位ノードの下に次のロールを作成します。

    • 配備

    • ユーザー管理

    • 読み取り専用モニター

    • 制御モニター

    • JMS 読み取り専用モニター

    • JMS 読み書きモニター

    • マネージャー

  3. 作成したロールを admin ユーザーと Administrator ユーザーに割り当てます。

  4. 「Enterprise Manager サーバーの設定」 に進みます。

Active Directory サービスの設定

Active Directory は Windows 2000 の重要な部分です。Active Directory は管理容易性、セキュリティー、および相互運用性に関連するさまざまな機能を提供します。主要な管理ツールは、「Active Directory ユーザーとコンピュータ」と呼ばれるスナップインです。

Active Directory はロールの概念をサポートしていません。そのため、Active Directory では「グループ」の概念を使用して Enterprise Manager のロールのシミュレーションを行う必要があります。


注 –

次に示す手順を実行する方法の詳細については、Active Directory に付属のマニュアルを参照してください。


ProcedureActive Directory サービスを設定する

  1. 「Active Directory ユーザーとコンピュータ」管理ツールを起動します。

  2. ルートノードを右クリックし、「新規作成」、「組織単位」の順に選択します。

    「新しいオブジェクト - 組織単位 (OU)」ダイアログボックスが表示されます。

  3. 「名前」フィールドに値 (EntMgrRoles など) を入力します。

  4. 「OK」をクリックします。

  5. 組織単位の下に次のグループを作成します。

    • 配備

    • ユーザー管理

    • 読み取り専用モニター

    • 制御モニター

    • JMS 読み取り専用モニター

    • JMS 読み書きモニター

    • マネージャー

    グループを追加すると、それらが組織単位の下に表示されます。

  6. 作成したすべてのグループにメンバーとして admin ユーザーと Administrator ユーザーを追加します。そのためには、各グループをダブルクリックし、ダイアログボックスから adminAdministrator を選択します。

  7. 「Enterprise Manager サーバーの設定」 に進みます。

OpenLDAP Directory Server の設定

OpenLDAP プロジェクトでは、LDAP プロトコルのオープンソース実装が提供されています。LDAP サーバーは、slapd と呼ばれるスタンドアロンデーモンとして実行されます。主要な設定ファイルは slapd.conf と呼ばれます。このファイルには、グローバルな情報、バックエンド固有の情報、およびデータベース固有の情報が含まれています。データベースにエントリを追加するには、slapadd プログラムなどのさまざまな方法を使用できます。データベースを検索するには、ldapsearch プログラムを使用します。

詳細については、http://www.openldap.org を参照してください。


注 –

次に示す手順を実行する方法の詳細については、OpenLDAP Directory Server に付属のマニュアルを参照してください。


ProcedureOpenLDAP Directory Server を設定する

  1. ユーザーが置かれているノードの下に admin ユーザーと Administrator ユーザーを作成します。

  2. 使用しているスキーマにロール用のノードがない場合は、次の手順で作成する Enterprise Manager のロール用にノードを作成します。

  3. ロールが置かれているノードの下に、次のロールを作成します。

    • 配備

    • ユーザー管理

    • 読み取り専用モニター

    • 制御モニター

    • JMS 読み取り専用モニター

    • JMS 読み書きモニター

    • マネージャー

  4. 各ロールに admin ユーザーと Administrator ユーザーを一意のメンバーとして追加します。

  5. 必要に応じて、ほかのユーザーを 1 つまたは複数のロールに追加します。

  6. 「Enterprise Manager サーバーの設定」 に進みます。

Enterprise Manager サーバーの設定

LDAP サーバーの設定が完了したら、Enterprise Manager サーバーを設定して、LDAP サーバーを特定し、適切な情報を見つけることができるようにします。

Enterprise Manager のファイル web.xml および ldap.properties を編集する必要があります。

ProcedureEnterprise Manager サーバーを設定する

  1. Enterprise Manager のサーバーコンポーネントをシャットダウンします。

  2. JavaCAPS-install-dir/emanager/server/webapps/sentinel/WEB-INF ディレクトリにある web.xml ファイルを開きます。

  3. 次の行を見つけます。


    <param-name>com.stc.emanager.sentinel.authHandler</param-name>
    <param-value>com.stc.cas.auth.provider.tomcat.TomcatPasswordHandler</param-value>
  4. パラメータ値を次のように変更します。


    <param-value>com.stc.cas.auth.provider.ldap.LDAPHandler</param-value>
  5. web.xml ファイルを保存します。

  6. JavaCAPS-install-dir/emanager/server/webapps/sentinel/WEB-INF/classes ディレクトリにある ldap.properties ファイルを開きます。

  7. 次の表に、ldap.properties ファイルに出現するすべてのプロパティーを示します。使用している LDAP サーバーに対応するセクションのプロパティーを編集し、プロパティーがコメントアウトされていないことを確認します。

    プロパティー 

    説明 

    com.stc.sentinel.auth.ldap.serverType 

    LDAP サーバーのタイプ。 

    com.stc.sentinel.auth.ldap.serverUrl 

    LDAP サーバーの URL。 

    com.stc.sentinel.auth.ldap.searchFilter 

    ユーザーエントリのユーザー ID 属性の名前。 

    com.stc.sentinel.auth.ldap.searchBase 

    LDAP ディレクトリのうち、Enterprise Manager がユーザーを検索する領域のルートエントリ。 

    com.stc.sentinel.auth.ldap.searchScope 

    現在、このプロパティーは使用されていません。 

    com.stc.sentinel.auth.ldap.bindDN 

    LDAP サーバーへの接続に使用するセキュリティープリンシパル。 

    com.stc.sentinel.auth.ldap.bindPassword 

    セキュリティープリンシパルのパスワード。 

    com.stc.sentinel.auth.ldap.referral 

    LDAP リフェラルポリシー。デフォルト値は follow で、LDAP リフェラルを自動的にたどることを示します。LDAP サーバーでリフェラルが使用可能になっている必要があります。その他の有効な値は、throw (リフェラル例外の場合) および ignore です。

    このプロパティーは省略可能です。 

    このプロパティーは、Active Directory および OpenLDAP のプロパティーセットだけに出現します。 

    com.stc.sentinel.auth.ldap.roleAttribute 

    ユーザーエントリのロール名属性の名前。 

    com.stc.sentinel.auth.ldap.roleBaseDN 

    LDAP ディレクトリのうち、Enterprise Manager がロールを検索する領域のルートエントリ。 

    このプロパティーは、OpenLDAP のプロパティーセットだけに出現します。 

    com.stc.sentinel.auth.ldap.rolePattern 

    これを使用すると、ロール名のパターンマッチングを設定できます。LDAP ディレクトリで、Enterprise Manager ユーザーをほかのユーザーとは異なるカテゴリに配置することができます。 

    このプロパティーは、Active Directory のプロパティーセットだけに出現します。 

  8. ldap.properties ファイルを保存します。

  9. Enterprise Manager のサーバーコンポーネントを起動します。

アプリケーション設定プロパティーの動的指定

アプリケーション設定プロパティーを指定するには、静的な方法または動的な方法を使用できます。

静的な方法を使用する場合は、NetBeans IDE で設計時にプロパティー値を指定します。プロパティー値はアプリケーションファイルに格納されます。配備後に値の変更が必要な場合は、NetBeans IDE で値を変更し、アプリケーションファイルを再構築して、アプリケーションファイルを再配備する必要があります。

動的な方法を使用する場合は、設計時に LDAP URL を指定します。この URL は、LDAP サーバー内の属性を指す必要があります。アプリケーションを配備するときに、実際の値が LDAP サーバーから取得されます。静的な方法の手順を実行しなくても、配備後に LDAP サーバーで値を変更することができます。ただし、変更を有効にするには、アプリケーションファイルを無効にしてから再度有効にする必要があります。

この機能は、文字列値 (パスワードを含む)、数値、またはブール値を使用するプロパティーに使用できます。


注 –

プロパティー値を更新するもう 1 つの方法では、LDAP を使用する必要がありません。asadmin ツールで、extract-caps-application-configuration コマンドを実行します。指定したアプリケーションファイルの設定プロパティーがプロパティーファイルに抽出されます。1 つ以上のプロパティーの値を更新してから、import-caps-configuration コマンドを実行します。アプリケーションを再起動します。


アプリケーションサーバーから LDAP サーバーへのアクセスの有効化

このタスクでは、アプリケーションサーバーがどのように LDAP サーバーにアクセスできるかを指定するプロパティーを編集します。

Procedureアプリケーションサーバーが LDAP サーバーにアクセスを有効にする

  1. Sun Java System Application Server に付属の asadmin ツールを起動します。

  2. export-caps-ldap configuration コマンドを実行します。LDAP.properties ファイルを格納するディレクトリを指定する必要があります。


    asadmin> export-caps-ldap-configuration --capsconfigdir c:\temp

    LDAP.properties ファイルが生成されます。

  3. テキストエディタを使用して LDAP.properties ファイルを開きます。

  4. LDAP サーバーへのアクセス方法を指定する次のプロパティーの値を設定します。

    • host

    • port

    • sslport

    • password

    • loginDN

    ldapVersion プロパティーは省略可能です。このプロパティーは任意の数値に設定することができます。

  5. LDAP.properties ファイルを保存します。

  6. import-caps-configuration コマンドを実行します。LDAP.properties ファイルが格納されているディレクトリを指定する必要があります。


    asadmin> import-caps-configuration c:\temp
  7. Sun Java System Application Server に付属の管理コンソールを起動します。

  8. 左区画で、CAPS ノード、エンバイロメントおよび CM の上書きノード、そしてエンバイロメントの上書きノードを展開します。capsenv/LDAP ノードを選択します。

    右区画にプロパティーフィールドが表示されます。これで、管理コンソールからプロパティーを更新できます。あるいは、LDAP.properties ファイルを更新して import-caps-configuration コマンドを再度実行することもできます。

    管理コンソールの LDAP プロパティーのスクリーンショット。

プロパティーの LDAP URL の指定

Java CAPS で使用される可能性のある LDAP URL の 2 つの例を次に示します。


ldap://uid=BatchFTP_TargetFileName,ou=Batch_Adapter,dc=Adapters,dc=sun,dc=com?cn
ldap://uid=BatchFTP_Password,ou=Batch_Adapter,dc=Adapters,dc=sun,dc=com?cn

LDAP サーバー内のプロパティー値への正しいパスは、ディレクトリ構造によって異なります。

LDAP URL にバックスラッシュ文字 (\) は使用しないでください。

RFC 2255 で LDAP URL の形式が定義されています。RFC は http://www.ietf.org/rfc.html で参照できます。

Procedureプロパティーの LDAP URL を指定する

  1. NetBeans IDE で、プロパティーを含む「プロパティー」ダイアログボックスを開きます。

  2. LDAP サーバー内の対応する属性を指す LDAP URL を入力します。

    次のスクリーンショットでは、「ファイル名の入力」プロパティーが LDAP URL に設定されています。

    「プロパティー」ダイアログボックスのスクリーンショット。
  3. LDAP サーバーに移動し、実際の値を入力します。

  4. アプリケーションファイルを配備するときは、LDAP サーバーが稼働していることを確認してください。LDAP サーバーが稼働していない場合、配備は成功しません。