ヘッダーをスキップ
Oracle Access Managerカスタマイズ・ガイド
10g(10.1.4.2.0)
E05807-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

7 便利なツール

インストール済のOracle Access Managerファイル(パラメータ・ファイルやディレクトリなど)を変更するためのツールが使用可能です。この章では、これらのツールについて説明します。内容は次のとおりです。

7.1 テキスト・エディタ

Oracle Access Managerの動作は、様々なASCIIテキスト・ファイル(特に、*.xmlファイルとも呼ばれるパラメータ・ファイル)の内容によって影響を受けます。これらのファイルは、テキスト・エディタで編集できます。

これらのテキスト・ファイルを編集する際のガイドラインのいくつかを次に示します。

7.2 LDAPツール

ディレクトリ・アプリケーションでは、ディレクトリ内に格納されるデータを作成、変更およびレポートするための標準ツールとしてLightweight Directory Access Protocol(LDAP)が使用されます。LDAPを使用してこのデータの直接操作を比較的簡単に行える特定のツールを使用可能です。

この項では、これらのツールおよびその使用方法について簡単に説明します。詳細な情報(特にこれらのツールのバージョンなど)は、サーバー・アプリケーションの製造会社から入手可能です。

7.2.1 LDIFファイルでのディレクトリ内容の表示

ディレクトリの構造、およびディレクトリに含まれるデータは、LDAP Data Interchange Format(LDIF)ファイルの内容で表されます。LDAPSEARCHなどのLDAPレポート・ツールによってディレクトリに送られたリクエストの書式設定された結果として、このファイルが出力になることがあります。また、LDAPMODIFYなどの更新ツールを使用して、新しいデータまたは既存データの更新としてディレクトリに挿入されるデータの場合、このファイルが入力になることもあります。

次の例は、Oracle Access ManagerのDemoディレクトリから抜粋したLDIFファイルの一部を示しています。

   dn: cn=John Kramer, ou=Sales, o=Company, c=US
objectclass: top
   objectclass: person
   objectclass: organizationalPerson
   objectclass: inetOrgPerson
   objectclass: companyOrgPerson
   cn: John Kramer
   sn: Kramer
   telephonenumber: 415-555-5269
   facsimiletelephonenumber: 415-333-1005
   title: Account Manager
   departmentnumber: 1204
   employeetype: Fulltime
   employeenumber: 521-321-4560
   givenname: John
   .
   .

7.2.2 LDAPSEARCHを使用したディレクトリ内容のレポート

LDAPSEARCHは、ディレクトリ内容をレポートするために使用可能なツールの1つです。他にもツールがありますが、使用する構文は違っても概念は同じです。

LDAPSEARCHは、コマンドライン・モードまたは対話型モードのいずれかで使用できます。コマンドラインではユーザーが入力ファイルによってレポート・リクエストのテキストを指定できるため、コマンドラインのアプローチの方をお薦めします。このファイルの内容は、リクエストを行う前に簡単に検証できます。エラーは、リクエスト全体を再入力しなくても、ファイル内の文字をいくつか変更することで修正できます。対話型モードでは、リクエスト全体を再入力する必要があります。

7.2.3 LDAPSEARCHのコマンドライン形式

LDAPSEARCHのコマンドライン形式は次のとおりです。

  • ldapsearch(params)(filter) (attr_list)

  • イタリックで示された( )内の3つの各カテゴリは、オプションです。すべて省略した場合、LDAPSEARCHは対話型モードに切り替わります。このモードについては、ここでは説明しません。

    各カテゴリの説明は、次のとおりです。

  • params: これらのパラメータは、LDAPSEARCHに動作方法を指示します。そのうちの1つの-fは、フィルタ・ファイルを指定する場合に使用します。コマンドラインで検索フィルタを指定する場合、すべてのパラメータをフィルタより前に指定する必要があります。

  • filter: filterは、本来提供されるデータのうちサブセットのみを提供するようにLDAPSEARCHに指示します。たとえば、Nで始まる名前のみをレポートすることを要求します。コマンドラインで指定するフィルタは、引用符で囲む必要があります。

  • attr_list: 属性のリスト。コマンドラインで指定した場合、デフォルトの属性リストより優先されます。デフォルトのリストには、ディレクトリ・エントリに属するすべての属性(操作属性を除く)が示されます。これらの属性リストの一部のみを表示する場合は、コマンドラインで、属性名、フィルタの順に指定して、これらを空白で区切ります。操作属性を表示する場合は、コマンドラインでその属性名を指定します。操作属性の後に*を指定した場合は、属性のデフォルト・リストも表示されます。

7.2.3.1 LDAPSEARCHコマンドライン・パラメータ

パラメータは、常に次の形式で指定します。

  • -p pdata

    ここで、pはパラメータで、ダッシュの後に指定します。pdataは、パラメータに必要な情報です(ある場合)。データに空白が含まれている場合は、データを二重引用符で完全に囲む必要があります。

  • -p "pdata with spaces"

    次に、一般的に使用されるパラメータをアルファベット順に示します。これ以外のものもあります。使用しているバージョンのLDAPSEARCH用の参照ドキュメントを参照するか、パラメータ/?を使用してパラメータ・リストを参照してください。

    -A: 属性値を除いて属性名のみを取り出すように検索に指示します。

    -b: 検索ベース。検索の開始ポイント。ここには、ディレクトリ内に存在する識別名を指定する必要があります。このパラメータに指定するデータは、二重引用符で囲む必要があります。次に例を示します。

  • -b "cn=Barbara Jensen, ou=Development, o=Oracle.com"

    -D: サーバー管理者の識別名、またはエントリの検索権限のある他のユーザーの識別名。サーバーで匿名アクセスがサポートされている場合、このパラメータはオプションです。次に例を示します。

  • -D "uid=j.smith, o=Oracle.com"

    -f: 検索に使用する検索フィルタが含まれるファイルを指定します。次に例を示します。

  • -f filterfile

    -h: ディレクトリ・サーバーがインストールされているマシンのホスト名またはIPアドレス。このエントリはオプションです。ホスト名を指定しない場合、LDAPSEARCHはローカル・ホストを使用します。次に例を示します。

  • -h myserver.com

    -H: これにより、使用可能なすべてのLDAPSEARCHパラメータのリストが生成されます。

    -p: ディレクトリ・サーバーがリスニングするポート番号。次に例を示します。

  • -p 1049

    -s: 検索の有効範囲。有効範囲に指定するデータは、次のいずれかです。

    base: -bオプションで指定されたエントリのみを検索します。

    one: -bパラメータで指定されたエントリの直属の子のみを検索します。-bパラメータで指定されたエントリ自体は検索しません。

    sub: -bパラメータで指定されたエントリおよびそのすべての子を検索します。つまり、-bパラメータで指定されたポイントからサブツリー検索を実行します。これは、-sパラメータが使用されていない場合のデフォルトです。

    -S: 結果の表示順序を制御するソート基準として使用する属性を指定します。複数の基準でソートする場合は、複数の-S引数を使用できます。デフォルトの動作は、返されたエントリをソートしません。次の例では、検索結果が最初に姓でソートされ、次に姓の中で名前でソートされます。

    -w: -Dオプションで指定された識別名に関連付けられているパスワード。このパラメータを指定しない場合、匿名アクセスが使用されます。次に例を示します。

  • -S sn -S firstname

  • -w password

    -x: 検索結果をクライアント側でなくサーバー側でソートするように指定します。国際的な検索を行う場合のように、一致規則に従ってソートする場合は、このオプションが便利です。通常は、クライアント側でソートするよりもサーバー側でソートする方が高速です。

    -z: 検索リクエストに応答して返されるエントリの最大数を指定します。次に例を示します。

  • -z 1000

7.2.3.2

すべてコマンドラインで、ポート392でリスニングするディレクトリ・サーバーから、営業組織内の名前がJohnの従業員ごとに姓(sn)、一般名(cn)および名前を取得する場合は、次の情報を指定できます。

ldapsearch -p 392 -b "ou=sales, o=company, c=US" -s sub "givenname=John" sn cn givenname

結果は次のようになります。

dn: cn=John Jackson, ou=Sales, o=Company, c=US sn: Jackson cn: John Jackson givenname:
John dn: cn=John Kramer, ou=Sales, o=Company, c=US sn: Kramer cn: John Kramer givenname: John
dn: cn=John Jackson, ou=Sales, o=Company, c=US
sn: Jackson
   cn: John Jackson
   givenname: John
   dn: cn=John Kramer, ou=Sales, o=Company, c=US
   sn: Kramer
   cn: John Kramer
   givenname: John

フィルタ・ファイルを使用しても、同じ結果が得られます。たとえば、次のようなフィルタを含むnamejohnという名前のファイルがあるとします。

givenname=John

コマンドラインで次のように指定して、このファイルを使用できます。

ldapsearch -p 392 -b "ou=sales, o=company, c=US" -s sub -f namejohn sn cn givenname

7.2.4 LDAPMODIFYを使用したディレクトリ内容の変更

LDAPMODIFYは、ディレクトリ内容を変更または追加するために使用可能なツールです。他にもツールがありますが、概念はどれも似ています。

LDAPMODIFYは、ユーザーが入力した識別名とパスワードを使用して、指定されたサーバーへの接続をオープンし、指定されたファイルに含まれているLDIF更新文に基づいてエントリを変更します。また、LDAPMODIFYを対話型モードで実行することもできます。この方法については、ここでは説明しません。

LDAPMODIFYを使用するときにスキーマ・チェックがアクティブになっている場合、サーバーは、ディレクトリへの適用前に、エントリ全体のスキーマ・チェックを実行します。ディレクトリ・サーバーが、スキーマに認識されないエントリ内の属性またはオブジェクト・クラスを検出した場合、変更操作全体が失敗します。また、必須の属性の値が欠落している場合も、変更操作は失敗します。問題のオブジェクト・クラスまたは属性の値が変更されていなくても、失敗が発生します。


注意:

スキーマ・チェックはいつでもオンにしておくことをお薦めします。これは、後で使用できなくなる可能性のあるディレクトリに誤ってデータを追加したり、スキーマ・チェックを再びオンにしたときにスキーマ違反が発生することを避けるためです。スキーマ・チェックは、ディレクトリ管理サーバー・コンソールで制御します。通常はデフォルトでオンになっています。

7.2.4.1 LDAPMODIFYのコマンドライン形式

LDAPMODIFYのコマンドライン形式は次のとおりです。

ldapmodify <params>

注意:

paramsカテゴリはオプションです。これを省略した場合、LDAPMODIFYは対話型モードに切り替わります。このモードについては、ここでは説明しません。

ここで、paramsは、LDAPMODIFYに操作方法を指示するパラメータです。そのうちの1つの-fを使用すると、ディレクトリへの変更内容を記述するファイルを指定できます。

7.2.4.2 LDAPMODIFYコマンドライン・パラメータ

パラメータは、常に次の形式で指定します。

  • -p pdata

    ここで、pはパラメータで、ダッシュの後に指定します。その後に空白が続きます。pdataは、パラメータに必要な情報です(ある場合)。データに空白が含まれている場合は、データを二重引用符で完全に囲む必要があります。

  • -p "pdata with spaces"

    次に、一般的に使用されるパラメータをアルファベット順に示します。これ以外のものもあります。パラメータのリストを表示するには、パラメータ/?を使用します。

    -c: ユーティリティを連続操作モードで強制実行します。エラーはレポートされますが、ユーティリティは変更とともに続行されます。デフォルトでは、エラーのレポート後に終了します。

    -a: LDIFのupdate文changetype:addがなくても、ディレクトリにLDIFエントリを追加できます。対話型モードではこの文が必要です。これにより、エントリをディレクトリに追加する方法が簡単になります。具体的には、LDAPSEARCHによって作成されたファイルや変更されたファイルを直接追加することができます。

    -D: サーバー管理者の識別名、またはディレクトリ・エントリの変更権限のある他のユーザーの識別名。サーバーで匿名アクセスがサポートされている場合、このパラメータはオプションです。次に例を示します。

  • -D "uid=j.smith, o=Oracle.com"

    -f: ディレクトリ変更を定義するために使用するLDIF更新文が含まれたファイルの名前を指定します。次に例を示します。

  • -h mozilla

  • -f changestomake.txt

    -h: ディレクトリ・サーバーがインストールされているマシンのホスト名またはIPアドレス。このエントリはオプションです。ホスト名を指定しない場合、LDAPSEARCHはローカル・ホストを使用します。次に例を示します。

    -H: 使用可能なすべてのLDAPMODIFYパラメータをリストします。

    -p: ディレクトリ・サーバーが使用するポート番号。次に例を示します。

  • -p 1049

    -w: -Dオプションで指定された識別名に関連付けられているパスワード。このパラメータを指定しない場合、匿名アクセスが使用されます。次に例を示します。

  • -w password

7.2.4.3

たとえば、LDAPSEARCHの説明のレポートに基づいて、格納されているJohn Kramerという名前を変更するとします。レポートで返されたデータは次のとおりです。

dn: cn=John Kramer, ou=Sales, o=Company, c=US
   sn: Kramer
      cn: John Kramer
      givenname: John

この出力を使用して、次のような内容の入力ファイルToHarveyを導出できます。

dn: cn=John Kramer, ou=Sales, o=Company, c=US
   changetype:modify
      replace:givenname
      givenname: Harvey

この場合、コマンドラインは次のようになります。

ldapmodify - p 392 -f ToHarvey

今度は、コマンドラインでディレクトリを検索します。

ldapsearch -p 392 -b "ou=sales, o=company, c=US" -s sub "givenname=Harvey" sn cn givenname

レスポンスは次のようになります。

dn: cn=John Kramer, ou=Sales, o=Company, c=US
   sn: Kramer
   cn: John Kramer
   givenname: Harvey

7.3 XML/XSLエディタ

次に、XMLおよびXSLファイルを使用する際に役立つエディタへのリンクをいくつか示します。

7.4 XSL検証

XSLスタイルシートは、本番で使用する前に十分に検証しておくことをお薦めします。フリーウェアのバリデータを次に示します。

この3つのツールではすべて、構文エラーが解析およびチェックされます。構文エラーのリスト表示と特定に関しては、後の2つが優れています。しかし、Oracle Access ManagerのXSLTプロセッサと最も類似しているのは、最初のバリデータです。

7.5 トラブルシューティングの例

アイデンティティ・システムでは、Xalan/Xerces XSLTプロセッサが使用されます。Xalanプロセッサは、組込みXSLTエンジンに比べてはるかに高速です。

たとえば、basic.xslから導出されたテンプレートをカスタムxslStyleFunctions.xslに追加したとします。どちらも、ほぼすべてのカスタマイズ済スタイルシートに含まれているとします。この場合、Xalanによって、oblix:ObScript/oblix:ObValue/を解決できないということを含めて、多数の問題がレポートされることがあります。この結果、空のJavaScriptに次のような内容が挿入されます。

<script="JavaScript" xml:space="preserve"\
</script>
<script="JavaScript" xml:space="preserve"\
</script>
...
<script="JavaScript" xml:space="preserve"\
</script>

XSLT標準では、プロセッサがテンプレートの競合解決を取り扱う方法についての要件は規定されていません。このため、XMLSPYの内部プロセッサはエラーをレポートしません。しかし、Xalanはエラーをレポートし、アイデンティティ・システムはスタイルシート処理エラーを返します。

この場合は、同じ優先順位を共有する同名のテンプレートが複数あったため、競合が発生していました。テンプレートの優先順位については、次の資料が参考になります。

次の2つの手順で、XMLSPY内部のアイデンティティ・システムによってレポートされたXalan固有のスタイルシート処理エラーに関するトラブルシューティングを行うための準備をします。

Windows 2000以上でXalan/XercesとともにXMLSPYを使用する手順

  1. Xalan-C 1.7.0バイナリ・ディストリビューションをダウンロードします。これは、Xerces-C 2.5.0ディストリビューションとの互換性はありません。

  2. Xerces-C 2.4.0バイナリ・ディストリビューションをダウンロードします。

  3. ダウンロードしたアーカイブを解凍します。

    次に例を示します。

    C:\opt

  4. システムPATH変数にナビゲートします。

    次に例を示します。

    「コントロール・パネル」→「システム」→「詳細設定」→「環境変数」→「システム環境変数」→「Path」の順に選択します。

  5. システムPATH変数に次の値を追加します。

    C:\opt\xml-xalan\c\Build\Win32\VC6\Release;C:\opt\xerces-c2_4_0-windows_nt-msvc_60\bin;

  6. 次の説明に従って、外部XSLプロセッサを使用するようにXMLSPYを構成します。

外部XSLプロセッサを使用するようにXMLSPYを構成する手順

  1. 「Tools」メニューから「Options」を選択し、「options」から「XSL」を選択します。

  2. 新しく更新したPATHが使用されるように、XMLSPYを再起動します。

  3. 外部XSL変換プログラムを選択します。

  4. テキスト・ボックスにXalan.exe -o %2 %1 %3と入力します。

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