インストール済のOracle Access Managerファイル(パラメータ・ファイルやディレクトリなど)を変更するためのツールが使用可能です。この章では、これらのツールについて説明します。内容は次のとおりです。
Oracle Access Managerの動作は、様々なASCIIテキスト・ファイル(特に、*.xmlファイルとも呼ばれるパラメータ・ファイル)の内容によって影響を受けます。これらのファイルは、テキスト・エディタで編集できます。
これらのテキスト・ファイルを編集する際のガイドラインのいくつかを次に示します。
必ず、元のファイルはバックアップ・コピーを作成して保存してください。これにより、間違いを起こしたときに元の状態に戻ることができます。
空白行は挿入しないでください。
ファイル内にコメントを挿入しないでください。
元の値がキャッシュされている可能性のある変更済データのリロードを強制実行するには、アイデンティティ・サーバーを停止してから再起動することを覚えておいてください。変更の内容によっては、Webサーバーの再起動も必要です。
目的の変更が反映されていることを確認します。
誤りを見つけやすくするため、可能であれば、変更は1つずつ行ってください。1つずつ行った場合もそうでない場合も、変更した内容と日時を記録しておきます。これにより、ユーザーから問題が報告されたときに、それが構成変更に関連しているかどうかを短時間で突き止めることができます。
非ASCII文字がファイルに挿入されないように、簡易テキスト・エディタ(NTではメモ帳、UNIXではviなど)を使用してください。また、XMLエディタを持っている場合は、XMLエディタを使用すると、XMLファイルの編集時に間違いが起こりにくくなります。一部のXMLエディタでは、ファイルが整形式であるかどうかがチェックされます。
ディレクトリ・アプリケーションでは、ディレクトリ内に格納されるデータを作成、変更およびレポートするための標準ツールとしてLightweight Directory Access Protocol(LDAP)が使用されます。LDAPを使用してこのデータの直接操作を比較的簡単に行える特定のツールを使用可能です。
この項では、これらのツールおよびその使用方法について簡単に説明します。詳細な情報(特にこれらのツールのバージョンなど)は、サーバー・アプリケーションの製造会社から入手可能です。
ディレクトリの構造、およびディレクトリに含まれるデータは、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 . .
LDAPSEARCHは、ディレクトリ内容をレポートするために使用可能なツールの1つです。他にもツールがありますが、使用する構文は違っても概念は同じです。
LDAPSEARCHは、コマンドライン・モードまたは対話型モードのいずれかで使用できます。コマンドラインではユーザーが入力ファイルによってレポート・リクエストのテキストを指定できるため、コマンドラインのアプローチの方をお薦めします。このファイルの内容は、リクエストを行う前に簡単に検証できます。エラーは、リクエスト全体を再入力しなくても、ファイル内の文字をいくつか変更することで修正できます。対話型モードでは、リクエスト全体を再入力する必要があります。
LDAPSEARCHのコマンドライン形式は次のとおりです。
ldapsearch(params)(filter) (attr_list)
イタリックで示された( )内の3つの各カテゴリは、オプションです。すべて省略した場合、LDAPSEARCHは対話型モードに切り替わります。このモードについては、ここでは説明しません。
各カテゴリの説明は、次のとおりです。
params: これらのパラメータは、LDAPSEARCHに動作方法を指示します。そのうちの1つの-fは、フィルタ・ファイルを指定する場合に使用します。コマンドラインで検索フィルタを指定する場合、すべてのパラメータをフィルタより前に指定する必要があります。
filter: filterは、本来提供されるデータのうちサブセットのみを提供するようにLDAPSEARCHに指示します。たとえば、Nで始まる名前のみをレポートすることを要求します。コマンドラインで指定するフィルタは、引用符で囲む必要があります。
attr_list: 属性のリスト。コマンドラインで指定した場合、デフォルトの属性リストより優先されます。デフォルトのリストには、ディレクトリ・エントリに属するすべての属性(操作属性を除く)が示されます。これらの属性リストの一部のみを表示する場合は、コマンドラインで、属性名、フィルタの順に指定して、これらを空白で区切ります。操作属性を表示する場合は、コマンドラインでその属性名を指定します。操作属性の後に*を指定した場合は、属性のデフォルト・リストも表示されます。
パラメータは、常に次の形式で指定します。
-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
すべてコマンドラインで、ポート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
LDAPMODIFYは、ディレクトリ内容を変更または追加するために使用可能なツールです。他にもツールがありますが、概念はどれも似ています。
LDAPMODIFYは、ユーザーが入力した識別名とパスワードを使用して、指定されたサーバーへの接続をオープンし、指定されたファイルに含まれているLDIF更新文に基づいてエントリを変更します。また、LDAPMODIFYを対話型モードで実行することもできます。この方法については、ここでは説明しません。
LDAPMODIFYを使用するときにスキーマ・チェックがアクティブになっている場合、サーバーは、ディレクトリへの適用前に、エントリ全体のスキーマ・チェックを実行します。ディレクトリ・サーバーが、スキーマに認識されないエントリ内の属性またはオブジェクト・クラスを検出した場合、変更操作全体が失敗します。また、必須の属性の値が欠落している場合も、変更操作は失敗します。問題のオブジェクト・クラスまたは属性の値が変更されていなくても、失敗が発生します。
注意: スキーマ・チェックはいつでもオンにしておくことをお薦めします。これは、後で使用できなくなる可能性のあるディレクトリに誤ってデータを追加したり、スキーマ・チェックを再びオンにしたときにスキーマ違反が発生することを避けるためです。スキーマ・チェックは、ディレクトリ管理サーバー・コンソールで制御します。通常はデフォルトでオンになっています。 |
LDAPMODIFYのコマンドライン形式は次のとおりです。
ldapmodify <params>
注意: paramsカテゴリはオプションです。これを省略した場合、LDAPMODIFYは対話型モードに切り替わります。このモードについては、ここでは説明しません。 |
ここで、paramsは、LDAPMODIFYに操作方法を指示するパラメータです。そのうちの1つの-fを使用すると、ディレクトリへの変更内容を記述するファイルを指定できます。
パラメータは、常に次の形式で指定します。
-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
たとえば、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
XSLスタイルシートは、本番で使用する前に十分に検証しておくことをお薦めします。フリーウェアのバリデータを次に示します。
Xalan(testxslt)
http://xml.apache.org/xalan-c/index.html
これには、testxslt、バージョン1.1というバリデータが含まれます。
Saxon
XT
この3つのツールではすべて、構文エラーが解析およびチェックされます。構文エラーのリスト表示と特定に関しては、後の2つが優れています。しかし、Oracle Access ManagerのXSLTプロセッサと最も類似しているのは、最初のバリデータです。
アイデンティティ・システムでは、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はエラーをレポートし、アイデンティティ・システムはスタイルシート処理エラーを返します。
この場合は、同じ優先順位を共有する同名のテンプレートが複数あったため、競合が発生していました。テンプレートの優先順位については、次の資料が参考になります。
http://www.vbip.com/books/1861003323/chapter_3323_09.asp
デフォルトの優先順位は、プロセッサによって特定の基準に基づいて割り当てられます。一部のプロセッサでは、競合するテンプレートのどちらを優先するかを決定するためにスマート・ロジックが適用されます。たとえば、ソース・スタイルシート(wf_create.xslまたはusc_profile.xsl)に近い方のテンプレートを優先する、などです。
次のスタイルを採用すると、テンプレート競合を回避できます。
basic.xsl内のテンプレートに優先順位'1'を追加します。
名前競合の可能性があるxslStyleFunctions.xslテンプレートに優先順位'2'を追加します。
挿入されたxsl内に定義されているテンプレートに対して新たに上書きが行われた場合のために、ソース(最下位)xslに優先順位'3'を追加します。
次の2つの手順で、XMLSPY内部のアイデンティティ・システムによってレポートされたXalan固有のスタイルシート処理エラーに関するトラブルシューティングを行うための準備をします。
Windows 2000以上でXalan/XercesとともにXMLSPYを使用する手順
Xalan-C 1.7.0バイナリ・ディストリビューションをダウンロードします。これは、Xerces-C 2.5.0ディストリビューションとの互換性はありません。
Xerces-C 2.4.0バイナリ・ディストリビューションをダウンロードします。
ダウンロードしたアーカイブを解凍します。
次に例を示します。
C:\opt
システムPATH変数にナビゲートします。
次に例を示します。
「コントロール・パネル」→「システム」→「詳細設定」→「環境変数」→「システム環境変数」→「Path」の順に選択します。
システムPATH変数に次の値を追加します。
C:\opt\xml-xalan\c\Build\Win32\VC6\Release;C:\opt\xerces-c2_4_0-windows_nt-msvc_60\bin;
次の説明に従って、外部XSLプロセッサを使用するようにXMLSPYを構成します。
外部XSLプロセッサを使用するようにXMLSPYを構成する手順
「Tools」メニューから「Options」を選択し、「options」から「XSL」を選択します。
新しく更新したPATHが使用されるように、XMLSPYを再起動します。
外部XSL変換プログラムを選択します。
テキスト・ボックスにXalan.exe -o %2 %1 %3と入力します。
「OK」をクリックします。