Java CAPS リポジトリを設定して、ユーザー管理に LDAP サーバーを使用することができます。
ユーザーがリポジトリにログインしようとすると、ユーザー名およびパスワードが、LDAP サーバーに格納されているユーザー名およびパスワードと照合されます。また、リポジトリのさまざまなオブジェクトに対するユーザーのアクセスを承認するために、ユーザーのロールのリストがサーバーから取得されます。
次の LDAP サーバーがサポートされています。
Sun JavaTM System Directory Server version 5.1、5.2、および 6.x
Microsoft の Active Directory (Windows Server 2003 とともに配布されているバージョン)
OpenLDAP Directory Server 2.x
最初に LDAP サーバーを設定する必要があります。該当する節を参照してください。
次に、リポジトリを設定して、LDAP サーバーを特定し、適切な情報 (ディレクトリのうちユーザーが格納されている領域など) を見つけることができるようにします。「リポジトリの設定」を参照してください。
リポジトリと LDAP サーバーの間の通信を暗号化する場合は、「SSL のサポート」を参照してください。
『Java CAPS ユーザーの管理』には、リポジトリユーザーの管理に関する基本的な情報が記載されています。
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 に付属のマニュアルを参照してください。
admin ユーザーと Administrator ユーザーを People ディレクトリの下に作成します。
all、administration、および management の各ロールを最上位ノードの下に作成します。
作成したロールを admin ユーザーと Administrator ユーザーに割り当てます。
「リポジトリの設定」 に進みます。
Active Directory は Windows 2003 の重要な部分です。Active Directory は管理容易性、セキュリティー、および相互運用性に関連するさまざまな機能を提供します。主要な管理ツールは、「Active Directory ユーザーとコンピュータ」と呼ばれるスナップインです。
Active Directory はロールの概念をサポートしていません。そのため、Active Directory では「グループ」の概念を使用して Java CAPS のロールのシミュレーションを行う必要があります。
Users ディレクトリ内にグループを作成するのではなく、CAPSRoles という新しい組織単位にグループを作成します。
次に示す手順を実行する方法の詳細については、Active Directory に付属のマニュアルを参照してください。
「Active Directory ユーザーとコンピュータ」管理ツールを起動します。
ルートノードを右クリックし、「新規作成」、「組織単位」の順に選択します。
「新しいオブジェクト - 組織単位 (OU)」ダイアログボックスが表示されます。
「名前」フィールドに値 (CAPSRoles など) を入力します。
「OK」をクリックします。
組織単位の下に、all、administration、および management というグループを作成します。グループを作成するには、組織単位を右クリックし、「新規作成」、「グループ」の順に選択します。「グループのスコープ」と「グループの種類」にはデフォルト値を使用します。
グループを追加すると、それらが組織単位の下に表示されます。
作成したすべてのグループにメンバーとして admin ユーザーと Administrator ユーザーを追加します。そのためには、各グループをダブルクリックし、ダイアログボックスから admin と Administrator を選択します。
「リポジトリの設定」 に進みます。
OpenLDAP プロジェクトでは、LDAP プロトコルのオープンソース実装が提供されています。LDAP サーバーは、slapd と呼ばれるスタンドアロンデーモンとして実行されます。主要な設定ファイルは slapd.conf と呼ばれます。このファイルには、グローバルな情報、バックエンド固有の情報、およびデータベース固有の情報が含まれています。データベースにエントリを追加するには、slapadd プログラムなどのさまざまな方法を使用できます。データベースを検索するには、ldapsearch プログラムを使用します。
詳細については、http://www.openldap.org を参照してください。
次に示す手順を実行する方法の詳細については、OpenLDAP Directory Server に付属のマニュアルを参照してください。
ユーザーが置かれているノードの下に、admin ユーザーと Administrator ユーザーを作成します。
使用しているスキーマにロール用のノードがない場合は、次の手順で作成する Java CAPS 固有のロール用にノードを作成します。次に例を示します。
dn: ou=CAPSRoles, dc=sun, dc=com objectClass: top objectClass: organizationalUnit ou: CAPSRoles |
ロールが置かれているノードの下に、all、administration、および 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 |
必要に応じて、ほかのユーザーを 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 |
「リポジトリの設定」 に進みます。
リポジトリユーザーの管理に 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 のマニュアルを参照してください。
JavaCAPS-install-dir/repository/repository/server/conf ディレクトリにある server.xml ファイルを開きます。
デフォルトの <Realm> 要素を削除するかコメントアウトします。
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" /> |
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" /> |
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" /> |
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 |
server.xml ファイルを保存して閉じます。
LDAP サーバーを起動します。
リポジトリをシャットダウンし、再起動します。
デフォルトでは、リポジトリと LDAP サーバーの間の通信は暗号化されません。
リポジトリと LDAP サーバーの間の通信を暗号化するには、このトピックで前述する手順に次の追加と変更を加えます。
LDAP サーバーが SSL (Secure Sockets Layer) を使用するように設定されていることを確認します。詳細な手順については、LDAP サーバーに付属のマニュアルを参照してください。
次の手順の準備として、LDAP サーバーの証明書をファイルにエクスポートします。
リポジトリの信頼できる証明書のリストに、LDAP サーバーの証明書を追加する必要があります。このリストは cacerts というファイルにあります。
次の手順では、keytool プログラムを使用します。このプログラムは Java SDK に付属しています。
JDK-install-dir/jre/bin ディレクトリに移動します。
リポジトリのインストール時に指定した JDK を使用します。
次のコマンドを実行します。
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 |
プロンプトが表示されたら、キーストアのパスワードを入力します。デフォルトのパスワードは changeit です。
この証明書を信頼することを確認するプロンプトが表示されたら、yes と入力します。
次のメッセージが表示されます。
Certificate was added to keystore |
server.xml ファイルの <Realm> 要素で、LDAP サーバーの URL を次のように変更します。
次に例を示します。
<Realm className="org.apache.catalina.realm.JNDIRealm" connectionURL="ldaps://myldapserver:636" ... |