Oracle Containers for J2EE セキュリティ・ガイド 10g(10.1.3.1.0) B31857-01 |
|
この章では、OC4Jを構成してOracle以外の(サード・パーティまたは外部)LDAPサーバーをユーザー・リポジトリとして使用する方法について説明します。この章の内容は次のとおりです。
OC4J 10.1.3.x実装では、次の外部LDAPプロバイダがサポートされています。
注意
system-jazn-data.xml
内に存在する必要があります。
Application Server Controlコンソールを使用してアプリケーションをデプロイするときは、外部(サード・パーティ)LDAPプロバイダを指定できます(「Application Server Controlを介したセキュリティ・プロバイダの指定」を参照)。
外部LDAPプロバイダを指定すると、自動的にorion-application.xml
ファイルに次の設定が生成されます。
<jazn provider="XML"> <property name="custom.ldap.provider" value="true" /> </jazn>
OC4Jでは、ログイン・モジュールLDAPLoginModule
を備えており、外部LDAPプロバイダでの認証と認可に使用されます。(または、カスタム・リポジトリで使用するためのカスタム・ログイン・モジュールを提供できます。)外部LDAPプロバイダには、次の構成可能なオプションがあります。
LDAPLoginModule
を構成するオプション設定は、system-jazn-data.xml
内の<jazn-loginconfig>
の下の<login-module>
要素内に反映されます。
この項では、Application Server Controlコンソールを使用した外部LDAPプロバイダの管理について説明します。次の項目があります。
外部LDAPプロバイダの使用とApplication Server Controlを介したアプリケーションのデプロイを計画している場合は、外部LDAPプロバイダをセキュリティ・プロバイダとして指定する際にその構成ができます。
「デプロイ: デプロイ設定」ページで、次の手順を実行します(このページへのナビゲート方法は、「Application Server Controlを介したアプリケーションのデプロイ」を参照してください)。
あるいは、「LDAPディレクトリ・ベンダー」設定で指定されたベンダーに対して「値をベンダーのデフォルトに設定」を選択します。これ以外の場合は、依然として「LDAPロケーション」、「ユーザーDN」、「ユーザー検索ベース」および「グループ検索ベース」を指定する必要があります。
表10-1 Application Server Control外部LDAPプロバイダのオプション
オプション | 必須 または設定/デフォルト | 表10-5での対応オプション(詳細用参照先) |
---|---|---|
LDAPロケーション |
必須 |
oracle.security.jaas.ldap.provider.url |
LDAPディレクトリ・ベンダー |
「Active Directory」、「Sun Directory Server」または「その他」(ドロップダウン・メニューから選択) |
oracle.security.jaas.ldap.provider.type |
ユーザーDN |
必須 |
oracle.security.jaas.ldap.provider.principal |
ユーザー・パスワード |
デフォルトなし |
oracle.security.jaas.ldap.provider.credential |
キャッシング有効化(チェック・ボックス) |
デフォルト: |
oracle.security.jaas.ldap.lm.cache_enabled |
接続プーリング有効化(チェック・ボックス) |
デフォルト: |
oracle.security.jaas.ldap.provider.connect.pool |
オプション | デフォルト | 説明 |
---|---|---|
接続プールの初期サイズ |
2 |
初めに各接続ID用にプールに作成される接続の数 |
接続プールの最大サイズ |
25 |
各接続ID用にプールに同時に保持できる接続の最大数 |
接続プールの最適サイズ |
10 |
プールにおける各接続ID用接続数の希望値 |
アイドル接続タイムアウト(ミリ秒) |
300000(5分) |
アイドル接続が削除されるまでプールに保持される時間 |
オプション | 必須または設定/デフォルト | 表10-6での対応オプション(詳細用参照先) |
---|---|---|
ユーザー検索ベース |
必須 |
oracle.security.jaas.ldap.user.searchbase |
ユーザー検索範囲 |
「サブツリー」(デフォルト)または「1レベル」(ドロップダウン・メニューから選択) 注意: ドロップダウン・メニューのデフォルトは「サブツリー」ですが、ベンダーのデフォルトは「1レベル」です。 |
oracle.security.jaas.ldap.user.searchscope |
LDAPユーザー名の属性 |
必須 |
oracle.security.jaas.ldap.user.name.attribute |
LDAPユーザー・オブジェクト・クラス |
必須 |
oracle.security.jaas.ldap.user.object.class |
オプション | 必須または設定/デフォルト | 表10-7での対応オプション(詳細用参照先) |
---|---|---|
グループ検索ベース |
必須 |
oracle.security.jaas.ldap.role.searchbase |
グループ検索範囲 |
「サブツリー」(デフォルト)または「1レベル」(ドロップダウン・メニューから選択) 注意: ドロップダウン・メニューのデフォルトは「サブツリー」ですが、ベンダーのデフォルトは「1レベル」です。 |
oracle.security.jaas.ldap.role.searchscope |
LDAPグループ名の属性 |
必須 |
oracle.security.jaas.ldap.role.name.attribute |
LDAPグループ・オブジェクト・クラス |
必須 |
oracle.security.jaas.ldap.role.object.class |
LDAPグループ・メンバー属性 |
必須 |
oracle.security.jaas.ldap.member.attribute |
グループ・メンバーシップ検索範囲 |
「ダイレクト」(デフォルト)または「ネステッド」(ドロップダウン・メニューから選択) |
oracle.security.jaas.ldap.membership.searchscope |
アプリケーションで使用するセキュリティ・プロバイダは、前述の項で説明したようにデプロイ時に選択できます。また、デプロイ後に、異なるセキュリティ・プロバイダに変更することもできます。特に、外部LDAPプロバイダに変更するには、次の手順を実行します。
あるいは、「LDAPディレクトリ・ベンダー」設定で指定されたベンダーに対して「値をベンダーのデフォルトに設定」を選択します。これ以外の場合は、依然として「LDAPロケーション」、「ユーザーDN」、「ユーザー検索ベース」および「グループ検索ベース」を指定する必要があります。
ここで、「セキュリティ・プロバイダ」ページに戻り、変更を反映するためにアプリケーションを再起動するよう求められます。
重要 ロール・マッピングが適切に設定されていて、デプロイ・ロール(外部LDAPプロバイダで定義されているロール)をJ2EE論理ロールに正しくマップすることも確認します。追加情報は、「セキュリティ・ロールのマッピング」を参照してください。 |
外部LDAPプロバイダの構成は、system-jazn-data.xml
ファイルの<login-module>
要素に反映されます。この要素には、OracleAS JAAS Providerで外部LDAPプロバイダに使用されるログイン・モジュールLDAPLoginModule
が構成されます。すべての<login-module>
要素は、<jazn-loginconfig>
の下の<login-modules>
要素のサブ要素です。
<login-module>
要素の各オプション設定は、<option>
要素(<options>
のサブ要素)で表され、外部LDAPプロバイダの構成設定と対応しています。<option>
要素の<name>
サブ要素ではオプションの名前を指定し、<value>
サブ要素では対応する値を指定します。
これらのオプションの設定は、「デプロイ時の外部LDAPプロバイダの指定および構成」に記載されているように、Application Server Controlを介して指定できます。また、その項では、この項にリストされているオプションとApplication Server Controlコンソールに表示されるオプションとの間の対応関係についても示しています。
表10-5、表10-6および表10-7に、サポート対象のオプションを示します。表には、Application Server Controlを介して外部LDAPプロバイダを構成し、「値をベンダーのデフォルトに設定」を選択したときに使用されるデフォルト値が示されています(存在する場合)。特に記述されている場合を除き、これらのオプションは必須です。直接指定するか、ベンダー・デフォルトを使用する必要があります。
次に例を示します。
<jazn-data ... > ... <jazn-loginconfig> <application> <name>callerInfo</name> <login-modules> <login-module> <class>oracle.security.jazn.login.module.LDAPLoginModule</class> <control-flag>required</control-flag> <options> <option> <name>oracle.security.jaas.ldap.provider.url</name> <value>ldap://myhost.example.com:389</value> </option> ...more options... </options> </login-module> ... </login-modules> </application> ... </jazn-loginconfig> ... </jazn-data>
詳細な例は、「system-jazn-data.xml内のSun Java System Directory Server用設定」を参照してください。
この項では、外部LDAPプロバイダを使用して必要なアカウントを作成し、必要なパーミッションを付与するときの手順について説明します。この項の内容は次のとおりです。
外部LDAPプロバイダを使用する場合、管理ユーザー・アカウントと管理ロールを定義し、そのロールをユーザーに付与し、必要なパーミッションをそのロールに付与する必要があります。(この手順は、ファイルベースのセキュリティ・プロバイダとOracle Internet Directoryで自動的に処理されます。)
oc4jadmin
は規則上、管理アカウントに使用されますが、任意の名前を使用することができます。)
oc4j-administrators
およびascontrol_admin
を作成します。これらのロールは、LDAPプロバイダ用に構成されたグループ検索ベースの下に存在する必要があります。(グループ検索ベースの詳細は、表10-4および表10-7を参照してください。)
oc4j-app-administrators
、ascontrol_appadmin
およびascontrol_monitor
を作成します。(これらは管理ユーザーに付与する必要はありません。)
% java -jar jazn.jar -grantperm myrealm -role oc4j-administrators \ com.evermind.server.rmi.RMIPermission login
ロールは外部LDAPプロバイダで定義されていますが、これらのパーミッション付与はsystem-jazn-data.xml
ファイルに格納されていることに注意してください。
EJBアプリケーション用の外部LDAPプロバイダを使用するときに、EJBにアクセスする適切なLDAPプリンシパルにRMIパーミッションのloginを付与する必要があります。
次の例では、OracleAS JAAS Provider Admintoolを使用して、LDAPプリンシパルhobbes
に対してパーミッションを付与します。
% java -jar jazn.jar -grantperm oracle.security.jazn.realm.LDAPPrincipal hobbes \ com.evermind.server.rmi.RMIPermission login
この例を実行すると、ポリシー・リポジトリであるsystem-jazn-data.xml
ファイルに次のような構成が生成されます。
<jazn-policy> <grant> <grantee> <principals> <principal> <class>oracle.security.jazn.realm.LDAPPrincipal</class> <name>hobbes</name> </principal> </principals> </grantee> ... <permissions> <permission> <class>com.evermind.server.rmi.RMIPermission</class> <name>login</name> </permission> ... </permissions> ... </grant> ... </jazn-policy>
外部LDAPプリンシパルが要求する追加パーミッションがあれば、前項に示したRMIパーミッションと同じ方法で付与できます。
OC4JのJAASモードは、付与されたパーミッションに関する認可のチェックでアプリケーションが要求する場合に、外部LDAPプロバイダを使用するアプリケーションでサポートされます。次の例に示すようにして構成します。
<orion-application ... > ... <jazn ... jaas-mode="doAsPrivileged" /> ... </orion-application>
このモードをいつどのように使用するかの詳細は、「JAASモードの概要」および「JAASモードの構成と使用」を参照してください。
この項では、外部LDAPプロバイダとしてSun Java System Directory Serverを使用するためのサンプル構成を示します。次があります。
この章で前述したようにApplication Server Controlコンソールを使用すると、orion-application.xml
およびsystem-jazn-data.xml
の設定は自動的に行われます。
前述のSun Java System Directory Serverの例では、次のLDIF記述が使用されることが想定されています。
# An example user object entry uid= jdoe,dc=us,dc=example,dc=com uid= jdoe givenName=John sn=Doe cn=John Doe userPassword={SSHA}zD/44JbZY33osry4mzfLn0du7nBhIIAHKDG5Fg== uidNumber=1 gidNumber=1 homeDirectory=c:¥ objectClass=top objectClass=person objectClass=organizationalPerson objectClass= inetOrgPerson objectClass=posixAccount # An example role object entry cn=managers,ou=groups,dc=us,dc=example,dc=com objectClass=top objectClass= groupOfUniqueNames cn=managers uniqueMember=uid=jdoe,dc=us,dc=example,dc=com
この項では、次に示すファイル内にある、外部LDAPプロバイダ用のOC4J構成を示します。
Sun Java System Directory Serverのインストールが、例10-1に示されている一連のLDIFエントリによって記述されているとします。system-jazn-data.xml
ファイル内の対応する<jazn-loginconfig>
エントリを、次の例に示します。
<jazn-data ... > ... <jazn-loginconfig> <application> <name>callerInfo</name> <login-modules> <login-module> <class>oracle.security.jazn.login.module.LDAPLoginModule</class> <control-flag>required</control-flag> <options> <option> <name>oracle.security.jaas.ldap.provider.url</name> <value>ldap://myhost.example.com:389</value> </option> <option> <name>oracle.security.jaas.ldap.user.name.attribute</name> <value>uid</value> </option> <option> <name>oracle.security.jaas.ldap.user.object.class</name> <value>inetOrgPerson</value> </option> <option> <name>oracle.security.jaas.ldap.user.searchbase</name> <value>dc=us,dc=example,dc=com</value> </option> <option> <name>oracle.security.jaas.ldap.role.name.attribute</name> <value>cn</value> </option> <option> <name>oracle.security.jaas.ldap.role.object.class</name> <value>groupOfUniqueNames</value> </option> <option> <name>oracle.security.jaas.ldap.role.searchbase</name> <value>ou=groups,dc=us,dc=example,dc=com</value> </option> <option> <name>oracle.security.jaas.ldap.member.attribute</name> <value>uniqueMember</value> </option> </options> </login-module> </login-modules> </application> </jazn-loginconfig> ... </jazn-data>
外部LDAPプロバイダ用として、orion-application.xml
の次の設定が使用されます。
<jazn provider="XML"> <property name="custom.ldap.provider" value="true" /> </jazn>
system-jazn.data.xml
内のログイン・モジュール情報を同期化するには、OC4Jを再起動する必要があります。
この項では、OC4Jで外部LDAPプロバイダを使用するときに、Secure Sockets Layer通信を使用する方法について説明します。この項の内容は次のとおりです。
「SSL認証」では、Secure Sockets Layer通信の認証、一方向認証、双方向認証の様々な認証モードについて説明しています。大多数のLDAPプロバイダは「認証なし」モードをサポートしていないので注意してください(Oracle Internet Directoryではサポートしています)。
外部LDAPプロバイダに対してSSL通信を有効にするには、LDAPプロバイダ・オプションoracle.security.jaas.ldap.provider.url
に、LDAPSプロトコル、ホスト名、SSL通信用の適切なポートを示すURL値を設定します。構文は、前述のLDAP URLと似ていますが、LDAPSのデフォルト・ポートは389ではなく636です。
外部LDAPプロバイダ構成のApplication Server Controlコンソールを使用する場合、このオプションは「LDAPロケーション」の設定に対応します(「デプロイ時の外部LDAPプロバイダの指定および構成」を参照)。これは「system-jazn-data.xml内の外部LDAPプロバイダ設定」でも説明しています。
たとえば、「LDAPロケーション」をldaps://myhost.example.com:636
に設定すると、system-jazn-data.xml
内に設定されているoracle.security.jaas.ldap.provider.url
は次のようになります。
<login-module> <class>oracle.security.jazn.login.module.LDAPLoginModule</class> <control-flag>...</control-flag> <options> <option> <name>oracle.security.jaas.ldap.provider.url</name> <value>ldaps://myhost.example.com:636</value> </option> ...more options... </options> </login-module>
重要 この構成は、「認証なし」モードのSSLには十分ですが、外部LDAPプロバイダは(LDAPサーバーとの通信用に)少なくとも一方向認証を必要とする可能性があります。追加の手順の詳細は、次項の「外部LDAPプロバイダのSSLの構成」で説明します。 |
OC4Jと外部LDAPプロバイダ間でSSL通信を行うには次が必要です。
次に示す汎用的な手順で、標準的なJSSE機能と一方向認証を使用するSSL用にActive DirectoryやSun Java System Directory Serverなどの外部LDAPプロバイダを構成できます(現在のリリースでは外部LDAPプロバイダに双方向認証はサポートされません)。
keytool
で実行できます。
-Djavax.net.ssl.trustStore
プロパティを設定します。
-Djavax.net.ssl.trustStorePassword
プロパティも設定します。(通常、トラストストアには公開鍵のみ含まれるため、一方向認証ではこの設定は必須ではありません。)
スタンドアロンOC4Jでは、JVMコマンドラインでこの設定を行います。Oracle Application Server環境では、opmn.xml
ファイル内のOC4JインスタンスのJavaプロパティ設定からこれを実行します。
OC4J home
インスタンスのサンプルopmn.xml
エントリを示します。
<ias-component id="OC4J"> <process-type id="home" module-id="OC4J" status="enabled"> <module-data> <category id="start-parameters"> <data id="java-options" value="-Xrs -server -Djava.security.policy= $ORACLE_HOME/j2ee/home/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false" -Djavax.net.ssl.trustStore=pathtotruststore/> </category> ... </module-data> ... </process-type> </ias-component>
関連項目
|
|
Copyright © 2006 Oracle Corporation. All Rights Reserved. |
|