Oracle Fusion Middleware Oracle Internet Directory管理者ガイド 11g リリース1(11.1.1) B55919-02 |
|
![]() 前 |
![]() 次 |
この章では、Oracle Internet Directoryサーバー・プラグイン、およびOracle Internet Directoryのプラグイン・フレームワークについて説明します。
この章の項目は次のとおりです。
サーバー・プラグインは、Oracle Internet Directoryサーバーの機能拡張に使用されるカスタマイズされたプログラムです。サーバー・プラグインは、PL/SQLパッケージ、Javaプログラムまたはパッケージ、共有オブジェクトまたはライブラリ、Windows上のダイナミック・リンク・ライブラリのいずれにもできます。各プラグインには構成エントリがOracle Internet Directoryサーバーにあります。構成エントリでは、プラグイン起動の条件が指定されます。プラグイン起動の条件には次のようなものがあります。
LDAP操作(ldapbind
、ldapmodify
など)
LDAP操作に関連したタイミング(pre_bind、post_modifyなど)
ディレクトリ・サーバーのプラグインは、次のような機能をディレクトリ・サーバーに追加します。
ディレクトリ・サーバーによる操作実行前のデータの妥当性チェック
サーバーによる操作実行後の指定処理の実行
パスワード・ポリシーの定義
外部に格納された資格証明によるユーザーの認証
起動時に、ディレクトリ・サーバーはプラグイン構成およびライブラリをロードします。その後、リクエストを処理するときに、指定されたイベントが発生した場合は常に、プラグイン・ファンクションをコールします。
図43-1に、LDAPクライアントが個々のアプリケーションを使用して行う、Oracleディレクトリ・サーバーとの間の情報の送受信について示します。同様に、プラグイン構成ツールもディレクトリ・サーバーに情報を送信します。ディレクトリ・サーバーはデータをプラグイン・モジュール1、プラグイン・モジュール2およびプラグイン・モジュール3に送信します。各プラグイン・モジュールはプラグイン・モジュール・インタフェースとプラグイン・ロジックを備えています。各プラグイン・モジュールは、LDAP APIおよびプラグインLDAPとの間の情報の送受信を行います。
通常のディレクトリ・サーバー操作の前後に実行するか、操作に追加して実行するかによって、プラグインが実行する作業は異なります。次の項では、様々な種類の操作ベースのプラグインについて説明します。
10g(10.1.4.0.1)では、Oracle Internet Directoryは、JavaとPL/SQLのプラグインをサポートしています。この章では、JavaおよびPL/SQLプラグインに共通する情報について説明します。付録FではPL/SQLプラグインに固有の追加情報を示し、付録EではJavaプラグインに固有の追加情報を示します。
Oracle Internet Directoryプラグインを開発するには、次の事項をよく理解している必要があります。
一般的なLDAPの概念
Oracle Internet Directory
Oracle Internet DirectoryとOracle Application Serverの統合
次のいずれかの分野のプログラミング・スキルを備えている必要があります。
SQL、PL/SQLおよびデータベースRPC
Java
プラグインを使用してLDAP操作を拡張するには、次のような方法があります。
サーバーによるデータに対するLDAP操作の実行前に、データの妥当性をチェックできます。
サーバーがLDAP操作を正常に終了した後で、定義した処置を実行できます。
拡張操作を定義できます。
外部に格納された資格証明を介してユーザーを認証できます。
既存のサーバー・モジュールを独自のサーバー・モジュールに置換できます。
起動時に、ディレクトリ・サーバーはプラグイン構成およびライブラリをロードします。様々なLDAPリクエストの処理中にプラグイン・ファンクションをコールします。
関連項目: 『Oracle Fusion Middleware Oracle Internet Directory管理者ガイド』のパスワード・ポリシー・プラグインに関する章。この章には、独自のパスワード値チェックを実装して、Oracle Internet Directoryサーバーに配置する方法の例が用意されています。 |
プラグインを使用して、特定のLDAP操作が確実に実行され、関連アクションも確実に実行されるようにします。
プラグインは、プログラム本体の文をどのユーザーやLDAPアプリケーションが発行したかに関係なく、その文に対して起動される、一元化されたグローバル操作にのみ使用します。
再帰プラグインは作成しないでください。たとえば、それ自体がldapbind
文を発行するpre_ldap_bind
プラグインを作成すると、リソースが不足するまでこのプラグインが再帰的に実行されるようになります。
プラグインは慎重に使用してください。プラグインは、関連するLDAP操作が発生するたびに実行されます。
プラグイン・フレームワークとは、プラグインを開発、構成および適用する環境です。個々のプラグイン・インスタンスは、プラグイン・モジュールと呼びます。
プラグイン・フレームワークには、次のものが含まれます。
プラグイン構成ツール
プラグイン・モジュール・インタフェース
プラグインLDAP API
PL/SQLパッケージODS.LDAP_PLUGIN
Javaパッケージoracle.ldap.ospf
どちらの言語の場合も、次の一般的手順に従い、サーバー・プラグイン・フレームワークを使用します。
ユーザー定義プラグイン・プロシージャをPL/SQLまたはJavaで作成します。
プラグイン・モジュールをコンパイルします。
コマンドラインまたはOracle Directory Services Managerのいずれかを使用し、構成エントリ・インタフェースを介して、プラグイン・モジュールを登録します。
Oracle Internet Directoryサーバーでは、次のLDAP操作のプラグインをサポートしています。
ldapadd
ldapbind
ldapcompare
ldapdelete
ldapmoddn
(Javaのみ)
ldapmodify
ldapsearch
Oracle Internet Directoryでは、プラグインに対して4つの操作タイミングをサポートしています。
前
後
操作時
操作時置換
これらについては、この後の4項で説明します。
サーバーは、LDAP操作の実行前に、操作前プラグイン・モジュールをコールします。このタイプのプラグインの主な目的は、データがLDAP操作で使用される前に、データを検証することです。
操作前プラグインで例外が発生すると、次のいずれかが発生します。
戻りエラー・コードが警告のステータスを示したとき、関連のLDAPリクエストは続行します。
戻りコードが失敗ステータスを示すと、リクエストは続行されません。
関連のLDAPリクエストが後で失敗すると、ディレクトリではプラグイン・モジュールでコミットされたコードをロールバックしません。
Oracle Internet Directoryサーバーは、LDAP操作の実行後に、操作後プラグイン・モジュールをコールします。このタイプのプラグインの主な目的は、特定のLDAP操作が実行された後に、ファンクションを起動することです。たとえば、ロギングや通知は、操作後プラグイン・ファンクションです。
操作後プラグインで例外が発生すると、関連のLDAP操作はロールバックされません。
関連のLDAPリクエストが失敗しても、操作後プラグインはそのまま実行されます。
ディレクトリは、標準のLDAP操作の実行中に、操作時プラグイン・モジュールをコールします。操作時プラグインは、操作に対するサーバー自身のコードの直前に実行されます。このタイプのプラグインの主な目的は、同じLDAPトランザクション内で既存の操作を強化することです。操作時プラグインが失敗すると、標準のLDAP操作は実行されません。操作時プラグインが正常に完了しても、標準のLDAP操作が失敗すると、プラグインで加えられた変更はロールバックされません。
たとえば、ldapcompare操作とともに操作時プラグインを使用できます。ディレクトリでは、ディレクトリ自身のサーバー比較コードを実行し、プラグイン開発者によって定義されたプラグイン・モジュールを実行します。
PL/SQL操作時プラグインは、ldapadd
、ldapdelete
およびldapmodify
でサポートされています。Java操作時プラグインは、ldapadd
、ldapdelete
、ldapmoddn
、ldapmodify
およびldapsearch
でサポートされています。
操作時置換プラグインは、操作に対するサーバー自身のコードのかわりに実行されます。たとえば、ldapcompare操作とともに操作時置換プラグインを使用できます。ディレクトリでは、ディレクトリ自身の比較コードは実行されません。かわりに、比較の実行はプラグイン・モジュールに任せます。
PL/SQL操作時置換プラグインは、ldapadd
、ldapcompare
、ldapdelete
、ldapmodify
およびldapbind
でのみサポートされています。
Java操作時置換プラグインは、ldapadd、ldapbind、ldapcompare、ldapdelete
、ldapmoddn
、ldapmodify
およびldapsearch
でサポートされています。
レプリケーション環境にプラグインをデプロイする際は注意してください。次のような誤った手法により一貫性のない状態になる場合があります。
他のノードへのプラグイン・メタデータのレプリケート
一部のメンバー・ノードへのプラグインのインストール
ディレクトリ・データに依存する追加チェックのプラグインへの組込み
プラグイン・プログラムまたはLDAP操作別のディレクトリ・エントリの変更
すべてのノードにプラグインをデプロイして、レプリケーションによる変更でプラグインが起動されないように構成した場合は、レプリケーション環境のディレクトリ・エントリを変更するプラグインを使用できます。この手順は次のとおりです。
すべてのノードのレプリカIDをグループに追加します。
プラグイン属性のorclpluginrequestneggroup
値としてグループをインクルードします。次に例を示します。
orclpluginrequestneggroup: cn=pluginNegate,cn=groups,cn=oraclecontext.
変更リクエストがグループcn=pluginNegate
のメンバーから発生していることがプラグインによって検出された場合、常にこのプラグインは起動されません。
次の一般的な手順に従い、サーバー・プラグイン・フレームワークを使用します。
ユーザー定義プラグイン・プロシージャをPL/SQLまたはJavaで作成します。
プラグイン・モジュールをコンパイルします。
コマンドラインまたはOracle Directory Services Managerのいずれかを使用し、構成エントリ・インタフェースを介して、プラグイン・モジュールを登録します。
ディレクトリ・サーバーが適時にプラグインをコールできるように、プラグインをディレクトリ・サーバーに登録する必要があります。登録するには、cn=plugin,cn=subconfigsubentry
の下のディレクトリ・スキーマにプラグインのエントリを作成します。
表43-1に、プラグイン構成で指定できるオブジェクト・クラスおよび属性とその説明を示します。
表43-1 プラグイン構成オブジェクトおよび属性
名前 | 値 | 必須 |
---|---|---|
|
|
◎ |
|
|
× |
|
プラグイン・エントリ識別名 |
◎ |
|
プラグイン・エントリ名 |
◎ |
|
プラグインの実行を制御する、セミコロンで区切られた属性名のリスト。ターゲット属性がリストに含まれている場合は、プラグインが呼び出されます。 |
× |
|
|
× |
|
|
× |
|
|
× |
|
PL/SQLまたはJava(デフォルトはPL/SQL) |
× |
|
次のいずれかの値です。
|
◎ |
|
プラグイン名 |
◎ |
|
カスタム・テキスト情報(Javaのみ)。サブタイプを示すには、 |
× |
|
カスタム・バイナリ情報(Javaのみ)。 |
× |
|
クリアテキストで表示されることのないカスタム・テキスト情報(Javaのみ)。サブタイプを示すには、 ユーザーがこの属性をクリアテキストで取得できないようにするため、Oracle Internet Directoryでは必ずプライバシ・モードを有効にします。『Oracle Fusion Middleware Oracle Internet Directory管理者ガイド』の受信した機密の属性のプライバシに関する項を参照してください。 |
× |
|
セミコロンで区切られたグループ・リストで、プラグインの実行を制御します。このグループを使用して、プラグインを実際に起動するユーザーを指定できます。 たとえば、プラグインの登録時に |
× |
|
セミコロンで区切られたグループ・リストで、プラグインの実行を制御します。このグループを使用して、プラグインを起動できないユーザーを指定できます。たとえば、プラグインの登録時に |
× |
|
LDAPの結果コードを指定する整数値。この値を指定すると、LDAP操作がこの結果コードの状態の場合にのみ、プラグインが起動します。 操作後プラグイン・タイプにのみ有効です。 |
× |
|
ダイナミック・リンク・ライブラリのファイルの位置。この値が存在しない場合、Oracle Internet Directoryサーバーではプラグイン言語はPL/SQLであるとみなされます。 |
× |
|
セミコロンで区切られた識別名のリストで、プラグインの実行を制御します。LDAP操作のターゲット識別名がリストに含まれている場合、プラグインが起動されます。 |
× |
|
次のいずれかの値です。
操作時置換タイミングの場合、 |
× |
|
次のいずれかの値です。
|
◎ |
|
サポート対象のプラグイン・バージョン番号 |
× |
|
この値が1の場合、サーバーではプラグインを起動するたびにプラグイン・クラスをリロードします。この値が0の場合、サーバーでは最初にプラグインを起動したときにのみクラスをロードします。 |
コマンドラインからプラグイン構成エントリを追加するには、プラグイン構成を含むLDIFファイルを作成します。cn=plugin,cn=subconfigsubentry
で識別名を指定します。
次の2つの部分から成るLDIFファイルmy_ldif_file.ldif
は、my_plugin1
という操作ベース・プラグイン用のエントリを作成します。
dn: cn=when_comp,cn=plugin,cn=subconfigsubentry objectclass: orclPluginConfig objectclass: top orclPluginName: my_plugin1 orclPluginType: configuration orclPluginTiming: when orclPluginLDAPOperation: ldapcompare orclPluginEnable: 1 orclPluginVersion: 1.0.1 orclPluginIsReplace: 1 cn: when_comp orclPluginKind: PLSQL orclPluginSubscriberDNList: dc=COM,c=us;dc=us,dc=oracle,dc=com;dc=org,dc=us; o=IMC,c=US orclPluginAttributeList: userpassword
dn: cn=post_mod_plugin, cn=plugin,cn=subconfigsubentry objectclass: orclPluginConfig objectclass: top orclPluginName: my_plugin1 orclPluginType: configuration orclPluginTiming: post orclPluginLDAPOperation: ldapmodify orclPluginEnable: 1 orclPluginVersion: 1.0.1 cn: post_mod_plugin orclPluginKind: PLSQL
このファイルを、次のようなコマンドで、ディレクトリに追加します。
ldapadd -p 3060 -h myhost -D binddn -q -f my_ldif_file.ldif
注意: プラグイン構成エントリはレプリケートされません。レプリケートすると、一貫性のない状態になります。 |
Oracle Directory Services Managerを使用して、プラグインを登録、編集および削除できます。
新しいプラグインを作成する手順は、次のとおりです。
「Oracle Directory Services Managerの起動」の説明に従って、Oracle Directory Services Managerを起動し、Oracle Internet Directoryサーバーに接続します。
タスク選択バーで、「拡張」を選択します。
「プラグイン」を展開します。左側のパネルにエントリが表示されます。
対象のプラグイン管理構成エントリを選択し、有効にします。
「作成」アイコンをクリックします。右側のペインに新規プラグイン・ウィンドウが表示されます。
この時点でプラグインを有効にするには、「プラグイン有効化」を選択します。
「プラグイン名」を入力します。
他の必須プロパティ用の値を選択します。
値を入力した後、「OK」を選択します。作成したプラグインがこの時点でページの左側に表示されます。
プラグインを登録する手順は、次のとおりです。
「Oracle Directory Services Managerの起動」の説明に従って、Oracle Directory Services Managerを起動し、Oracle Internet Directoryサーバーに接続します。
タスク選択バーで、「拡張」を選択します。
「プラグイン」を展開します。左側のパネルにエントリが表示されます。
対象のプラグイン管理構成エントリを選択し、有効にします。右側のペインに「プラグイン管理」タブが表示されます。
「プラグイン有効化」を選択します。
「適用」をクリックします。
値を入力した後、「OK」を選択します。作成したプラグインがこの時点でページの左側に表示されます。
プラグイン・エントリを編集する手順は、次のとおりです。
タスク選択バーで、「拡張」を選択します。
「プラグイン」を展開します。左側のパネルにエントリが表示されます。
対象のプラグイン管理構成エントリを選択し、変更します。
ページの右側の「必須プロパティ」および「オプション・プロパティ」に変更内容を入力します。
「適用」をクリックします。