Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

CSP ゲートウェイの動作と構成

このトピックでは、CSP ゲートウェイの構成方法と、CSP アプリケーションにおけるその機能の使用方法について説明します。このドキュメントの内容は次のとおりです。

CSP ウェブゲートウェイ管理ページ

CSP ウェブゲートウェイ管理ページを使用すると、CSP ゲートウェイの構成および管理 (動作上のステータスの監視など) が可能です。CSP ウェブゲートウェイ管理ページのメニューで使用できるオプションは、以下の表のとおりです。

メニュー項目 アクション
[システムステータス] アクティブな CSP サーバ接続のステータスを表示します。また、CSP ゲートウェイ・キャッシュをクリアすることもできます。
[接続の終了] すべての Caché サーバまたは指定した Caché サーバ上のすべての接続を閉じます。
[サーバ接続のテスト] ステートレス・セッションを開いて、Caché サーバへの接続をテストします。Caché 側のイベント・ログを表示するオプションもあります。
[イベントログの表示] CSP ゲートウェイのイベント・ログの情報を参照したり、その内容を消去したりすることができます。イベント・ログは Web サーバ・ホストで管理されます。
[HTTP トレースを表示] CSP ゲートウェイで処理された HTTP 要求および応答のインタラクティブ・ビューを表示します。
[既定のパラメータ] 指定した Web サーバで CSP ゲートウェイを構成できます。また、エラーやその他の状態に対する CSP の応答をカスタマイズできます。
[サーバ・アクセス] 特定の Caché サーバへの CSP ゲートウェイのアクセスを構成します。
[アプリケーション・アクセス] アプリケーションのパスに従って、アプリケーションへのアクセスを構成します。ここでいうパスとは、アプリケーションの URL に含まれているパスのことです。
[CSPゲートウェイについて] CSP ゲートウェイのバージョンや、ゲートウェイ構成へのパスを含むホスト Web サーバの環境を示します。

CSP ゲートウェイの構成に関するオンライン・ヘルプである CSP Web ゲートウェイのドキュメントは、管理ポータルの システム, システム管理, 構成, CSPゲートウェイ管理 にある CSP ウェブゲートウェイ管理ページのこのセクションや [ヘルプ] ボタンから利用できます。このページでログインするように求められたら、ユーザ名とパスワードを入力してください (以下を参照)。次に [ヘルプ] を選択します。

既定では、この操作でプライベート Web サーバにアクセスできます。使用しているプロダクション Web サーバの CSP ウェブゲートウェイ管理ページを表示するには、http://localhost:port_no/csp/bin/Systems/Module.cxw などの URL で localhostlocalhost:57772 に置き換えます。

Caché Web サーバの既定のポート番号の詳細は、"Caché 詳細構成設定リファレンス" の "WebServerPort" エントリを参照してください。

CSP ウェブゲートウェイ管理ページへの初回アクセス時には、ユーザ名とパスワードの入力を求められます。 C:\Intersystems\Cache\CSP\bin\CSP.ini ファイルでユーザ名を探します。パスワードは、Caché のインストール時に入力したものです。パスワードを忘れた場合は、“セキュリティ” のセクションを参照してください。

CSP ウェブゲートウェイ管理ページのローカライズ

CSP ウェブゲートウェイ管理ページのローカライズは、インストールされた CSPres.xml があれば、この内容に基づきます。ローカライズ・ファイルが存在しない場合、CSP ウェブゲートウェイ管理ページでは、既定で埋め込み英語テキストが使用されます。ブラウザの言語設定はこのメカニズムに影響しません。

代替言語は、ゲートウェイのホーム・ディレクトリにある適切なテキスト・リソース・ファイル (ファイル名 CSPres.xml) をインストールすることによってサポートできます。 ゲートウェイが起動 (または再起動) されると、CSPres.xml にあるテキスト・リソースがロードされ、管理フォームが選択した言語で表示されます。

CSPres.xml ファイルを作成するには、Caché bin ディレクトリの該当する CSPres_xx.xml ファイルの名前を CSPres.xml に変更します。

例えば、スペイン語に変換するには、以下のようにします。

  1. CSPres_es.xmlCSPres.xml に変更します。

  2. Web サーバを再起動します(言語テキストは指定された Web サーバの CSP モジュールに影響するため。再起動する必要があります)。

英語 (既定) に戻すには、以下のようにします。

  1. CSPres.xmlCSPres_es.xml に戻します。

  2. Web サーバを再起動します。

CSP ウェブゲートウェイ管理ページでのセキュリティの考慮事項

既定では、ゲートウェイのホスト・コンピュータの管理下にあるクライアントのみが CSP ウェブゲートウェイ管理ページにアクセスできます。ブラウザ経由で管理フォームへアクセスする場合、そのブラウザは、Web サーバおよび CSP ゲートウェイと同じマシン上で実行されている必要があります。次に例を示します。

http://localhost:<port_no>/csp/bin/Systems/Module.cxw

承認された管理者のリストにクライアントを追加するには、CSP.ini (C:\Intersystems\Cache\CSP\bin) の SYSTEM セクションにある System_Manager パラメータにクライアントの IP アドレスを追加します。System_Manager パラメータには、CSP ウェブゲートウェイ管理ページへのアクセスを許可するクライアントの IP アドレスをコンマ (,) またはプラス記号 (+) で区切って指定します。以下の指示文は、既定のローカル・アクセスに加え、3 つのリモート・クライアントにアクセスを許可します。

[SYSTEM]
System_Manager=190.8.7.6, 190.8.7.5, 190.8.7.4

ゲートウェイの新規インストールにおいて、対応可能なローカル・ブラウザがない場合は、CSP.ini を編集してこの構成設定を手動で作成します。

CSP.iniSystem_Manager パラメータは、CSP ウェブゲートウェイ管理ページの [デフォルトパラメータ] セクションにある [システム管理マシン] の設定と同じです。[システム管理マシン] パラメータのエントリには、ワイルドカードと数値域を指定できます。

以下の例は、IP アドレスの最後の部分が 4 ~ 6 の数値となることを示しています。

[SYSTEM]
System_Manager=190.8.7.4-6

上記の例は、以下の記述をより簡単にしたものです。

[SYSTEM]
System_Manager=190.8.7.6, 190.8.7.5, 190.8.7.4

以下の例のように、ワイルドカードも使用できます。

[SYSTEM]
System_Manager=190.8.7.*

以下の指示文は、すべてのクライアントにアクセス権を付与します。

[SYSTEM]
System_Manager=*.*.*.*

ただし、オペレーティング・システムでこのような指示文を使用することはお勧めしません。

CSP ウェブゲートウェイ管理ページを保護する手段としてのこの方法にはいくつかの短所があります。この方法では強力なセキュリティを実現できません。Web クライアントをチェックするために、クライアントの IP アドレスが CGI 環境変数 REMOTE_ADDR から取得されます。クライアント IP アドレスはスプーフィングが可能です。

クライアントと Web サーバ/ゲートウェイ間でプロキシを使用すると、事実上すべてのクライアントの IP アドレスがプロキシの IP アドレスに変換されます。この場合、Gateway Systems Manager としてプロキシの IP アドレスを指定して、Systems Manager がプロキシ経由で接続するすべての Web ユーザにアクセス権を付与するようにするか、指定した Systems Manager がプロキシ層を完全にバイパスするように設定する (推奨の設定) 必要があります。

IP 方式は防御の第一段階としては有効ですが、CSP ウェブゲートウェイ管理ページへのアクセスを制御する手段としてはこれだけでは不十分です。明らかに、インターネット経由で利用する CSP には適していません。プロダクション・システムでは、ホスト Web サーバの構成を使用して、ゲートウェイのシステム管理モジュールへのアクセスを制御することをお勧めします。

システム・ステータスの確認

[システムステータス] オプションには、すべてのアクティブな CSP 接続のステータスが表示されます。この機能を使用するには、システム管理者であることが必要です。以下の各表では、列見出しをクリックするとその列を基準にして並べ替えることができます。

最初のテーブル : Caché への接続

最初のステータス・テーブル (Caché への接続) には、Caché への接続に関する情報が表示されます。

アイテム 機能
[接続番号] CSP ゲートウェイが接続に割り当てる番号。可能な接続数は Caché ライセンスで決まります。
[ゲートウェイPID] 接続のゲートウェイ (またはホスト Web サーバ) プロセス ID
[サーバ名] 接続先 Caché システムの名前。ミラー・メンバは、ミラーメンバ名が付加された現在の構成名を示します。
[IP アドレス] Caché システムの IP アドレス。
[TCPポート] 接続が通信に使用する Caché サーバの TCP ポート。既定のポートは 1972 です。
[Caché PID] Caché サーバのプロセス ID。
[状態] 以下のように、Caché システムとの間で情報の送受信が行われているかどうかを示します。Free — 情報は送信されておらず、接続は次の要求を処理する準備をしています。In Use — 情報は接続を介して送信中です。Private — 接続はステート認識 (保持モード 1) であり、一般的な用途には解放されていません。Server — 接続は Caché サーバによって使用されています。
[アクティビティ] この接続で処理したトランザクション (ヒット) 数。
[閉じる] 使用可能な場合、これを選択すると接続を強制的に閉じることができます。
2 番目のテーブル : Caché サーバ

2 番目のステータス・テーブル (Caché サーバ) には、Caché に関する情報が表示されます。

アイテム 機能
[サーバ名] 接続先 Caché システムの名前。
[IP アドレス] Caché システムの IP アドレス。
[TCPポート] 接続が通信に使用する Caché サーバの TCP ポート。既定のポートは 1972 です。
[総接続] Caché システムへの接続数。
[使用中の接続] 現在使用中の (Web 要求を実際に処理している) 接続数。
[プライベート接続] ステート認識セッション (保持モード = 1) として現在使用中の接続数。
[総アクティビティ] Caché システムが処理したトランザクション (ヒット) 数。
[キューイングされた要求] Caché システムへの接続が空くのを待機して、キューに保持されている Web 要求の数。キューイングされた要求は、高いパフォーマンスを維持するために Caché ライセンスを増加する必要があるかどうかを判断する目安になります。
3 番目のテーブル : アプリケーション・パス

3 番目のステータス・テーブルはアプリケーション・パスの情報を表示します。

[パス番号] CSP ゲートウェイがアプリケーション・パスに割り当てる番号。
[パス] アプリケーション・パス。
[サーバ番号] CSP ゲートウェイが Caché サーバに割り当てる番号。
[サーバ名] 接続先 Caché システムの名前。
[アクティビティ] 最後のゲートウェイ以降にこのサーバによって処理されたこのパスの要求数。
[状態] このサーバの状態。DisabledEnabled または Offline のいずれかです。このセットの現在のマスタ・サーバ (またはプライマリ・サーバ) もこの列で示されます。
[アクション] サーバが Offline とマークされている場合、この列には管理者が再度 Online/Enabled とマークできるボタンが含まれます。
[ミラー・ステータス] サーバのミラー・ステータスおよびメンバ・タイプ (フェイルオーバーまたは非同期) を含むミラー構成。適切にプライマリとラベルされます。
4 番目のテーブル : NSD 内部ステータス (該当する場合)

4 番目のステータス・テーブルには、NSD の内部情報が表示されます。このテーブルは、NSD インストール、またはゲートウェイの応答キャッシュ機能を使用するインストールにのみ表示されます。

アイテム 機能
[キューイングされたスレッド] 同時に発生している負荷がゲートウェイ・プロセスで使用可能なスレッド数を超えている場合に、スレッドの解放を待機してキューに保持されている要求数を示します。通常の処理では、報告される値はゼロです。ここで多くのキューイングされたスレッドが常に報告される場合は、NSD に対するプロセスの割り当てを増加することを検討します。
[キャッシュされたフォーム]

ゲートウェイによりキャッシュされた CSP フォームの数。

[キャッシュされたデータ (バイト単位)] ゲートウェイに保持されているキャッシュされたフォーム・データの量 (バイト単位)。
[キャッシュされたフォームのアクティビティ] ゲートウェイ・キャッシュに保持されているフォームのヒット数。
[クリア]

[キャッシュをクリア] (使用可能な場合) : ゲートウェイ・フォームのキャッシュを手動で消去できます。

[クリア] (使用可能な場合) : ゲートウェイ・キャッシュから個々のフォームを手動で消去できます。

[キャッシュ・ブロックの合計] 使用可能なキャッシュ・メモリ・ブロック数の合計
[使用中のキャッシュ・ブロック] 使用中のキャッシュ・メモリ・ブロック数の合計
[更新] ステータス画面を更新します。

キャッシュのクリア

Web アプリケーションの開発プロセスなどの特定の状況では、CSP ゲートウェイ・キャッシュをクリアすることが必要になる場合があります。以下はその方法です。

  1. ウェブゲートウェイ管理のメイン・メニューから、[システムステータス] を選択します。

  2. [システムステータス] ページには、いくつかのテーブルがあります。キャッシュをクリアするには、[キャッシュされたフォーム] テーブルで、[合計] 行 (下の行) の [クリア] 列 (右端列) にあるボタンを選択します。([システムステータス] ページに [キャッシュされたフォーム] テーブルが表示されない場合、現在キャッシュされたコンテンツはありません。これは、キャッシュが最近クリアされ、それ以降何もキャッシュされていないためです。)

このアクションでは、CSP ゲートウェイのキャッシュされたコンテンツをすべてクリアし、コンテンツが新しくキャッシュされるまで、[キャッシュされたフォーム] テーブルをページから削除します。

Note:

アクティビティ中に CSP ゲートウェイ管理自体の範囲を越えてキャッシュをクリアしようとしている場合、ウェブゲートウェイ管理のメイン・メニューにアクセスするには、まず管理ポータルにログインしてから、[ウェブゲートウェイ管理] ページ ([システム管理] > [構成] > [CSP ゲートウェイ管理]) に移動します。

手動による接続の切断

CSP 接続がまだアクティブなときに Caché システムが停止した場合、以下のいずれかの状況になるまで、CSP は引き続きシステムに接続しようとします。

  • システムへの再接続が成功する。

  • CSP が停止する。

  • 手動で接続を閉じる。

長時間にわたる Caché システムのダウンタイムを予定している場合は、以下のオプションから接続を閉じることができます。手動でセッションを閉じるには、以下の手順を実行します。

  1. ウェブゲートウェイ管理のメイン・メニューから、[接続を閉じる] を選択します。

  2. 切断したいサーバを選択します。* (アスタリスク) を選択すると、すべてのサーバへ のすべての接続を閉じることができます。

  3. [接続を閉じる] を選択します。

Caché システムの停止中に接続を閉じることができます。

サーバ接続のテスト

CSP ウェブゲートウェイ管理ページのメニューにある [サーバ接続のテスト] オプションは、Caché システムへの CSP ゲートウェイの接続をテストする際に役立ちます。この機能を使用するには、システム管理者であることが必要です。

CSP 接続をテストするには、以下の手順を実行します。

  1. ウェブゲートウェイ管理のメイン・メニューから、[サーバ接続のテスト] を選択します。

  2. 表示されたリストから、該当する Caché システムを選択します。

  3. Caché サーバ上の CSP エラー・ログを表示するには、[サーバ上のイベントログを参照] を選択します。

  4. [接続] を選択します。

選択した内容とサーバ接続の状態に応じて、以下のいずれかの結果が表示されます。

結果 意味
CSP テスト・フォーム CSP が適切にインストールされ、動作しています。Caché 5.0 (またはそれ以前) のバージョンでは、要求によってサーバに渡された変数 (ユーザ定義の変数と CGI 環境変数) が表示されます。このフォームは、ターゲットの Caché サーバ によって返される基本パラメータ (バージョンおよびプロセス ID) のみを示します。セキュリティ上の理由により、新しい小型の connection worked フォームが導入されました。
サーバ・イベント・ログ [サーバ上のイベントログを参照] を選択した場合、このページが表示されます。
システム可用性エラー Caché が使用できない場合は必ずこのエラーが表示されます。追加のエラー・メッセージがない場合は、Caché システムが稼動しているかどうかを確認します。
サーバは現在使用できません CSP ゲートウェイは、新しい接続の確立を試行中にタイムアウトした可能性があります。
Web サーバからの応答がありません Web サーバが稼動しているかどうかを確認します。稼動している場合、サーバをいったん停止して再起動します。
十分なセッションがありません。サーバへのすべてのチャネルが使用中です。後で試してください 接続の制限に達しているため、実行中の接続の一部を閉じる必要があります。

どのような場合でも、エラー状況が返された場合は、イベント・ログで追加および具体的なエラー情報を確認します。必要に応じ、ログ・レベルを上げて、追加の診断情報を取得することを検討してください。

イベント・ログの参照

メイン・メニューから [イベントログを参照] オプションを使用して、イベント・ログの内容を確認します。

既定では、日毎のログ・エントリ CSP.log の名前は CSP.log.old に変更されます。日付と時刻を使用した名前のファイルのすべてのログを保存するには、[デフォルトパラメータ] ページの[すべてのログ・ファイルを残す] にチェックを付けます。各ログ・エントリには、そのログ・エントリが作成された日付、時刻および追加情報を記録したヘッダ・レコードが表示されています。

以下はその例です。

>>> Time: Wed Jul 26 15:40:57 2006; RT Build: 664.896 (win32/isapi);
Log-Level: 9; Thread-Id: 2236; Connection-No: 0; Server: LOCAL;
Server-PID: 3028; Page: GET /csp/samples/menu.csp 

イベント・ログから現在のすべてのエントリを消去するには、[ログをクリア] を選択します。

ログは日付/時刻の昇順 (既定) または降順で表示できます。 フォームの右上隅にあるハイパーリンクを選択すると表示順が逆になります。 このハイパーリンクには、2 つのモードを切り替える役割があります。

最後に、ほとんどのブラウザでは、1MB ほどを超えるログ・データを 1 つのフォームで表示することはできません。 このため、返されるログ・データの容量が 1MB に達するとゲートウェイは表示を終了し、次ページのデータを表示するようユーザに指示します (フォームの左下隅にある [次] ハイパーリンクを参照)。 また、フォームの右下隅にある [トップ] ハイパーリンクを使用すると、一連のフォームのうち最初のフォームにすばやく戻ることができます。

HTTP トレース機能の使用法

HTTP トレース機能は、ログ・レベル v9 (未処理の HTTP 要求を記録) および v9r (HTTP 要求および応答を記録) で既に収集されているイベント・ログ情報がベースとなります。トレースには [HTTP トレースを表示] オプションからアクセスします。

トレース・ウィンドウは 2 つの主なフレームから構成されています。左側のフレームには、ゲートウェイで処理された HTTP 要求のリストがあり、時刻と (ゲートウェイから割り当てられた) 一意の要求 ID が示されます。それぞれの要求を選択すると、要求および応答データが右側のフレームに表示されます。ハイパーリンクにより、要求メッセージと応答メッセージの表示を簡単に切り替えることができます。

要求のリストは、数秒 (現行では 7 秒) おきに自動的に更新されます。このため、TCPTrace などのプロキシとほぼ同様のリアルタイム監視操作による全体的な効果が得られます。

Note:

ゲートウェイが報告する HTTP 要求ヘッダは再構成されているという点に注意してください。これは、ホスト Web サーバが常に、要求ヘッダを解析する責任を負っているためです。ゲートウェイは Web サーバが提供する CGI 環境変数から完全なヘッダを再構成します。ただし、要求が NSD コンポーネントを介して直接 (つまり、実際には Web サーバをバイパスして) 渡される場合、記録された要求ヘッダは、クライアントからディスパッチされた場合とバイト単位で同じになります。

既定のパラメータの構成

CSP ウェブゲートウェイ管理ページ・メニューの [デフォルトパラメータ] オプションでは、CSP ゲートウェイのグローバルな (システム全体の) 構成パラメータを管理するメカニズムが提供されます。このオプションを使用するには、システム管理者であることが必要です。

特定の Caché サーバへのアクセスを構成する場合、指定していないオプションのパラメータやカスタム・システム・フォームはグローバル構成から自動的に継承されます。例えば、特定のサーバに [サーバ応答タイムアウト] のパラメータを設定していない場合でも、そのサーバはグローバルな [サーバ応答タイムアウト] の設定を継承します。

既定のパラメータは、以下の 3 種類で構成されています。

  1. CSP ゲートウェイ

  2. セキュリティ

  3. Caché への接続

  4. ASP リダイレクト

  5. 内部 HTTP サーバ (NSD ビルドのみ)

  6. カスタム・エラー・メッセージ

CSP ゲートウェイ

このセクションでは、ゲートウェイ全体に対してグローバルに関係するパラメータについて説明します。

インスタンスのホスト名

これは、この CSP ゲートウェイ・インスタンスに対するネットワーク・ホスト名です。このゲートウェイは既定値を生成し、その値はテキスト・ボックスの下に表示されます。このパラメータ値は、システム変数 CSPIHN として、要求データと共に Caché へ送信されます。Caché ベースのソフトウェアはこの値を使用して、ネットワーク経由でゲートウェイにより提供される管理サービスにアクセスします。

このパラメータの形式は server_name:port です。

[最大接続数]

このゲートウェイ・インスタンスで作成可能な Caché への最大接続数。2012.2 より前のバージョンでは、Caché での既定値は HTTP 1.1 の推奨値に準拠し、2 に設定されていました。Cache バージョン 2012.2 以降のバージョンでは、既定値が 6 に設定されます (これは、Internet Explorer 8 などの最新のブラウザで、セッションごとに 6 つの接続が可能なためです)。アプリケーションが使用する接続数が多いほど、この値を増加させることでアプリケーションの応答性を高めることができますが、サーバ・リソースをより使用する結果になる可能性もあります。

[最大接続数] パラメータへの変更は、ゲートウェイ (またはホスト Web サーバ) の再起動後に有効になります。

[最大キャッシュ・サイズ]

CSP の応答データをキャッシュするために確保される共有メモリの最大量。

以下のようにキャッシュ・サイズを指定します。

バイト単位 n
キロバイト単位 nK
メガバイト単位 nM

このパラメータの既定値は 250K です。この値は、CSP/Zen サンプルで使用される静的コンポーネントのキャッシュで通常必要となるメモリ量です。 必要に応じてこの値を増やしたり減らしたりできます。

[最大キャッシュ・サイズ] パラメータへの変更は、ゲートウェイ (またはホスト Web サーバ) の再起動後に有効になります。

[Web サーバ ID クッキー]

Web サーバ ID クッキー (CSPWSERVERID) を抑制します。 以下に設定できます。

  • 有効 (既定)

  • 無効

[Web サーバ ID クッキー] は、ロード・バランサを有効にして、CSP アプリケーションのパッシブなクッキーの親和性を実装するために使用されます。 ただし、このクッキーの自動生成を抑制する方が望ましい場合もあります。 例えば、Web 要求を処理するために他のサーバに透過的に渡すプロキシ・アプリケーションなどがあります。

Web サーバ ID クッキーは、静的と見なされるリソース (イメージおよび JS ファイルなど) を返す場合は送信されません。 このコンテキストでは、静的ファイルには、Web サーバ ID クッキーが付随しない Cache により生成されたすべての応答が含まれます。 このルールの例外は、アプリケーションがセッション・クッキーを使用しないよう構成されている場合です。 この場合、Web サーバ ID クッキーはすべての応答に含められます (以前と同じ)。

セキュリティ

ここでユーザ名とパスワードを定義しておくと、すべてのシステム管理者は CSP ウェブゲートウェイ管理ページにアクセスする際に、このユーザ名とパスワードを入力する必要があります。

パスワードを忘れた場合は、ゲートウェイの構成ファイル CSP.ini を手動で編集して、SYSTEM セクションから Username パラメータと Password パラメータを削除します。これで、ユーザ名とパスワードなしで CSP ウェブゲートウェイ管理ページにアクセスでき、必要に応じて新しいユーザ名とパスワードを入力できます。

[SYSTEM]
Username=cm
Password=1Bx4tt88mttAWaf7isJg3Urqc2zE

以下の CSP セキュリティ・パラメータを構成できます。

[このフォームにアクセス]

このオプションを使用して、CSP ウェブゲートウェイ管理ページへのアクセスを有効または無効にすることができます。既定は [有効] です。アクセスが [無効] である場合、CSP ウェブゲートウェイ管理ページを使用して、アクセスを再度有効にすることはできません。アクセスを再度有効化するには、構成ファイル CSP.ini を手動で編集します。このファイルの SYSTEM セクションで、SM_Forms パラメータを Enabled に設定します。

[SYSTEM]
SM_Forms=Enabled

[ユーザ名]

CSP ウェブゲートウェイ管理ページへのアクセスに必要なユーザ名です。

[パスワード]

CSP ウェブゲートウェイ管理ページへのアクセスに必要なパスワードです。

[パスワード (確認)]

パスワードを修正する場合、ここで新しいパスワードを確認入力します。

[セッション・タイムアウト]

アクティブなシステム管理セッションがログオン状態になっているアイドル時間 (秒)。この時間が経過すると、管理セッションの有効期限が切れ、管理者は CSP ウェブゲートウェイ管理ページから自動的にログアウトします。

[システム管理マシン]

これらのシステム管理オプションにアクセスできるクライアント・マシンの IP アドレスのリストを定義します。システム管理者のアクセス権を持つクライアントは、CSP システムへのアクセスの追加や削除、構成ファイル内の設定の変更、およびアクティブなセッションを閉じる操作が可能です。各アドレスは、コンマまたはプラス記号で区切ります。以下の例では、2 つのクライアントにシステム管理者のアクセス権があります。

127.0.0.1, 45.123.231.12

このフィールドを定義しない場合、CSP ゲートウェイと同じマシンで動作しているクライアント (Web サーバのホスト) のみが CSP を構成できます。

このフィールドには、[ユーザ名とパスワードをオーバーライド] というチェック・ボックスも用意されています。チェック・ボックスにチェックを付けると、リストされているクライアント・マシンから管理フォームにアクセスするときにユーザ名やパスワードを入力しなくても済むようになります。

カスタム・ログイン・フォーム

ゲートウェイ管理スイートへのアクセスを制御するカスタム・ログイン・フォームを定義します。このパラメータは、物理ファイルまたはフォームを処理するホスト Web サーバを有効にするリンクへのフル・パスにすることができます。

例 :

 C:\Inetpub\wwwroot\login.html
 /login.html    

物理ファイル名が指定されている場合、ゲートウェイはフォームを取得してクライアントに送信します。 そうでない場合、'HTTP リダイレクト' 応答ヘッダを送信して、クライアントがホスト Web サーバから直接フォームを要求できるようにします。 カスタム・フォームでゲートウェイ管理者がログインするには、HTTP POST 要求を実装する必要があります。

必須フォーム・フィールドは以下のとおりです。

<FORM METHOD=POST ACTION="/csp/bin/Systems/Module.cxw">
<INPUT TYPE=HIDDEN NAME="CSPSYS" VALUE="17">
<INPUT TYPE=HIDDEN NAME="CSPSYSsmSection" VALUE="SYSTEM">
<INPUT TYPE=TEXT NAME="CSPUNM" SIZE='20' VALUE="">  
<INPUT TYPE=PASSWORD NAME="CSPPWD" SIZE='20' VALUE=""> 
<INPUT TYPE=SUBMIT NAME="CSPSYSbOK" VALUE="Login"> 

ここで、CSPUNM はユーザ名で、CSPPWD はパスワードです。 ログイン (送信) ボタン (上記で 'Login' として表示) に割り当てられるテキストは変更可能です。

単純ですが完全な例を以下に示します。

<html>
<head>
<title>CSP Gateway Management</title>
</head>
<h2>CSP Gateway Management</h2>
<FORM METHOD=POST ACTION="/csp/bin/Systems/Module.cxw">
<INPUT TYPE=HIDDEN NAME="CSPSYS" VALUE="17">
<INPUT TYPE=HIDDEN NAME="CSPSYSsmSection" VALUE="SYSTEM">
<BR>
Username: 
<INPUT TYPE=TEXT NAME="CSPUNM" SIZE='20' VALUE="">
<BR>
Password:
<INPUT TYPE=PASSWORD NAME="CSPPWD" SIZE='20' VALUE="">
<BR>
<INPUT TYPE=SUBMIT NAME="CSPSYSbOK" VALUE="Login">
</form>
</html>

Caché への接続

このセクションでは、Caché への接続の維持に関連するパラメータについて説明します。

[サーバ応答タイムアウト]

ターゲットの Caché サーバが Web サーバからの要求に応答できるまでの最大許容時間 (秒)。タイムアウトとは、アクティビティのない時間のことです。例えば、HTML データの行を毎秒 10 時間送信していれば、タイムアウトは発生しません。このフィールドに入力できる最小値は 5 秒です。

ここで設定した値がシステムの既定値です。継承値が指定されていない場合、値は [デフォルトパラメータ] ページから取られます。ただし、サーバ固有の構成またはアプリケーション自体で別の値を設定できます。

Apache サーバがある場合は、Apache http.conf ファイルの Timeout を使用してこの値を設定できますので注意してください。これら 2 つのうち値の低い方が最初にトリガされます。

[キューイングされたリクエストのタイムアウト]

要求が、該当する Caché システムへの使用可能な接続をキュー内で待機できる最大時間 (秒)。入力できる最小値は 5 秒です。 継承値が指定されていない場合、値は [デフォルトパラメータ] ページから取られます。

[無使用タイムアウト]

このパラメータが該当するのはステートレス接続のみです。このパラメータは、ステートレス接続が開いたままのアイドル状態から閉じるまでの最大時間 (秒) を示します。このタイムアウトを超えると、セッションは自動的に閉じます。この機能を使用すると、Caché サーバにステートレス・セッションが蓄積されません。特に、負荷の増加に対応するために多数の接続が開かれた高アクティビティ期間の後でも、ステートレス・セッションが蓄積されません。この値を指定しない場合は、手動で閉じるまでステートレス接続は開いたままです。 継承値が指定されていない場合、値は [デフォルトパラメータ] ページから取られます。

[すべての接続にタイムアウトを適用]

[無使用タイムアウト] オプションを (最小の接続プール構成を含む) すべての接続に適用します。 このオプションにチェックを付けていない場合、ゲートウェイは [無使用タイムアウト] を最小の接続プール ([サーバ接続最小数] パラメータにて定義) に適用しません。 このオプションにチェックを付けている場合、ゲートウェイはタイムアウトをプールの接続すべてに適用します。 このオプションは、CSP の使用率がきわめて低いインストール環境で使用するものであり、その結果として、すべての CSP プロセスでタイムアウトよりもこのオプションが優先します。 継承値が指定されていない場合、値は [デフォルトパラメータ] ページから取られます。

[イベントログレベル]

イベント・ログに書き込まれる情報を制御します。詳細は、“イベント・ログ・パラメータ” のセクションを参照してください。

[イベントログファイル]

イベント・ログ・ファイル (CSP.log) の場所を指定します。指定しない場合、ログはゲートウェイのインストール環境をホストするディレクトリに書き込まれます。例えば、以下のようになります。

CSP.log に代替の場所を指定するには :

/opt/logfiles/cspgateway/

イベント・ログの代替位置およびファイル名を指定するには :

/opt/logfiles/cspgateway/event_log_01012006.log

[すべてのログ・ファイルを残す]

既定では、Caché は、CSP.log ファイルを CSP.log.old という名前のファイルにコピーします。 その後のログのローテーションによって、CSP.log.old は、イベント・ログの現在の内容に上書きされます。すべてのログ・ファイルを残すには、このように毎日上書きする代わりに、[すべてのログ・ファイルを残す] にチェックを付けます。このオプションを有効にすると、日々のログは、CSP_YYYYMMDD_hhmm.log のように日付と時刻を使用した名前が付けられます。

[イベント・ログのローテーション・サイズ]

このパラメータには、ログのローテーションが開始されるサイズを定義します。既定値は空白です。これは実際には、ゲートウェイが 1 つのログ・ファイルを管理し、管理者がそのファイルを手動で消去するまでファイルのサイズが増えることを意味します。

バイト単位 n
キロバイト単位 nK
メガバイト単位 nM

指定可能な最小サイズは 100K です。この値は、管理者が管理スイートでこれよりも低い値を設定しようとすると自動的に設定されます。

ローテーションされたログ・ファイルのコピーは、保持される場合、ローテーションの日付と時刻に応じて以下のように名前が付けられます。

CSP_YYYYMMDD_hhmm.log

YYYY
MM
DD その月の日
hh その日の時間
mm その時間を経過した分

以下はその例です。

CSP_20090109_1830.log (Log rotated at 18:30 on 9th January 2009)

保持されないローテーションされたログ・ファイルには、CSP.log.old という名前が付けられます。

この機能を使用するには、ゲートウェイ・バイナリ (つまり、メインのログ・ファイルが格納されている場所) をホストするディレクトリに対するゲートウェイの作成/書き込みアクセス権が必要です。 ゲートウェイが正常にローテーションを実行できない場合は、その理由にかかわらず、現行のログ・ファイルである CSP.log に対して書き込みが続けられます。

このフィールドには、[すべてのログ・ファイルを残す] というチェック・ボックスも用意されています。このチェック・ボックスにチェックを付けると、前述した名前付け方式に従ってすべてのログ・ファイルを保存するようゲートウェイに指示されます。 そうでない場合、CSP.log.old という名前の 1 つのローテーションされたファイルが保存されます。

[SSL/TLS ライブラリ・パス]

OpenSSL ライブラリ (libssl.so および libcrypto.so) へのパスを指定します。既定の位置をゲートウェイに対して設定して、そのホーム・ディレクトリにてこれらのライブラリをローカルに参照します。詳細は、このドキュメントの “erberos ライブラリ” セクションの “SSL を使用する場合のライブラリ・パスのオーバーライド” を参照してください。

[保持モード除外ファイルの種類]

静的ファイルがステート認識アプリケーションで非同期に処理されるようにします。 ステートレス・アプリケーションでは、静的 (cspclscsr、および zen 以外のファイル) はメイン・セッションに対して非同期に処理されます。 つまり、これらのファイルの要求はセッション・ロックをバイパスして、アプリケーションのメイン処理ストリームの外部で同時に処理できます。

このパラメータにより、この方式がステート認識アプリケーションにも拡張されます。 ステート認識アプリケーションは、従来のセッション・ロックだけでなく、CSP ゲートウェイ内の接続ロックの対象にもなります。 接続ロックは、ユーザ/セッションに対するすべての要求が、同じ Cache プロセスに確実にルーティングされるようにします。 Cache から処理される静的コンポーネントに依存するアプリケーションの場合、これによって過剰な要求がキューイングされ、結果としてブラウザの動作が不安定になる (停止など) 場合があります。

このパラメータを使用して、ファイルの種類 (拡張子ごと) のスペースで区切られたリストを定義し、非同期の処理を可能にして、ゲートウェイおよび Cache において接続/セッション・ロックから除外されるようにします。リストに *- (アスタリスクとハイフン) の接頭語が付けられている場合、以下のリストで定義されたものを除くすべてのファイルが非同期で処理されます。

Preserve Mode Exclude File Types=gif jpg jpeg  

ステート認識セッションに対して GIF、JPG、および JPEG の種類のファイルを非同期で処理します。

Preserve Mode Exclude File Types=*- csp cls csr zen  

ステート認識セッションに対して、CSP、CLS、CSR、および ZEN の種類を除くすべてのファイルを非同期で処理します。 なお、これはステートレス・アプリケーションに対して CSP エンジンで適用されるルールです。

このメカニズムは、ゲートウェイ・ログ・レベル 4 (v4) を使用して監視できます。 要求に対して起動されると、以下に示すようなレコードがログに追加されます。

 >>> Time: Fri Oct 04 14:56:40 2013 ...GET /csp/samples/zenutils.js       
     State-Aware Session (preserve == 1)     
     Process this request concurrently in the pool of state-less connections (File Type=js)

ASP リダイレクト

[ウェブドキュメントルート]

Web サーバのドキュメント・ルート・ディレクトリの完全な物理パスです。例えば、Microsoft IIS Web サーバの場合、このパスは通常 c:\InetPub\wwwroot となります。このパラメータは、CSP 内でこの機能を使用して、Microsoft ASP エンジンを介して CSP 出力を送信し、最後のページを表示する場合にのみ必要です。

[ASP一時ディレクトリ]

CSP ゲートウェイが Microsoft ASP のコンテンツを一時的に格納できるディレクトリの完全な物理パスです。このパラメータは、CSP 内でこの機能を使用して、Microsoft ASP エンジンを介して CSP 出力を送信し、最後のページを表示する場合にのみ必要です。

[内部HTTPサーバ]

このセクションは NSD にのみ関連します。

このセクションには、以下のパラメータが含まれます。

[サービス状態]

HTTP サーバは、[有効] または [無効] のいずれかに設定できます。以下のどちらかを選択します。

  • 有効

  • 無効

既定は [有効] です。

NSD が未処理の HTTP 要求に応答できるようにする場合を除き、セキュリティの面ではこの機能を無効にすることをお勧めします。

[NSDドキュメントルート]

NSD 自体をスタンドアロンの Web サーバとして使用する場合、このパラメータは Web ドキュメント・ルートの完全な物理パスを定義します。

以下はその例です。

/opt/cspgateway/home/

このサーバを使用して CSP アプリケーションを処理する場合は、ブローカ・コンポーネントを以下にインストールする必要があります。

/opt/cspgateway/home/broker/

CSP サンプルのサポートに使用する静的ファイルは以下のとおりです。

/opt/cspgateway/home/samples/

管理ポータルのサポートに使用する静的ファイルは以下のとおりです。

/opt/cspgateway/home/sys/

カスタム・エラー・ページ

グローバルな構成画面の [エラーページ] セクションでは、CSP ゲートウェイのエラー・メッセージとシステム応答をカスタマイズできます。グローバルに設定できるほか、Caché サーバごとに設定することもできます。既定の CSP 応答をカスタマイズするには、以下の手順を実行します。

  1. ウェブゲートウェイ管理のメイン・メニューから、[デフォルトパラメータ] を選択します。

  2. [エラーページ] セクションで、対応するゲートウェイのページを置き換える Web Application agent の名前を入力します。Web Application agent の完全な物理パスを入力するか、CSP ゲートウェイのパスを基準とする相対パスを入力します。

  3. [設定を保存] を選択します。

カスタマイズできる CSP ゲートウェイのシステム応答は以下のとおりです。

[サーバエラー]

CSP ゲートウェイに内部エラーが発生した場合に表示されるページ。例えば、Caché サーバとの通信に問題があるとエラーが発生します。特定のエラーは CSP ゲートウェイのイベント・ログに必ず記録されます。

[サーバビジー]

使用可能な CSP 接続がすべて使用中の場合に表示されるページ。

[サーバが利用可能でありません]

Caché サーバ (またはアプリケーション) が、構成内で故意に無効にされている場合に表示されるページ。

[サーバタイムアウト]

要求がタイムアウトしたときに表示されるページ。

[接続が閉じられました]

ステート認識セッションからログアウトした場合に表示されるページ。

イベント・ログ・パラメータ

[イベントログレベル] フィールドでは、CSP ゲートウェイによってイベント・ログに書き込まれる情報を制御できます。ログ・オプションは文字列として定義され、各文字がログ・コマンドを表します。ここで [イベントログレベル] に設定した値はシステム (すべての Caché サーバ) の既定値になりますが、Caché サーバごとに異なる値を設定できます。

CSP ゲートウェイは、CSP.log という名前のシリアル・ファイルにイベント・ログを書き込みます。このファイルは、CSP ゲートウェイの実行時モジュールと同じディレクトリに配置されています。CSP ウェブゲートウェイ管理ページのメニューから、イベント・ログを参照または消去できます。ログ・パラメータは、主にトラブルシューティングに使用します。以下の表は、ログ・オプションをまとめたものです。これらは、大文字または小文字のどちらで記述してもかまいません。

ログ・オプション 機能
E すべてのエラーを記録します。接続の失敗を監視できます。
V Verbose : CSP ゲートウェイと Caché システム間の基本的な接続ダイアログを記録します。このオプションを使用して、CSP ゲートウェイと Caché サーバ間の通信に存在する重要なポイントを記録します。このコマンドには 7 つのレベル (1 ~ 7) があります。これらのレベルごとに、詳細情報が記録されます。レベルは累積されます。例えば、レベル V3 には、V1 および V2 に指定したすべてのログ情報が含まれます。
EV 基本的なイベント・ログを有効にするには EV と入力します。ログのレベルが高くなるほど、ログ・ファイルには大量のデータが生成されます。したがって、レベルの高いログは問題を診断する場合にのみ使用してください。プロダクション・システムの場合、ログのレベルを EV より低く設定することをお勧めします。
V1 V と同じです。
V2 上記のレベルに指定した情報のほかに、以下の情報を記録します。
  • CSP ゲートウェイと Caché 間の基本的な接続管理に関する情報 (接続ごとの開始ポイントおよび終了ポイント)。

  • ブラウザから受信した送信の中断。

  • (Caché からの応答がない、またはその他のエラーが原因で接続が回復できないために) Caché への接続が強制的に切断された場合

  • ステート認識 (保持モード 1) セッションでのアクセス違反 (無効なセッション ID など)。

V3 上記のレベルに指定した情報のほかに、Caché ヘッダおよび HTTP ヘッダの情報を記録します。
V4 上記のレベルに指定した情報のほかに、ステート認識セッションのシリアル化に関する情報を記録します。
V5 将来の使用のために予約されています。
V6 上記のレベルに指定した情報のほかに、以下の情報を記録します。
  • Caché に送信するデータ・ブロックのヘッダ。

  • Web サーバからの要求データ (マルチパートの添付を除く)。

  • Caché から受信したデータ・ブロックのヘッダ。

V7 上記のレベルに指定した情報のほかに、Caché から返されたフル・コンテキストを記録します。
V9 着信 HTTP 要求データを記録します。HTTP ヘッダと送信された内容 (該当する場合) が記録されます(レベル 1 ~ 7 の情報は記録しません)。このログ指示文は、さらに拡張し、改善することができます。
  • v9r : HTTP 要求すべてのログに加えて、HTTP 応答すべてを記録します。

  • v9a : ゲートウェイのホーム・ディレクトリで http.log に HTTP 要求をすべて記録します。

  • v9b : セッションごとに HTTP 要求をすべて記録します。ログ・ファイルは、http[session_id].log の形式で、ゲートウェイのホーム・ディレクトリに作成されます。ここで、session_id は 10 バイトのセッション ID です。

  • v9m : ゲートウェイのホーム・ディレクトリにマルチパート・ポストをすべてログします。未処理の着信 HTTP 要求は、個々のコンポーネントと共に、暗号化された形式と解読された形式の両方で記録されます。

s

セッション : セッション・トークンの管理に関する以下の情報を記録します。

  • 新しいセッション ID が割り当てられるポイント。

  • 既存のセッションについて : セッション・トークンが cookie と形式/URL 変数 CSPCHD のどちらから抽出されたものかを示します。

  • すべての要求について : Caché に送信される最終セッション ID。

c

接続 : Kerberos ライブラリを使用して作成された接続に関する情報を記録します (CCONNECT)。

呼び出された CCONNECT 関数すべて、その入力パラメータ、および結果を記録するようにゲートウェイに指示します。簡潔にするため、Caché との間の入力および出力バッファの内容はこのレベルでは記録されません。CCONNECT 関数の呼び出しに加えて、入力および出力バッファの内容を記録するには、ログ・レベル C (大文字の C) を設定します。

t 送信 : 未処理のデータ・バッファの内容を Caché への送信時に記録します。ログレベルをさらに T (大文字の T) に上げると、未処理の応答バッファも取得されるようになります。出力できない文字はすべて、エスケープされた形式で記録されます。
p[n]

パフォーマンス : CSP インストールのパフォーマンスを評価するための情報を取得するようにゲートウェイに指示します。

n に指定した秒数 (サービス時間の合計) を下回ると、要求に対するデータは記録されません。例えば、指示文 p ではすべての要求のデータが記録されますが、p2 ではサービス時間が 2 秒を超える要求のデータが記録されます。

記録される情報は以下のとおりです。

  • 要求にサービスを提供した総時間 : 要求にサービスを提供するために費やされた時間の合計 (要求がゲートウェイに到着してから、応答データの最後のバイトがゲートウェイ環境を離れるまでの時間)。

  • Caché への [新規] 接続を取得 : 要求がゲートウェイに到着してから、要求にサービスを提供するために予約されていた Caché に接続するまでにかかった時間。記録されたメッセージは、(再使用されている既存の接続に対して) この時間中に新しい接続が作成されたかどうかを示します。

  • Caché に要求を送信 : 要求データの先頭バイトを Web サーバから読み取り、最終バイトを Caché に送信するまでにかかった時間。

  • Caché で要求を処理 : 要求データの最終バイトを Caché に送信してから、応答データの先頭バイトがゲートウェイで受信されるまでにかかった時間。

  • Caché から応答を受信 : 応答データの先頭バイトを Caché から受信してから、最終バイトを Web サーバに送信するまでにかかった時間。

pp[n]

詳細の時間計測情報を以下に示します。

  • 要求の前処理 : 対象 Cache サーバの特定にかかった時間。Web サーバからの初期受け渡しおよびサーバを特定するための基本的な要求処理を含みます。

  • Cache への [新規] 接続を取得 : 接続を適切な Cache サーバに割り当てるまでにかかった時間。 (既存の接続の再使用ではなく) 新しい接続が作成されたかどうかを示します。

  • 要求をフォーマット : Cache に送信する要求メッセージの解析およびフォーマットにかかった時間。

  • Cache に要求を送信 : 要求データの先頭バイトを Web サーバから読み取り、最終バイトを Cache に送信するまでにかかった時間。

  • Cache で要求を処理 : 要求データの最終バイトを Cache に送信してから、応答データの先頭バイトがゲートウェイで受信されるまでにかかった時間。

  • 応答の後処理 (b) : Content-Length ヘッダが必要な場合、Web サーバを介して応答データをクライアントに送信して戻すまでにかかった時間が報告されます。

  • 応答の後処理 (c) : 応答を送信してから、Cache からの応答フッタのデータをゲートウェイが読み取る準備が完了するまでにかかった時間。 フッタのデータは、ゲートウェイと Cache の間の内部通信プロトコルの一部であり、制御情報 (セッションの保持設定を変更する命令など) を含みます。

  • Cache からフッタを受信 : Cache から応答フッタのデータを受信するまでにかかった時間。

  • フッタの後処理 : フッタのデータを処理し、受信した命令に応答するまでにかかった時間。

  • Cache への接続を解放 : アクティブな接続を Cache に解放するまでにかかった時間。

  • クリーンアップ : 要求にサービスを提供する際に使用したリソースを解放し、ホスト Web サーバに制御を返すまでにかかった時間。

サーバ・アクセスの構成

[サーバ接続] オプションでは、以下が可能です。

  • 指定した Caché サーバに対する CSP ゲートウェイのアクセスを構成します。

  • 構成したサーバのエントリを別の名前にコピーします。これは新しいサーバを簡単に追加する方法です。

  • 構成した Caché サーバへのアクセスを無効にする。

  • 構成したサーバ・エントリを削除する。

  • 新しいサーバを追加する。

CSP ゲートウェイからアクセスする各 Caché システムをここで定義する必要があります。指定していないオプションのパラメータやカスタム・システム・フォームは、CSP ゲートウェイのグローバル構成から自動的に継承されます。

サーバ構成の追加

Caché サーバへのアクセスを構成するには、以下の手順を実行します。

  1. ウェブゲートウェイ管理のメイン・メニューから、[サーバ接続] を選択します。

  2. [サーバ追加] を選択します。2 番目の構成画面が表示されます。多くのパラメータ・フィールドには既定の設定が入力されています。

  3. [サーバ名] テキスト・ボックスに、一意のわかりやすいサーバの名前を入力します。この論理名は、CSP 構成ファイルでサーバ構成を識別するために使用されます。

  4. このサーバ構成のシステム・パラメータ (以下を参照) を入力します。

  5. [設定を保存] を選択します。

[サーバ接続]

サーバ構成の基本的なパラメータは以下のとおりです。

サーバ構成のパラメータ 機能
[サーバ名] CSP 構成ファイルでこのサーバ構成を識別するための論理名。
[サービス状態] この構成を有効および無効にすることができます (既定は [有効])。
[IP アドレス] 接続先の Caché サーバの IP アドレス (物理アドレスまたは仮想アドレス)。
[スーパーサーバの TCP ポート] Caché サーバが着信接続を待ち受ける TCP ポート番号。Caché スーパーサーバの TCP ポート番号であり、通常は 1972 です。
[構成はミラーを認識する]

ミラー・プライマリをミラーリングされるデータベースにアクセスするためのサーバとして構成します。 フェイルオーバーまたは災害復旧では、接続がリダイレクトされます。既定では、選択されていません。

注意: ミラー VIP を構成している場合、ミラー認識 CSP ゲートウェイを構成しないでください。構成すると、ゲートウェイは VIP を無視します。その代わりに、CSP ゲートウェイをそれ以外のクライアントのように VIP に接続するように構成してください。一般に、ミラー認識 CSP ゲートウェイの使用は、特殊な場合にのみ適しています。

構成するには、フェイルオーバー・メンバのいずれかの IP アドレスを入力します。 ゲートウェイは、このフェイルオーバー・メンバから、ミラーにあるフェイルオーバー・メンバおよび災害復旧 (DR) 非同期メンバのリストを取得し、このリストに基づいて現在のプライマリに接続します (構成されている場合でも、VIP に接続しません)。プライマリが見つかるまで、CSP 接続は失敗します。

接続が確立されると、ミラーがフェイルオーバーする場合、ゲートウェイは接続を新しいプライマリに変更します。プライマリがフェイルオーバー・メンバの中にない場合、ゲートウェイはリスト内の DR 非同期の中から見つけようとします。その場合、災害復旧の状況で DR 非同期がプライマリに昇格されると、ゲートウェイは接続を再確立できます。

詳細は、"Caché 高可用性ガイド" の “ミラーリング” の章にある “フェイルオーバーまたは災害復旧後のアプリケーション接続のリダイレクト” を参照してください。

状態なしパラメータ

ステートレス接続に関連するパラメータは以下のとおりです。

状態なしパラメータ 機能
[サーバ接続最小数] CSP ゲートウェイは、プロセスとの親和性を提供します。つまり、可能であれば、前回の要求を処理したときと同じ Caché プロセスとのセッションに必ず再接続しようとします。このパラメータは、多くのクライアント間で接続を共有する前に、CSP ゲートウェイが Caché サーバに対して行う接続の最小数を指定します。この数が多いほど、プロセスとの親和性の効果が高くなります。
[サーバ接続最大数] ゲートウェイが Caché サーバに対して行うことができる、接続の絶対最大数です。同時使用数がこの数を超えると、CSP ゲートウェイは要求のキューイングを開始します。Caché 接続が要求を処理できるようになるまで、または [キューイングされたリクエストのタイムアウト] を超えるまで、要求はキューに維持されます。
[セッションあたりの最大接続数] このパラメータは、個々のセッションが同時に使用可能な Caché への最大接続数を表します。
[接続セキュリティ]

ゲートウェイが Caché サーバにアクセスするために必要な接続セキュリティ設定です。これらのパラメータの詳細は、以下のセクションで説明します。接続セキュリティに関連するパラメータは以下のとおりです。

接続セキュリティのパラメータ 機能
接続セキュリティ・レベル Caché サーバへの接続に必要なセキュリティのレベルです。以下のいずれかのオプションを選択します。
  • [パスワード]

  • [Kerberos]

  • [Kerberosパケット整合性]

  • [Kerberos暗号化]

  • SSL

[ユーザ名] CSP ゲートウェイから Caché サーバへの接続に必要なユーザ名です。
[パスワード] CSP ゲートウェイから Caché サーバへの接続に必要なパスワードです。
[パスワード (確認)] 新しいパスワードを作成する場合、そのパスワードを再入力して確認します。
[製品] 接続するプロダクトです (Caché または Ensemble)。
[サービス・プリンシパル名] サービス・プリンシパル名です。[生成] ボタンは、ターゲットの Caché サーバに関して既定の名前を作成するために用意されています。
[キーテーブル] キー・テーブル・ファイルのフル・パスです。
SSL パラメータ

以下のパラメータは、SSL を使用してゲートウェイと Caché 間の接続をセキュリティ保護するインストールにのみ関連します。

SSL パラメータ 機能
[SSL プロトコル]

使用する SSL/TLS プロトコルのバージョンです。以下のオプションが用意されています。

  • SSLv2

  • SSLv3

  • TLSv1

  • TLSv1.1

  • TLSv1.2

既定の TLS プロトコルは、TLSv1+TLSv1.1+TLSv1.2 です。CipherList の既定は以下のとおりです。“ALL:!aNULL:!eNULL:!SSLv"

[SSL キー・タイプ]

SSL キー・ファイルのタイプです (その生成に使用するアルゴリズムに基づきます)。 以下のオプションが用意されています。

  • DSA — Digital Signature Algorithm

  • RSA — Rivest、Shamir、Adelman (アルゴリズム開発者の名前)

既定は [DSA] です。

[相手証明書認証の要求] チェックを付けると、このインストールに対して相手証明書認証が必要になります。
[SSL 証明書ファイル]

ゲートウェイの SSL/TLS 証明書ファイルへのフル・パスです。例 : C:\InterSystems\certificates\clicert.pem

[SSL 証明書キー・ファイル]

ゲートウェイの SSL/TLS 証明書に関連付けられた秘密鍵へのフル・パスです。例 : C:\InterSystems\certificates\clikey.pem

[SSL CA 認証ファイル]

ゲートウェイの証明書用の認証機関 (CA) の証明書へのフル・パスです。例 : C:\InterSystems\certificates\cacert.pem

[SSL秘密鍵パスワード] SSL 秘密鍵のパスワードです。
[オプションパラメータ]

オプション・パラメータの詳細は、“既定のパラメータの構成” セクションを参照してください。これらのパラメータが空白の場合、その値は CSP ゲートウェイのグローバル構成から継承されます。これについては、“Caché への接続” セクションに説明があります。

[エラーページ]

[エラーページ] のパラメータを使用すると、CSP ゲートウェイの応答をカスタマイズできます。指定しない場合、パラメータはグローバル構成から継承されます。各パラメータの詳細は、“カスタム・エラー・メッセージ” のセクションを参照してください。

サーバ構成のコピー

新しいサーバを簡単に構成するには、既存のサーバの構成エントリをコピーします。コピーした場合、両方の構成エントリはサーバ名を除いて同一になります。2 番目の構成を編集して、変更できます (IP アドレスの変更など)。

この機能は、構成を適切に調整する場合にも有用です。サーバの一時的な構成を別に作成することで、元の構成を失うことなくパラメータの変更をテストできます。

既存のサーバ構成をコピーするには、以下の手順を実行します。

  1. ウェブゲートウェイ管理のメイン・メニューから、[サーバ接続] を選択します。

  2. [サーバ接続] 画面で、既存のサーバ名を選択します。

  3. [サーバコピー] オプションを選択します。

  4. [実行] を選択します。2 番目の構成画面が表示されます。

  5. [サーバ名] テキスト・ボックスに、新しいサーバにつける一意のわかりやすい名前を入力します。

  6. [設定を保存] を選択します。

構成したサーバへのアクセスの無効化

この機能を使用すると、ユーザは、構成した Caché サーバにこのゲートウェイを介してアクセスできなくなります。

サーバへのアクセスを無効にするには、以下の手順を実行します。

  1. ウェブゲートウェイ管理のメイン・メニューから、[サーバ接続] を選択します。

  2. [サーバ接続] 画面で、既存のサーバ名を選択します。

  3. [サーバ編集] オプションを選択します。

  4. [実行] を選択します。サーバの構成画面が表示されます。

  5. [サービス状態] パラメータで、[無効] を選択します。

  6. [設定を保存] を選択します。

アクセスを再度有効にするには、上記の手順を繰り返して、手順 5 で [有効] を選択します。

サーバ構成の削除

構成したサーバを削除するには、以下の手順を実行します。

  1. ウェブゲートウェイ管理のメイン・メニューから、[サーバ接続] を選択します。

  2. [サーバ接続] 画面で、サーバ名を選択します。

  3. [サーバ削除] オプションを選択します。

  4. [実行] を選択します。

アプリケーション・アクセスの構成

アプリケーション・アクセスの構成のオプションを使用すると、以下が可能です。

  • CSP アプリケーションへのパスを構成します。

  • アプリケーション・パスを別のパスにコピーします。これは新しいアプリケーション・パスを追加する簡単な方法です。

  • アプリケーション・パスへのアクセスを無効化します。

  • アプリケーション・パスを削除します。

  • 新しいアプリケーション・パスを追加します。

CSP アプリケーションごとに、CSP ファイルへのパスを構成する必要があります。各パスの構成によって、アプリケーションの実行を扱う Caché サーバが識別されます。フェイルオーバーや負荷分散を指定するオプションの指示文を、アプリケーション・パスの構成で指定します。既定のアプリケーション・パス、root (/) は、CSP ゲートウェイを初めて起動するときに自動的に構成されます。継承がアプリケーション・パスに適用されます。例えば、CSP 要求が /Accounts/Invoices 内のファイルを要求したとき、/Accounts/Invoices の構成が存在しない場合、CSP ゲートウェイは /Accounts に定義された構成を使用します。これが定義されていない場合は、既定のパスである / に対する構成が使用されます。

アプリケーション・パスの追加

アプリケーションへのパスを構成するには、以下の手順を実行します。

  1. ウェブゲートウェイ管理ページで [アプリケーション・アクセス] を選択します。

  2. [アプリケーション追加] を選択します。多くのパラメータには既定の設定が入力されています。

  3. [アプリケーションパス] テキスト・ボックスに、アプリケーションの一意のパスを入力します。このパスは、アプリケーションの URL に表示されるパスです。

    Note:

    Caché インストールにより、新しい /csp 構成が作成されます。/csp をアプリケーションとして構成した場合、Caché の新しいビルドをインストールすると、その構成は上書きされます。アプリケーション構成を維持するには、/csp 以外のパスを入力します。

    /csp/myapplication のように /csp にあるディレクトリであればどれでもかまいませんが、パスの指定にドット (ピリオド) は使用できません。ドットを使用すると、CSP ゲートウェイであいまいさが発生します。/csp/samples/menu.csp/csp/aaa/bbb/ccc.cls を例として考えると、CSP ゲートウェイでは、これを /csp/samples/menu.csp/csp/aaa/bbb/ccc.cls への要求とも、/csp/samples/menu.csp への REST 要求 (この場合、/csp/aaa/bbb/ccc.cls が PATH_INFO) とも解釈できます。 Web サーバ環境で動作しているゲートウェイには、このようなあいまいさを解決する手段がありません。

    CSP は、大文字と小文字を区別します。CSP を構成している場合、整合性を確保しながらパス名を指定してください。

  4. このアプリケーションで使用されるもう 1 つの構成パスとサーバ・パラメータ (下の表を参照) を入力します。

  5. 入力を終えたら、[設定を保存] を選択します。アプリケーション構成に加える変更は、そのアプリケーション・パスに対して新しいユーザ・セッションが作成されると有効になります。既存のユーザへの影響はありません。

アプリケーション・パスの構成パラメータ

基本パラメータは以下のとおりです。

パラメータ 機能
[サービス状態] アプリケーションのパスを使用して、アプリケーションへのアクセスを有効および無効にします (既定は [有効])。
[ウェブサーバ物理パス] Web サーバ上の対応するディレクトリのパスです。この設定は、構成した各パスを、Web サーバ構成の仮想ディレクトリとして設定する必要がある Microsoft IIS システムでは特に重要です。IIS 内で定義される各仮想ディレクトリに、物理パスを関連付ける必要があります。IIS 用のこの追加構成手順の目的は、CSP によって使用されるパスが、実行許可で定義できるようにすることです。既定では、実行が拒否される (CSP にアクセスする) ようになっています。
[追加のCGI環境変数] 要求が行われるたびに Caché 環境に返される、追加の CGI 環境変数のコンマ区切りリストです。共通で使用される CGI 環境変数は、要求が行われるたびに自動的に送信されます。ワイルドカード文字 (*) を入力すると、要求があるたびに、Web サーバから提供されるすべての環境変数が CSP ゲートウェイから Caché サーバに送信されるようになります。
[処理クラス] 指定したクラスでこのパス内のファイルを処理します。これにより、専用の要求ハンドラを CSP に構築できます。例えば、WebDAV クラスを作成して、それをここで定義することで、専用の WebDAV サーバを構築できます。この機能を使用する WebLink エミュレーション・クラス %CSP.WebLink があります。
[GZIP圧縮] このパスで返されるすべての CSP ページの GZIP 圧縮を有効または無効にします (既定は [無効])。(OpenVMS では使用できません。)
[GZIP 最小ファイル・サイズ] GZIP 圧縮が呼び出される最小応答サイズ。単位はバイトです。既定は 500 バイトです。
[GZIP 除外ファイルの種類]

GZIP 圧縮の除外対象とするファイルの種類のリストです。 除外対象とするファイルは、MIME タイプ (image/jpeg など) または一般的な拡張子 (jpegなど) を使用してリストできます。

既定では、これらの一般的な (標準で圧縮されている) イメージ・ファイルは除外されます。GZIP Exclude File Types: jpeg gif ico png gz zip mp3 mp4 tiff

追加の種類または拡張子をスペースで区切ります。

[応答サイズの通知]

このパラメータでは、それぞれの応答に含まれるデータの量をクライアントに通知するときにゲートウェイで使用されるメソッドの制御を構成できます。

HTTP キープアライブ接続が使用されている場合、通常、Web クライアントには応答サイズを通知する何らかのフォームが必要になります。このような状況では、HTTP v1.1 が使用されている場合、ゲートウェイは既定でチャンク転送エンコーディングを使用します。 これよりも前の HTTP プロトコルが使用されている場合は、Caché からの応答データはバッファされ、代わりに Content-Length ヘッダが生成されます。 また、全体の応答が 1 つの出力バッファに収まる場合には、チャンク転送を使用する代わりに Content-Length ヘッダが生成されます。

どちらのメソッドを使用するかを具体的にゲートウェイに指示するほうが望ましい場合もあります。 例えば、HTTP v1.1 が使用されているにもかかわらず、媒体 (プロキシなど) がチャンク転送を適切にサポートできない場合です。 また、すべての Web クライアントで、いずれのフォームのサイズ通知も送信しない (応答のターミネータとして 接続の切断 イベントが使用される場合など) ようにできる必要がありますが、適切な方法としては、すべての応答に何らかのフォームのサイズ通知を付随させることをお勧めします。 実際に、一部のクライアントにはこの方法が必要になります。

以下のオプションが用意されています。

  • チャンク転送エンコーディングと Content-Length (既定)

  • チャンク転送エンコーディング

  • Content-Length

このパラメータには、キープアライブを使用するかどうかにかかわらず、常にすべての要求に対してサイズ通知を生成するようゲートウェイに指示するためのチェック・ボックスが用意されています。

[キープアライブ] このパスの HTTP [キープアライブ] 接続を有効または無効にします。既定値は [アクションなし] です。この場合、[キープアライブ] ステータスは、各要求の HTTP 応答ヘッダにより決定されます。
[非解析ヘッダ] このパスの [非解析ヘッダ] プロトコルを有効または無効にします。既定値は [有効] です。この場合、HTTP 応答ヘッダはクライアントに直接返送されます。このプロパティが無効化されている場合、応答ヘッダはホスト Web サーバに返送されます。これにより、ヘッダを解析し、指定されている出力フィルタがあれば、それを呼び出す機会が Web サーバに与えられます (例 : Apache グループの mod_deflate 機能)。
サーバ・パラメータ

アプリケーションに対して使用する Caché サーバと、それらの使用目的のリストを定義できます。 既定のサーバは、リストで最初に指定されるサーバです。

パラメータ 機能
サーバ

リストされている最初のサーバは、既定の Caché サーバです。これが最初に使用されます。失敗すると、チェックが付いているオプションに応じて、リストされている他のサーバを使用できます。これには以下の 3 つのオプションがあります。

  • [負荷分散とフェイルオーバーを使用する]。最初のサーバで障害が発生した場合、フェイルオーバーまたは負荷分散のいずれかとして構成されているサーバを使用します。

  • [フェイルオーバーを使用する]。最初のサーバが失敗した (使用不能になった) 場合に、代替を使用します。

  • [最初のサーバのみを使用する] リスト内の最初のサーバのみを使用します。どのような状況でも他のサーバを使用しません。

[サーバの数] : サーバのリスト。構成画面には、常に 3 つのサーバ・スロットのみが表示されていますが、任意の数の代替サーバを定義できます。各サーバに [有効] または [無効] としてチェックを付けることができます。既定では、常に [有効] です。詳細は、このドキュメントの “負荷分散とフェイルオーバー” のセクションを参照してください。

アプリケーション・パス構成のコピー

新しいアプリケーション・パスを簡単に構成するには、既存のパスの構成エントリをコピーして編集します。

この機能は、構成を適切に調整する場合にも有用です。アプリケーション・パスの一時的な構成を別に作成することにより、元の構成を失うことなくパラメータの変更をテストできます。

既存のアプリケーション・パス構成をコピーするには、以下の手順を実行します。

  1. ウェブゲートウェイ管理のメイン・メニューから、[アプリケーション・アクセス] を選択します。

  2. [アプリケーション・アクセス] の画面で、既存のアプリケーション・パスを選択します。

  3. [アプリケーションコピー] を選択します。

  4. [実行] を選択します。

  5. [アプリケーションパス] テキスト・ボックスに、新しい一意のアプリケーション・パスを入力します。

  6. [設定を保存] を選択します。新しいアプリケーション構成は、新しいユーザ・セッションが新しいアプリケーション・パスに対して作成されると有効になります。既存のユーザへの影響はありません。

アプリケーション・パスによるアクセスの無効化

この機能を使用すると、ユーザは構成したアプリケーションにこのゲートウェイを介してアクセスできなくなります。

アプリケーション・パスを介したアクセスを無効にするには、以下の手順を実行します。

  1. ウェブゲートウェイ管理のメイン・メニューから、[アプリケーション・アクセス] を選択します。

  2. [アプリケーション・アクセス] の画面で、アプリケーション・パスを選択します。

  3. [アプリケーション編集] を選択します。

  4. [実行] を選択します。アプリケーション・パスの構成画面が表示されます。

  5. [サービス状態] パラメータで、[無効] を選択します。

  6. [設定を保存] を選択します。

アクセスを再度有効にするには、上記の手順を繰り返して、手順 5 で [有効] を選択します。

アプリケーション・パス構成の削除

構成したアプリケーション・パスを削除するには、以下の手順を実行します。

  1. ウェブゲートウェイ管理のメイン・メニューから、[アプリケーション・アクセス] を選択します。

  2. [アプリケーション・アクセス] の画面で、アプリケーション・パスを選択します。

  3. [アプリケーション削除] オプションを選択します。

  4. [実行] を選択します。

[CSPゲートウェイについて] ページ

このページには、CSP ウェブゲートウェイ管理ページが表示されます。この情報には、Caché ディストリビューションのバージョン、ゲートウェイのビルド番号、ホスト Web サーバのバージョン、アクティブ・インターフェース、ゲートウェイ構成ファイル (CSP.ini) の名前と場所、およびイベント・ログの場所が含まれています。

以下はその例です。

Version: 2016.2.1.803.0 
Gateway Build: 1602.1573d
Web Server Name: localhost 
Web Server Type: Apache Web Server: Apache/2.4.10 (win32) Cache_Server_Pages-Apache_Module/2016.2.1.803.0-1602.1573d 
Active Interface: Apache Module 
Configuration: C:InterSystems/HealthShare_2/CSP/bin/CSP.ini
Event Log: C:?InterSystems/HealthShare_2/CSP/bin/CSP.log

CSP ゲートウェイのビルド番号

ゲートウェイのビルド番号は、2 つの数値要素から構成されます。最初の数値は、Caché のバージョンを示しています。2 番目の数値は、ゲートウェイの内部ビルド番号です。

例えば、文字列 1602 は、バージョン 2016.2 を表します。

CSP ゲートウェイとセキュリティ

このセクションでは、CSP ゲートウェイと Caché のセキュリティ機能との関係について説明します。CSP 認証の詳細は、ドキュメント "Caché セキュリティ管理ガイド" の "認証" の章を参照してください。

Caché へのゲートウェイ接続は、以下のセキュリティ・レベルに応じて保護できます。

  1. 最小の接続セキュリティ (ゲートウェイおよび Caché が初期バージョンの場合)

  2. ユーザ名ベースおよびパスワード・ベースの単純な認証

  3. Kerberos ベース認証とデータの保護

  4. SSL/TSL ベース認証とデータの保護

ここで適用されるセキュリティは、Caché サーバに対してゲートウェイのホストを認証する目的のみで使用されることに注意してください。CSP エンジン (%cspServer) に対し、承認されていない接続が生成されないように保護します。ただし、CSP アプリケーションの個々のユーザは識別されません。ユーザのログイン機能が CSP アプリケーション自体に用意されている場合に、CSP アプリケーションのユーザを確実に識別できます。例えば、管理ポータルにログオンしているシステム管理者の場合、管理ポータルのログイン・フォームに入力したユーザ名とパスワードによってのみ識別できます。

Web のステートレスな特性も、念頭に置く必要があります。Caché へのゲートウェイ接続と、Web アプリケーションの個々のユーザとの間には、固定された関係が存在しません。多くのユーザが同じ接続を共有します。

接続時に Caché に対して CSP ゲートウェイを認証することは重要です。攻撃者が CSP ゲートウェイになりすますことができると、その攻撃者は、技術的な手段またはソーシャル・エンジニアリング、およびその両方を使用して自分の制御下に置いたシステムでトラフィックをリダイレクトし、データを自由に読み取り、変更できるようになります。これは、CSP アプリケーションに対する個人ユーザの認証とは異なります。CSP ゲートウェイの Caché のユーザ名およびパスワード、Windows ネットワークの資格情報、および UNIX® Kerberos キー・テーブルのいずれも、通常のユーザが使用しないようにする必要があります。

ゲートウェイのセキュリティ・パラメータ

CSP ウェブゲートウェイ管理アプリケーションを使用して、以下のセキュリティ・パラメータを管理することができます。[構成] セクションで [サーバ接続] を選択し、サーバの編集、コピー、または追加を選択します。[接続セキュリティ] セクションでは、以下の設定ができます。

  • [接続セキュリティレベル]:選択肢は以下のとおりです。

    • [パスワード]

    • [Kerberos]

    • [Kerberosパケット整合性]

    • [Kerberos暗号化]

    • SSL

  • [ユーザ名]

  • [パスワード]

  • [製品]:選択肢は以下のとおりです。

    • [Caché]

    • [Ensemble]

  • [サービス・プリンシパル名]

  • [キーテーブル]

最小の接続セキュリティ

最小の接続セキュリティでは、[接続セキュリティレベル] が [パスワード] に設定され、[ユーザ名] フィールドおよび [パスワード] フィールドは空欄のままです。

このモードでは、ゲートウェイと Caché 間の接続に対して最小レベルのセキュリティが適用されます。この処理モードは、ゲートウェイの以前のバージョンを使用する場合 (追加のセキュリティ・パラメータがないインストール) の既定のシナリオです。比較的新しいバージョンのゲートウェイを使用して以前のバージョンの Caché (5.1 より前) に接続する場合の処理モードでもあります。

この処理モードの場合、CSP サービス (%Service_CSP) と、そのサービスが機能するユーザ名 (CSPSystem など) が、任意の形式の認証を要求していないかどうかを確認します。

ユーザ名ベースおよびパスワード・ベースの単純な認証

ユーザ名およびパスワードがベースの認証では、[接続セキュリティレベル] は [パスワード] に設定され、[ユーザ名] フィールドおよび [パスワード] フィールドが適用されます。

これは、ゲートウェイと Caché 間に適用できる最も簡単な認証形式です。

Caché のパスワードは、Caché で認証するプレーン・テキストとしてネットワーク上に送信されるので、セキュリティの面で脆弱な形式の認証であることに注意してください。簡単に実行可能なネットワーク・スニッフィングによって、これらのパスワードが盗まれる可能性があります。この構成オプションで使用するパスワードは、以下のガイドラインに従って、ゲートウェイの構成ファイル (CSP.ini) で保持する必要があります。

どのような場合でも、CSP ゲートウェイに使用する既定のユーザ名とパスワードは以下のようになります。インストール・プロセスでは、この目的のために CSPSystem ユーザが作成されます。このユーザ (CSPSystem またはその他のユーザ) には、有効期限を設定する必要はありません。つまり、有効期限プロパティの値は 0 になります。

Username: CSPSystem
Password: SYS
Windows

パスワードは、Microsoft のデータ保護 API (DPAPI) で提供される機能によって暗号化されます。このパスワードの暗号化は、CSP ウェブゲートウェイ管理ページで処理されます。

Note:

通常の Windows のユーザ・アカウントには Administrators グループのメンバシップが付与されていることがあるため、Windows ではパスワードを暗号化する形式が使用されています。ただし、これはプロダクション・システムで推奨される方法ではありません。パスワードを暗号化すると、Windows のすべてのインストールに、より高いレベルの保護が提供されます。

Web ゲートウェイ管理ページのコンテキスト以外でパスワードを扱うことが必要になる場合もあります。例えば、Web ゲートウェイ構成がカスタム構成スクリプトによって設定されている場合などです。この場合、パスワードをプレーン・テキストとして保存しておくと、Web ゲートウェイを初めて起動したときにこのパスワードが暗号化されます。

Web ゲートウェイをホストしている Web サーバは、暗号化の基礎となる使用可能なユーザ・プロファイルがない保護された環境内で稼動するため、ユーザ・ストアではなくマシン・ストアを使用する必要があります。したがって、他のコンピュータで暗号化された Web ゲートウェイ・パスワードを解読することはできません。これによって、CSP.ini ファイルが共有ドライブに配置され、複数の関係するコンピュータ間で共有されるクラスタ環境の状況が作り出されます。実際にパスワード暗号化を行うコンピュータのみが、これを解読できます。暗号化されたパスワードを含む CSP.ini ファイルを別のコンピュータに移動することはできません。パスワードは、新しいマシンで再入力および再暗号化される必要があります。

この問題に対して考えられるアプローチを以下に示します。

  • クラスタ外のマシンを Web サーバとして使用する。

  • フェイルオーバーするたびに、Web ゲートウェイで同じパスワードを再設定する。

  • そのクラスタに属していないディスクに Web ゲートウェイ構成ファイル (CSP.ini) のコピーをそれぞれ独自に持つように、クラスタに属する各コンピュータを構成する。Caché が、Web ゲートウェイの DLL をホストするディレクトリにファイルを保持する。個々のコンピュータそれぞれにパスワードを保存し、暗号化したうえで、ノードをクラスタに導入する。

    例えば、各マシンの Disk C がクラスタに属さず、Caché が Disk S にインストールされている場合は、次のようになります。

    CLUNODE-1CLUNODE-1 で暗号化したパスワード XXX を記述した C:\INSTANCEDIR\CSP\bin\CSP.ini

    CLUNODE-2CLUNODE-2 で暗号化したパスワード XXX を記述した C:\INSTANCEDIR\CSP\bin\CSP.ini

  • Web ゲートウェイを起動してパスワードを追加する前に、以下の指示文を CSP.ini ファイルに手動で追加することによって、パスワードの暗号化を無効にする。

           [SYSTEM]
           DPAPI=Disabled
    
UNIX®

パスワードは、プレーン・テキストとして CSP.ini に格納されています。ゲートウェイ (またはホスト Web サーバ) を操作するアカウントに構成ファイルの所有者を設定することで、構成ファイルへのアクセスを保護する必要があります。アクセス・モードを 600 に設定します。

OpenVMS

パスワードは、プレーン・テキストとして CSP.ini に格納されています。ゲートウェイ (またはホスト Web サーバ) を操作するアカウントに構成ファイルの所有者を設定することで、構成ファイルへのアクセスを保護する必要があります。ファイル保護は、(s:rwed, o:rwed, g:, w:) に設定します。

Kerberos ベース認証とデータ保護

Kerberos ベース認証とデータ保護では、[接続セキュリティレベル] パラメータによって 3 種類の認証レベル (およびデータ保護) が提供されます。

  1. Kerberos : 接続に対する初期の認証のみを提供します。

  2. Kerberos パケット整合性 : 初期の認証を提供し、データ・パケットの整合性を保証します。

  3. Kerberos 暗号化 : 最高レベルのセキュリティです。初期の認証、データ・パケットの整合性の保証、および送信されるすべてのメッセージの暗号化を行います。

Kerberos ライブラリ

Kerberos ベースのいずれかのモードを使用する場合、ゲートウェイは次の InterSystems Kerberos クライアント・ライブラリをロードする必要があります。

  • Windows DLL : cconnect.dll

  • UNIX® 共有オブジェクト : cconnect.so

  • OpenVMS 共有可能イメージ : CCONNECT.EXE

オペレーティング・システムの PATH 環境変数に指定した場所、またはゲートウェイのインストール場所を基準にした以下のいずれかの場所に、適切なライブラリをインストールします。

  • . (ゲートウェイのローカル)

  • ./bin

  • ../bin

  • ../../bin

ゲートウェイはライブラリが初めて必要なときにそれをロードしようとします。ロードが成功すると、ステータス・メッセージ「CSP Gateway Initialization The CCONNECT library is loaded - Version: 5.3.0.175.0. (This library is used for the optional Kerberos-based security between the Gateway and Caché)」がイベント・ログに書き込まれます。

ゲートウェイが cconnect ライブラリを見つけられない場合や、リンクできない場合は、失敗を示す適切な説明やエラー・メッセージがイベント・ログに書き込まれます。

ゲートウェイと Caché 間の通信が Kerberos で保護されている場合は、ゲートウェイが Kerberos クライアントになります。

Kerberos を使用するようにゲートウェイを構成する手順については、以下の “Windows” および “UNIX および OpenVMS” の 2 つのセクションで説明します。

SSL を使用する場合のライブラリ・パスのオーバーライド

既定のゲートウェイでは、そのホーム・ディレクトリ (つまり、ゲートウェイ・バイナリを保持するディレクトリ) に依存セキュリティ・ライブラリ (共有オブジェクト) がインストールされることを想定しています。

ゲートウェイと Caché 間で SSL 接続を使用する場合、これらのライブラリとして CCONNECT ライブラリおよび SSL/TLS ライブラリ (libssl.solibcrypto.so) があります。ゲートウェイおよび Web サーバの処理領域にロードされた CCONNECT ライブラリが SSL ライブラリのコピーをロードする場合、ホスト Web サーバによって以前にロードされた同じライブラリの異なるバージョン間で競合が発生します。SSL ライブラリの 1 つのコピーだけが Web サーバの処理領域にロードされるようにするには、ゲートウェイが CCONNECT ライブラリに対して、ホスト Web サーバで使用されているものと同じ場所から SSL ライブラリをロードするように指示する必要があります。

そのためには、ゲートウェイの構成ファイル (CSP.ini) の SYSTEM セクションで CCONNECT_LIBRARY_PATH パラメータを使用して、SSL ライブラリのパスを指定します。 このパラメータを変更したら、ホスト Web サーバを再起動してください。以下はその例です。

[SYSTEM] 
CCONNECT_LIBRARY_PATH=/lib/amd64/  

Windows

Windows の場合、Kerberos キー・テーブルは実装されません。したがって、ホスト・サービスが指定のアカウントで開始したときに取得されるネットワーク資格情報、またはホスト・サービスをシステム・ログオン・セッションで (LOCAL SYSTEM として) 実行するときに Trusted Computing Base (TCB) から取得されるネットワーク資格情報が認証で使用されます。

Windows のドメイン・アカウントは、パスワードから派生した永続キーを使用して、ローカル・マシン用の Kerberos Ticket Granting Ticket (TGT) およびサービス・チケットを取得します。ローカル・マシンにも、ドメイン・コントローラの Key Distribution Centre (KDC) コンポーネントとの間で共有される永続 Kerberos キーが必要です。このキーを使用して、Caché などの別の Kerberos プリンシパルに対して認証を行うための TGT やサービス・チケットを取得できます。

実際に、Windows ベースの Web サーバ内で実行するゲートウェイは、ネットワーク・サービス・ログオン・セッションまたはシステム・ログオン・セッションによって動作しています。使用するアカウントには、バッチ・ジョブとしてログオンする権利を割り当てる必要があります。

組み込みネットワーク・サービス・ログオン・セッションは、マシンの資格情報にアクセスできます。このセッションは、その他のマシンに対して認証を行うためにネットワーク資格情報を必要とするサービス用に設計されています。ただし、ネットワーク・サービス・ログオン・セッションは常に存在するわけではありません。Caché に対してゲートウェイを認証する目的でシステム・ログオン・セッションを使用することもできます。

IIS インストール (特に ISAPI 拡張) の場合、ネットワーク・サービス・ログオン・セッションを使用して両方のデータベース (ローカルおよびリモート) とリモート・コンピュータにアクセスするのが望ましい方法です。

ゲートウェイ構成

[サービス・プリンシパル名] を、ゲートウェイの接続先であるターゲットの Caché サーバ名に設定します。[ユーザ名][パスワード]、および [キーテーブル] の各フィールドは、空欄にしておきます。

クライアント・プリンシパル名 (クライアント・ユーザ名) は、ゲートウェイ・ホストの名前です。これは、ゲートウェイ・ホストのネットワーク・サービス・セッションを表す、次の Kerberos 名です。

<computer_name>$

このプリンシパルに Caché サーバで必要な特権を割り当て、ゲートウェイのサービスが動作するようにします。

UNIX® および OpenVMS

これらのオペレーティング・システムは、Kerberos キー・テーブルをサポートします。概念的には、これらのシステムのゲートウェイ構成の方が簡単です。

ゲートウェイ構成

[サービス・プリンシパル名] を、ゲートウェイの接続先であるターゲットの Caché サーバ名に設定します。

[キーテーブル] フィールドに、キー・テーブル・ファイル名 (フル・パス指定) を入力します。

[ユーザ名] フィールドを、キー・テーブル・ファイルの適切なキー名に設定します。

[パスワード] フィールドは空欄にします。

クライアント・プリンシパル名 (クライアント・ユーザ名) は、ゲートウェイ・ホストの名前です。これは Kerberos キー・テーブルでキーを識別するために使用する名前です。このプリンシパルに Caché サーバで必要な特権を割り当て、ゲートウェイのサービスが動作するようにします。

SSL ベース認証とデータ保護

SSL プロトコルを使用して、ゲートウェイと Caché 間の通信を保護できます。

このモードでは、ホストに構成された SSL 転送により Caché への接続が保護されます。 [SSL構成名] フィールドを、ターゲット・サーバに適切な値に設定する必要があります。 [サービスプリンシパル名] および [キーテーブル] フィールドは無関係なので、空白にしておく必要があります。

Caché システムの SSL クライアント構成の作成に関する詳細は、"Caché セキュリティ管理ガイド" の "SSL/TLS を使用して Caché に接続するための CSP ゲートウェイの構成" の章を参照してください。また、SSL ライブラリのパス設定について、このドキュメントの “Kerberos ライブラリ” セクションのサブセクション “SSL を使用する場合のライブラリ・パスのオーバーライド” も参照してください。

CGI 環境変数

CGI 環境変数は、クライアントの HTTP 要求ヘッダ、および Web サーバが動作している環境の両方から派生します。CSP ゲートウェイは、要求が発生するたびに Caché に共通の環境変数を転送します。アプリケーションで追加の環境変数が必要な場合は、CSP ゲートウェイ構成の [アプリケーションアクセス] セクションにある [追加のCGI環境変数] 設定で明示的に要求する必要があります。システム, 構成 ページで、[CSPゲートウェイ管理] および [進む] を選択します。[アプリケーション・アクセス] を選択します。

以下のテーブルは、転送される環境変数、および各変数の簡単な説明を示しています。他のドキュメントは、標準の Web テキスト・ブックから入手できます。"Caché Server Pages (CSP) の使用法" の “CgiEnvs プロパティおよび CGI 環境変数” のセクションも参照してください。

環境変数
AUTH_PASSWORD クライアントの認証ダイアログに入力された値です。この値は、基本認証が使用される場合にのみ利用できます。
AUTH_TYPE 保護されているスクリプトにユーザがアクセスしようとする際に、サーバがそのユーザの検証に使用する認証方法です。
CONTENT_TYPE HTTP POST や PUT などの情報が添付されている要求の場合、これがデータのコンテンツ・タイプとなります。
GATEWAY_INTERFACE このサーバが適合する CGI 仕様のリビジョンです。形式は CGI/revision です。
HTTP_ACCEPT 受け入れられる形式 (MIME タイプ) のリストを含む受け入れ要求ヘッダの値です。image/gif、image/x-xbitmap、image/jpeg、image/pjpeg、application/vnd.ms-excel などがあります。HTTP_ACCEPT 変数のフィールドの各値は、コンマ (,) で区切って並べます。
HTTP_ACCEPT_CHARSET クライアントが受け入れる、文字エンコードのコンマ区切りリストです。
HTTP_ACCEPT_LANGUAGE コンテンツの表示に使用する言語 (en-us など) を記述する文字列です。
HTTP_AUTHORIZATION クライアントから送信される、BASE64 でエンコードされたユーザ名、パスワード、スキーマ、およびレルムが含まれます。
HTTP_COOKIE クライアントの Cookie のコンテンツを保持します。
HTTP_REFERER HTML の <A> タグを使用して現在のページを要求の参照先とするページの URL を含む文字列を保持します。この URL はユーザがブラウザのアドレス・バーに入力したもので、既定のドキュメント名は含まれません。ページがリダイレクトされる場合、HTTP_REFERER は空です。
HTTP_SOAPACTION SOAPAction HTTP 要求ヘッダ・フィールドを使用して、SOAP HTTP 要求の目的を示すことができます。値は目的を特定する URI です。SOAP はこの URI の形式や具体性、および解決可能性について、何も制限していません。HTTP クライアント は、SOAP HTTP 要求の発行時にこのヘッダ・フィールドを使用する必要があります。
HTTP_USER_AGENT クライアントが要求の送信に使用しているブラウザです。一般的な形式は software/version library/version です。
HTTPS On または Off に設定します (数値ではなく、単語で設定します)。セキュア・サーバを通して (SSLを使用して) スクリプトが呼び出される場合は、on に設定します。
PATH_TRANSLATED 仮想から物理へのマッピングがパスに適用された、PATH_INFO の変換後のバージョンです。
REMOTE_ADDR 要求を行っているリモート・ホストの IP アドレスです。
REMOTE_HOST 要求を行っているホスト名です。サーバにこの情報がない場合、REMOTE_ADDR が設定され、このパラメータは設定されません。
REMOTE_IDENT HTTP サーバが RFC 931 による識別をサポートしている場合、この変数は、サーバから取得したリモート・ユーザ名に設定されます。
REMOTE_USER クライアントによって送信された認証ヘッダから取得されるユーザの名前です。
REQUEST_METHOD 要求の生成に使用したメソッドです。HTTP の場合は、GETHEADPOST などです。
SERVER_NAME サーバのホスト名、DNS エイリアス、または自己参照 URL に示される IP アドレスです。
SERVER_PORT 要求の送信先のポート番号です。例 : 80
SERVER_PORT_SECURE 0 または 1 に設定されます。要求が Web サーバの安全なポートで処理される場合は 1 に設定され、それ以外の場合は 0 に設定されます。
SERVER_PROTOCOL その要求の送信で使用された情報プロトコルの名前とリビジョンです。形式は protocol/revision です。
SERVER_SOFTWARE 要求に応答する Web サーバ・ソフトウェアの名前とバージョンです。形式は name/version です。

HTTP 応答ヘッダ

CSP アプリケーションと CSP ベースのアプリケーションには、通常、完全な HTTP 応答ヘッダを構築する役割があることが前提となっています。パフォーマンス上の理由で、ゲートウェイは従来から、Web サーバを経由して以下のコンテンツと共に応答ヘッダをクライアントに直接ストリーム転送しています。この処理モードを、非解析ヘッダ (NPH) 方式といいます。ゲートウェイは、ホスト Web サーバに用意された専用の API 機能を使用して応答ヘッダを渡すことにより、ホスト Web サーバが応答ヘッダを制御できないようにしています。応答ヘッダの指示文の読み取りおよび解釈を行う必要があるのは、Web サーバではなくクライアントであることが前提です。

ただし、CSP で生成したヘッダの指示文に示される Web サーバ・ベースの追加機能を呼び出すために Web サーバが応答ヘッダを解釈する必要がある場合、この前提は成り立ちません。例えば、応答を追加処理するために 、出力フィルタ を呼び出す場合です (圧縮や暗号化のユーティリティなど)。このような出力フィルタは、通常、非解析ヘッダ・モードの処理に従って返された CSP コンテンツに対しては機能しません。

クライアントに応答ヘッダを直接ストリーミングするのではなく、ホスト Web サーバ経由で応答ヘッダを明示的に渡すように、ゲートウェイに指示する機能が存在します。

この機能を使用するには、CSP ヘッダに以下の指示文を設定します。

CSP-nph: false

この指示文は、OnPreHTTP メソッドで設定する必要があります。以下に例を示します。

<script language=Cache method=OnPreHTTP arguments=""
returntype=%Boolean>
Do %response.SetHeader("CSP-nph", "false")
Quit 1 </script>

false に設定すると (ゲートウェイの既定の設定は true)、CSP-nph 指示文によって、CSP エンジンから返された応答ヘッダによって、応答の種類がホスト Web サーバに適切に通知されるようになります。その結果、必要に応じて以降の処理が可能になります。これが解析ヘッダ・モードです。

CSP ゲートウェイが解析ヘッダ・モードで動作している場合、ホスト Web サーバが応答ヘッダを解釈し、場合によっては独自のヘッダ指示文を追加します。少なくとも、Server ヘッダを応答に追加します。次に例を示します。

Server: Apache/2.0.48 (Win32)

または以下のようになります。

Server: Microsoft-IIS/5.1

または以下のようになります。

Server: Sun-ONE-Web-Server/6.1

この機能は、Web サーバ API に対して直接機能するゲートウェイ実装を使用する場合にのみ適用されます。つまり、CGI 以外はすべて適用されます。

ゲートウェイの CGI モジュールを使用するときにこの機能が必要な場合、NPH バージョンではない CSP CGI モジュールを使用するように Web サーバを構成する必要があります。例えば、nph-CSPcgi ではなく CSPcgi を使用します。CGI モジュール名で使用する接頭辞 nph- は、モジュールによって返される応答ヘッダの読み取りおよび解釈が不要であること (つまり、非解析ヘッダ・モードで動作していること) を Web サーバに伝える標準的な手段です。

これらのモジュールの解析バージョンと非解析バージョンとの本質的な違いは、HTTP 応答ステータス行の作成方法にあります。これはヘッダ・ブロックの先頭行です

解析ヘッダの場合、HTTP ステータス行の形式は以下のようになります。

Status: <status_code>

例:

Status: 200 OK

非解析ヘッダの場合、HTTP ステータス行の形式は以下のようになります。

HTTP/1.1<status_code>

例:

HTTP/1.1 200 OK

ゲートウェイで提供される CGI モジュールは、これらの相違を内部で自動的に処理します。CSP エンジンは常に、標準の HTTP ヘッダ・ブロック (2) を返します。

アプリケーション・パスの追加” セクションの [非解析ヘッダ] パラメータも参照してください。

Web サーバのホームページとしての CSP ページの設定

このセクションでは、CSP ページを Web サーバの既定ページ (ホーム・ページ) として設定する方法について説明します。ここでは、CSP の [サンプル] メニュー (/csp/samples/menu.csp) を Web サーバの既定ページにする手順を説明します。Web サーバの既定ページには以下のようにアクセスします。

http://<web_server>/

CSP ページをこのように設定するときは、埋め込み URL は省略せずに指定する必要があることに注意してください。埋め込みハイパーリンクに対して相対 URL を使用した場合、ブラウザは、それらの URL が CSP ルートではなく、ドキュメント・ルート・ディレクトリを基準にしているものと解釈します。例えば、[サンプル] メニューがホーム・ページであるとすると、[検査] オプションに対する URL は次のようになります。

http://<web_server>/csp/samples/inspector.csp

相対 URL を使用した場合、このリンクは、次のように間違って解釈されてしまいます。

http://<web_server>/inspector.csp

Internet Information Services

  1. [インターネット サービス マネージャ] ウィンドウを開きます。

  2. 左側のウィンドウで、[既定の Web サイト] を選択します。

  3. [既定の Web サイト] を右クリックして、メニューから [プロパティ] を選択し、[既定の Web サイトのプロパティ] ウィンドウを表示します。

  4. [ドキュメント] タブを選択します。

  5. [追加] を選択して、[既定のドキュメント名の追加] ウィンドウを表示します。

  6. [既定のドキュメント名] ウィンドウにドキュメント名 (/csp/samples/menu.csp) を入力します。

  7. [OK] を選択します。

  8. [既定のドキュメントを有効にする] チェック・ボックスが選択されていることを確認します。

  9. [ディレクトリ] タブで、矢印キーを使用して、新しい既定のドキュメント (/csp/samples/menu.csp) をリストの一番上へ移動します。

  10. [適用] および [OK] を選択して、すべての変更を保存して有効にします。

新しい既定ページ (/csp/samples/menu.csp) は、Web サーバのドキュメント・ルート・ディレクトリを基準とする場所に存在している必要があります。これが必要になるのは、空のファイルを作成するときだけです。例えば、ドキュメントのルートが c:\inetpub\wwwroot の場合は、次のように操作します。

cd c:\inetpub\wwwroot
md csp
cd csp
md samples
cd samples
copy con menu.csp
^Z

Sun の Web サーバ

このセクションで説明する手順は、ビルド 663.763 以降のゲートウェイのみを対象としています。

以下の指示文は、obj.conf の既定のセクションで、Sun サーバのホーム・ページを指定します。

NameTrans fn="home-page" path="/csp/samples/menu.csp"

ただし、この指示文では、CSP フォーム menu.csp がサーバのホームページになりません。 これは、サーバが CSP ゲートウェイへ制御を渡す前に、要求されたページを基準にして環境変数を更新しないためです。 ゲートウェイは、/csp/samples/menu.csp ではなく、 / に対する要求を受け取ったと解釈します。 Netscape ベースのサーバは、NSAPI 拡張によってこのシナリオが認識され、要求されたページを識別する変数とそのパスが更新されることを予期しています。この動作を回避する方法は次のとおりです。

  1. obj.conf の既定セクションで CSP ホーム・ページを定義します。

    NameTrans fn="home-page" path="/csp/samples/menu.csp"

  2. 次のように、CSP ファイルとゲートウェイ・モジュール間のマッピングを指定するセクションに home-page-path 指示文を追加します。

    <Object ppath="*/*.[Cc][Ss][Pp]">
    Service method=(GET|HEAD|POST) fn=csp_req home-page-path="/cache-install-dir/csp/samples" 
    </Object> \
    <Object ppath="*/*.[Cc][Ll][Ss]">
    Service method=(GET|HEAD|POST) fn=csp_req home-page-path="/cache-install-dir/csp/samples" 
    </Object> \
    <Object ppath="*/*.[Zz][Ee][Nn]">
    Service method=(GET|HEAD|POST) fn=csp_req home-page-path="/cache-install-dir/csp/samples"
    </Object> 
    <Object ppath="*/CSPn3Sys.so">
    Service method=(GET|HEAD|POST) fn=csp_req_sys
    </Object> 
    <Object ppath="*/CSPn3.so">
    Service method=(GET|HEAD|POST) fn=csp_req
    </Object>
    
    

Service 指示文内の home-page-path プロパティでホームページのパスを指定する必要はありません。ただし、このパスを指定すると、/csp/samples/menu.csp を直接要求した場合と同じ値が PATH_TRANSLATED 環境変数に渡されます。 つまり、以下のようなホームページ (/) の PATH_TRANSLATED が返されます。

/install-dir/csp/samples/inspector.csp

以下は返されません。

/csp/samples/inspector.csp

Apache サーバ

Apache 構成ファイルで DirectoryIndex 指示文を探します。次に例を示します。

DirectoryIndex index.html index.html.var

リストの先頭に、Web サーバの新しい既定ページを追加します。

DirectoryIndex /csp/samples/menu.csp index.html index.html.var

CSP フォームの要求に対する応答の圧縮 (GZIP/ZLIB)

Note:

CSP ゲートウェイは、OpenVMS での GZIP 圧縮をサポートしていません。

CSP エンジンで生成された応答をクライアントに配信する前に圧縮すると、クライアントに応答を転送する際に必要なネットワーク帯域幅が大幅に減少するので、効率的です。クライアントの観点からは、アプリケーションのパフォーマンスが向上します。比較的速度が遅い通信ネットワークでクライアントがモバイル・デバイスを使用してアプリケーションにアクセスする場合は、特に効果的です。もちろん、データを実際に圧縮するために Web サーバ・ホストで必要な CPU 時間が発生しますが、利点の対価としてのわずかな代償にすぎません。

特に、圧縮した応答データが役立つのは、大容量の応答データを生成する CSP ページの場合です。

Web サーバ環境で GZIP を実装するには、2 つの方法があります。

  • ここで説明する GZIP ライブラリへのゲートウェイ固有のインタフェースを使用します。

  • GZIP 出力フィルタをホスト Web サーバのアド・オンとして使用します。

ほとんどの Web サーバは、データを圧縮するアド・オン機能を備えています。Windows/IIS には、gzip フィルタ (ISAPI フィルタとして実装) があります。Apache グループでは、アド・オン・モジュールとして実装される圧縮フィルタ mod_deflate.c (紛らわしい名前ですが、deflate 圧縮ではなく、gzip 圧縮を実装します) が用意されています。また、mod_gzip.c という Apache 用のサードパーティ・モジュールもあります。サードパーティの GZIP 製品は数多くあり、ほとんどの Web サーバにアド・オンとして利用できます。

CSP ゲートウェイに直接圧縮ソリューションを実装する利点は以下のとおりです。

  • 設定と構成が容易です。

  • CSP ファイルの圧縮を制御する際に高い柔軟性が得られます。

  • ゲートウェイは、Caché からの応答コンテンツをかなり大きなチャンクで受信します。したがって、大容量のバッファでデータを圧縮関数に送ると、圧縮のパフォーマンスおよび効率がさらに高まります。

  • また、チャンク転送エンコーディングが CSP ゲートウェイ・レベルで有効化されており、Apache の mod_deflate 出力フィルタが同じリソースに対して有効化されていると、Windows のブラウザでは応答の内容が表示できない場合があることがわかっています。

ゲートウェイは、データの圧縮の実装に、無償で利用できる GZIP (または zlib) ライブラリを使用します。使用する圧縮アルゴリズムについては、RFC (Request for Comments) の 1950 ~ 1952 に説明があります。

GZIP/ZLIB ライブラリのインストール

GZIP/ZLIB ライブラリは、以下のサイトからダウンロードできます。

http://www.zlib.net/Opens in a new tab

このリソースは、Jean-loup Gailly および Mark Adler (Copyright (C) 1995-2006) によって開発されました。

このライブラリは、ゲートウェイをサポートするすべてのプラットフォームに対して無償で利用できます。Windows の場合は DLL (zlib.dll)、UNIX® システムの場合は共有オブジェクトまたは共有ライブラリ (libz.so または libz.sl) として実装されます。また、OpenVMS では、共有可能なイメージとして ZLIB ライブラリを利用できます。libz.so (または libz.sl) ライブラリは、通常、すべての Linux システムに事前にインストールされています (通常、/usr/lib/ または /usr/local/lib にインストールされます)。

ゲートウェイは、初めて応答の圧縮が要求されたときに、ZLIB ライブラリに動的にリンクします。以降は、ゲートウェイが停止するまで ZLIB ライブラリはロードされた状態になります。

Windows の場合は、次のように \Windows\System32 ディレクトリに ZLIB ライブラリをインストールしてください。

C:\WINDOWS\SYSTEM32\ZLIB.DLL

最新の配布キットでは、ライブラリの名前が ZLIB1.dll になっています。ゲートウェイがこのライブラリを見つけられるように、名前を ZLIB.DLL に変更する必要があります。

UNIX® システムの場合、ライブラリ (libz.so または libz.sl) は通常、以下のいずれかの場所にインストールされます。

  • /usr/lib/

  • /usr/local/lib/

ゲートウェイが必要に応じて ZLIB ライブラリをロードでき、すべての必要な機能を特定できれば、以下の初期化メッセージがイベント・ログに書き込まれます。

CSP Gateway Initialization
The ZLIB library is loaded - Version 1.2.3.
       (This library is used for the optional GZIP compression facility)

ゲートウェイが ZLIB ライブラリを見つけられないか、リンクできない場合、以前と同様に動作します (つまり、ページは圧縮されずに返されます)。この場合は、失敗を示すメッセージがイベント・ログに書き込まれます。

GZIP/ZLIB ライブラリの使用法

ゲートウェイは、ZLIB ライブラリを使用して応答データを圧縮する場合に 2 つの処理モード (1 および 2) を実装します。

  1. このモードでは、ゲートウェイは Caché から受信したすべてのデータを圧縮機能にストリーム転送します。すべてのデータが処理されると、圧縮データがゲートウェイに返されます。この時点でデータはクライアントに転送されます。

    このモードでは、待ち時間はわずかに長くなりますが、可能な限り最適な圧縮が行われます。もちろん、形式が大きくなるほど待ち時間は長くなります。

  2. このモードでは、ゲートウェイは Caché から受信したすべてのデータを圧縮機能にストリーム転送します。呼び出しを行うたびに、可能な範囲で最大限に圧縮されたデータが作成され、ゲートウェイに渡されてクライアントに転送されます。

    このモードでは、圧縮のレベルはわずかに低くなりますが、待ち時間は最小限に抑えられます。もちろん、形式が大きくなるほど圧縮レベルは低くなります。一般的に、モード 2 は CSP 応答に含まれるデータの量を事前に把握できない場合の CSP アプリケーションに適しています。

ゲートウェイが Caché から返されたデータ・ストリームを正常に圧縮できる場合 (そして圧縮できる場合のみ)、ゲートウェイでは HTTP 応答ヘッダを修正して、適切な Content-Encoding 指示文を追加します。次に例を示します。

HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: CSPSESSIONID=000000000002119qMwh3003228403243; path=/csp/samples/;
CACHE-CONTROL: no-cache CONNECTION: Close DATE: Fri, 15 Aug 2003 10:05:18 GMT 
EXPIRES: Thu, 29 Oct 1998 17:04:19 GMT PRAGMA: no-cache Content-Encoding: gzip

ゲートウェイは応答データを圧縮する前に、常に Accept-Encoding HTTP 要求ヘッダの値 (HTTP_ACCEPT_ENCODING CGI 環境変数) を確認します。ゲートウェイは、クライアントが圧縮したコンテンツを処理できることを示した場合のみ応答を圧縮します。

次に例を示します。

Accept-Encoding: gzip, deflate

CSP 応答の圧縮を指定するにはいくつかの方法があります。これらは以下のセクションで説明しています。

ページごとの圧縮の指定

%response オブジェクトには、GzipOutput というプロパティがあります。このプロパティを True (または必要なモード) に設定すると、ゲートウェイは応答の圧縮を試みます。

<script language=Cache method=OnPreHTTP arguments=""
                 returntype=%Boolean>
         Set %response.GzipOutput = 2
         Quit 1
</script> 

HTTP 応答ヘッダに CSP-gzip 指示文を追加することで、ページごとに圧縮を指定することもできます。もちろん、OnPreHTTP メソッドで行う必要があります。次に例を示します。

<script language=Cache method=OnPreHTTP arguments="" 
               returntype=%Boolean> 
        Do %response.SetHeader("CSP-gzip", "2") 
        Quit 1 
</script>

CSP-gzip ヘッダ指示文は、必要な圧縮モード (1 または 2) に設定します。

アプリケーション・パス内のすべてのページに対する圧縮の指定

アプリケーション・パスごとに圧縮を指定できます。同時にこれは、Web サーバの出力フィルタ (mod_deflate など) を使用する場合に圧縮が必要であることを指定する最も一般的な方法です。

ゲートウェイの [アプリケーション・アクセス] セクションで以下の構成パラメータを使用します。

アイテム 機能
[GZIP圧縮] [有効] の場合、そのパスのすべての CSP 出力が圧縮されます。既定は [無効] (圧縮なし) です。(OpenVMS では使用できません。)
[GZIP 最小ファイル・サイズ] 圧縮がアクティブ化される最小応答サイズ (単位はバイト) を制御します。既定は 500 バイトです。
[GZIP 除外ファイルの種類]

GZIP 圧縮の除外対象とするファイルの種類のリストです。 ファイルは、MIME タイプ (image/jpeg など) または一般的な拡張子 (jpeg など) を使用してリストできます。

既定では、これらの一般的な (標準で圧縮されている) イメージ・ファイルは除外されます。GZIP Exclude File Types: jpeg gif ico png gz zip mp3 mp4 tiff

追加の種類または拡張子をスペースで区切ります。

監視

イベント・ログ・レベル V3 では、圧縮が成功したすべての CSP 応答に対する圧縮のレベルを記録するようにゲートウェイに指示します。圧縮したデータのサイズと圧縮していない元のデータ・ストリームのサイズが記録されます。

次に例を示します。

GZIP Compression for /csp/samples/inspector.csp GZIP Mode=1; Uncompressed Content Size=19042; Compressed Content Size=2499 (13 percent)

CSP ページの出力キャッシュ機能

ほとんどの Web 開発者は、以前に要求された Web ページのクライアント・キャッシュを Web ブラウザでサポートする方法に精通しています。クライアント側のページ・キャッシュ機能では、元のサーバからドキュメントを取得するのではなく、以前にアクセスしたページをローカル・ストレージ (メモリまたはローカル・ハード・ドライブ) から取得して、各ユーザに示されるパフォーマンスを向上させることができます。

CSP ページの出力キャッシュ機能には、CSP ゲートウェイ内で頻繁にアクセスするページのキャッシュを維持するオプションがあります。ゲートウェイは Web サーバ上に存在するコア・コンポーネントであるため、そのキャッシュはその CSP インストール環境にあるすべてのユーザ間で共有できます。例えば、ゲートウェイのキャッシュに配置するように構成されているページを 1 人のユーザが要求すると、そのページに対する以降の要求はすべて、キャッシュしたコピーを使用できます。キャッシュしたページは、すべてのユーザが使用できます。この機能には、以下の 2 つの理由でパフォーマンスにおける素晴らしい効果があります。ユーザの観点から見た 1 つ目の効果は、キャッシュから取得したページが極めて高速に表示される点です。2 つ目の効果は、キャッシュしたページの配信に Caché システムが関与しないので、システムの負荷が大幅に減少する点です。

CSP に実装されたページの出力キャッシュ機能は、Microsoft の ASP.NET 製品で提供されるものと同等のメカニズムに基づいています。この機能を理解するための学習時間が少なくて済むように、この設計が選択されました。実際にほとんどの開発者は ASP.NET に精通しています。

ページ・キャッシュ機能は、CSP %response オブジェクト内で設定することで制御されます。2 つのプロパティを使用して、キャッシュするページとキャッシュする期間を制御できます。CSP の既定の動作では、ページをキャッシュに配置する必要はありません。

%response.Expires プロパティ

標準の Expires プロパティは、ページがキャッシュ内に存在する期間を制御します。

例えば、あるページを 1 分で有効期限切れになるように設定した場合、ページがキャッシュ内に置かれてから 60 秒が経過すると、ゲートウェイはそのページを削除します。

%response.Expires=[60 seconds time]

これに相当する ASP.NET の指示文は以下のようになります。

<%@ OutputCache Duration="60"%>

%response.VaryByParam プロパティ

このプロパティを使用すると、HTTP POST/GET によって送信された名前と値のペアに基づいて、キャッシュに保存するページのバージョン数を制御できます。既定値は None です。None は、キャッシュに保存するページのバージョンを 1 つのみとすることを示します。すべての HTTP GET/POST パラメータが無視されます。None の反対の値は * です。このアスタリスクは、渡された名前と値のすべてのペアがページのキャッシュ・バージョンの作成に使用されることを意味します。ただし、パラメータを明示的に指定することにより、どの程度制御するかを指定できます (複数のパラメータ名はセミコロンで区切ります)。

VaryByParam プロパティの使用法について、次の例で説明します。米国の 50 州の天気予報を表示できる Web アプリケーションを構築するとします。このアプリケーションは、1 つのページ (Weather.csp) に完全にカプセル化されます。

Weather.csp には、州のドロップダウン・リストがあります。ドロップダウン・リストから州を選択し、その州の値を Weather.csp に戻します。例えば、State=WAState=TX となります。簡素化のために、HTTP GET を使用してデータを送信するとします。1 つの項目 (State など) を選択すると、以下のように要求がサーバに送信されます。

Weather.csp?State=WA.

天気予報は 1 日に 1 回のみ更新され、予報の生成によって大きなオーバーヘッドが発生すると仮定します。

以下の指示文を Weather.csp%response オブジェクトに追加できます。

%response.Expires=[2 hours time]
%response.VaryByParam="State"

ASP.NET では以下のようになります。

<%@ OutputCache Duration="10800" VaryByParam="State" %>

これによって州ごとにページが生成され、各ページは個別に 2 時間キャッシュされます。

Weather.csp
Weather.csp?State=WA
Weather.csp?State=TX
...etc.

ここで特定の都市の天気を示す機能を追加するとします。州や都市のパラメータに基づいてページをキャッシュするには、キャッシュの指示文を以下のように変更します。

%response.Expires=[2 hours time]
%response.VaryByParam="State;City"

ASP.NET では以下のようになります。

<%@ OutputCache Duration="10800" VaryByParam="State;City" %>

VaryByParam プロパティを使用すると、HTTP GET/POST によって送信されたパラメータに基づいて、同じページの複数のバージョンをキャッシュできます。* を使用する場合は特に注意してください。* を使用すると、頻繁にアクセスしないページで出力キャッシュがいっぱいになってしまう可能性があります。VaryByParam プロパティを具体的に指定するほど、ゲートウェイがキャッシュからページを取得できる頻度が高くなります。例えば、州のみを指定する場合、キャッシュには 51 バージョン (50 州 + パラメータを指定しないバージョン) のページがあります。都市のパラメータを追加するとき、州ごとに平均 15 都市あると仮定すると、キャッシュされた可能性があるページ数は瞬く間に 751 に増加します。

キャッシュの総容量が大きくなりすぎた結果として、メモリによって制約されるようになると、ゲートウェイはキャッシュからページを自動的に排除します。

キャッシュしたページに対するユーザのセッション ID の保存

要求を発行しているユーザのセッション ID は、セッションが Cookie (CSPSESSIONID) またはトークン (Form/URL 変数:CSPCHD) のどちらによって維持されているかを問わず、キャッシュから取得したページ内に保存する必要があります。

ページをキャッシュする場合、Caché から実際にページを取得したユーザの ID に対してページがキャッシュされます。このページには、CSPSESSIONID Cookie または CSPCHD トークンとしてのセッション ID が含まれます。キャッシュしたページをユーザに提供する前に、ゲートウェイは検出された両方の変数をすべて、要求を発行しているユーザのセッション・トークンに置き換えます。実際、要求しているユーザのブラウザで Cookie が保存されているので、その Cookie と動作が同じセッション cookie はキャッシュから削除されます。

例えば、あるページがユーザ xxxxxxx によってキャッシュされるとします。このページは以下の ID でキャッシュされます。

Set-Cookie: CSPSESSIONID=xxxxxxx;

続いて、別のユーザ aaaaaaa がキャッシュからこのページを取得すると、Cookie は理論的には以下のように変更されます。

Set-Cookie: CSPSESSIONID=aaaaaaa;

実際には、上記で説明したように、Cookie は要求しているユーザのブラウザにのみ存在します。

ただし、ゲートウェイでは、セッション・トークン CSPCHD を経由してユーザのセッションを管理するページを処理する必要があります。この場合、最初にキャッシュされるページには、以下に示すように元のユーザへの参照が含まれます。

<A HREF="/csp/page.csp?CSPCHD=xxxxxxx">
<INPUT TYPE=SUBMIT NAME="CSPCHD" VALUE="xxxxxxx">

ゲートウェイは、要求を発行しているユーザの ID を反映するために、セッション・トークンの値を自動的に変更します。例えば、ユーザ aaaaaaa がキャッシュからこのページを要求すると、ゲートウェイはこれらの行を以下のように変更します。

<A HREF="/csp/page.csp?CSPCHD=aaaaaaa">
<INPUT TYPE=SUBMIT NAME="CSPCHD" VALUE="aaaaaaa">

Microsoft Active Server Pages (ASP) および VBScript を使用した CSP

CSP ページと ASP ページの両方の環境でユーザ・セッションの整合性が維持されていれば、この 2 つのページを互いに組み合せることができます。どちらの環境も、Cookie に格納されている識別子を使用してセッションを管理します。CSP では、接頭辞 CSPSESSIONID が名前に付いた Cookie にセッション ID を格納します。ASP では、接頭辞 ASPSESSIONID が名前に付いた Cookie を使用します。

次に例を示します。

CSPSESSIONID=00200001000614eX37yi00363806761900000000000000000000000000
ASPSESSIONIDCCATBQCQ=DPLBEBECJLCJKIHKIKEFCCOA

それぞれの環境のセッション ID が、相手の環境のページが処理されるときに保護されていれば、CSP ベースのアプリケーションと ASP ベースのアプリケーションは、シームレスに、そして透過的に切り替わります。

CSP でのクライアント側 VBScript

クライアントの Internet Explorer 環境で実行する VBScript は、JavaScript を使用する場合と同じように CSP ページに追加できます。

以下に例を示します。

<script language=vbscript>
        document.write "The time is: ",time
</script>

CSP でのサーバ側 VB-Script (CSP による ASP コンテンツの処理)

CSP アプリケーションから完全な ASP ページを構築して提供する場合もあります。この場合、CSP で生成したページには、クライアントのブラウザとは対照的に、ASP エンジンにある Web サーバ・ホストで実行する VBScript が含まれます。

CSP ゲートウェイと同様に、ASP (および ASP.NET) エンジンは、IIS の ISAPI 拡張として実装されています。ただし、CSP で生成した ASP コンテンツを、CSP ゲートウェイから ASP エンジンを使用して送るメカニズムは存在しません。

CSP 経由で ASP コンテンツを提供する機能は、CSP ゲートウェイに実装されています。これは、CSP から返された ASP ページを、IIS ドキュメント・ルートに物理ファイルとして保存することで実現できます。これを行うと、クライアントはそのページにリダイレクトされます。2 回目のリダイレクトで、ASP エンジンで処理される、新規の ASP ページが作成され、この時点でサーバ側の VBScript が実行されて、最終的なページがクライアントに配信されます。

CSP ゲートウェイは、2 つのうちのいずれかの方法で ASP リソースへのリダイレクトを管理します。

  • サーバ側リダイレクト : この選択をお勧めします。CSP から返された ASP コンテンツは一時 ASP ファイルとして保存されているので、CSP ゲートウェイは単に IIS を経由してそのページを要求します。IIS は、ページが ASP エンジンによって処理され、コンテンツがクライアントに配信されるように確認します。その後、一時 ASP ページは削除されます。クライアントの観点から見たこの方法の利点は、ASP コンテンツが CSP から直接提供されているように見えることです。要求した元の CSP ページは、ブラウザのアドレス・ボックスに登録されます。

  • クライアント側リダイレクト : このシナリオでは、HTTP リダイレクト・ヘッダをクライアントに送信することで、ゲートウェイは新規作成された ASP リソースにクライアントをリダイレクトします。クライアントと Web サーバ間で SSL を使用する場合は、このオプションを使用する必要があります。クライアントへの余分なラウンドトリップを除外すると、この方法の主な利点は、一時 ASP ページへの URL がブラウザのアドレス・ボックスに登録されることです。つまり、クライアントは一時 ASP リソースを再要求することができます (ユーザが [更新] ボタンを押したとき、または後のページで [戻る] ボタンを使用したとき)。この要件を容易に満たすことができるように、ゲートウェイでは一時 ASP ファイルを作成後 24 時間保持します。

以下の規則に従って、一時 ASP ファイルの名前が付けられます。

CSPASP[n].asp

n は一意の数です。新しい ASP ページを作成するたびにインクリメントされ、ゲートウェイを再起動すると 1 にリセットされます。

Web サーバとゲートウェイ構成

CSP アプリケーションから ASP ページが提供されるように Web サーバおよび CSP ゲートウェイを構成するには

  1. まず、IIS ドキュメント・ルートの下に一時 ASP ファイルの物理的な場所を作成します。次に例を示します。

    C:\Inetpub\wwwroot\asptemp

  2. 多くの場合、Windows (特に Windows 2000 以降) をインストールした環境では、ドキュメント・ルート下のディレクトリに CSP ゲートウェイから書き込むには、Web サーバに割り当てられた既定の権限では不十分です。

    したがって、asptemp ディレクトリに対する書き込み権限を Web サーバに割り当てるか、Web サーバに Administrator 権限を付与する必要があります。

    ファイル・アクセス権限は、Windows エクスプローラで変更できます。または、以下のコマンドを使用することもできます。

    cacls C:\Inetpub\wwwroot\asptemp /E /G IUSR_xxx:F

    IUSR_xxx は、Web サーバのユーザ権限です。通常、xxx はコンピュータの名前です。インターネット サービス マネージャで特定の名前を検索するには、以下の手順で [認証方法] ダイアログ・ボックスを開きます。

    1. [インターネット サービス マネージャ] を開きます。

    2. 左側のウィンドウで、[既定の Web サイト] を選択します。

    3. [既定の Web サイト] を右クリックします。メニューから [プロパティ] を選択して、[既定の Web サイトのプロパティ] ウィンドウを表示します。

    4. [ディレクトリ セキュリティ] タブを選択します。

    5. [匿名アクセスおよび認証コントロール] パネルの [編集] を選択します。[認証方法] ダイアログに [ユーザ名] が表示されます。

  3. asptemp ディレクトリに割り当てられた実行許可を変更して、IIS がそのディレクトリで ASP ページを実行できるようにします。

    1. [インターネット サービス マネージャ] を開きます。

    2. 左側のウィンドウで、[既定の Web サイト] を選択します。

    3. [既定の Web サイト] を右クリックします。一時 ASP ディレクトリ (asptemp) を右クリックして、メニューから [プロパティ] を選択し、[既定の Web サイトのプロパティ] ウィンドウを表示します。

    4. [ホーム ディレクトリ] タブを選択します。

    5. [実行アクセス許可][スクリプトおよび実行可能ファイル] に設定されていることを確認します。

    6. [適用][OK] の順に選択します。

    7. ゲートウェイ構成 ([デフォルトパラメータ]) で以下の 2 つのパラメータを設定します。

      [ウェブドキュメントルート]:C:\Inetpub\wwwroot

      [ASP一時ディレクトリ]:/asptemp

  4. IIS を再起動します。

使用法

ASP エンジンでページをさらに処理する必要があることを CSP ゲートウェイに指示するには、以下の手順を実行します。

  1. ページの OnPreHTTP メソッドで %response.UseASPredirect プロパティを true に設定します。

    <script language=Cache method=OnPreHTTP arguments=""
               returntype=%Boolean>
            Set %response.UseASPredirect=1 Quit 1
    </script>
    
  2. CSP ページで VBScript を宣言します。

    <%@ LANGUAGE="VBSCRIPT"%>

これで、インライン VBScript と、スクリプト化された完全なセクションの両方をページに追加できます。

例 :

<% Response.Write("<BR><B>ASP inline</B><BR>") %>

<script language=vbscript runat=server>
      Response.Write("<br><b>Message from ASP script</b><br>")
</script>

<%
    Dim n
    For n = 1 To 10 Step 1
    Response.write("<BR>These lines were generated by a 'for' loop in VBSCRIPT: <B>Line # " & n & "</B>")
    Next
%>

完全な例 :

<script language=Cache method=OnPreHTTP arguments=""
        returntype=%Boolean>
     Set %response.UseASPredirect=1 Quit 1
</script>
<html>
<head>
<title> CSP/VBScript demonstration </title>
</head>
<body>
<h2> CSP/VBScript demonstration page </h2>
<script language=vbscript>
     msgbox "Message from client-side vbscript"
     document.write "The time is ",time
</script>
<% Response.Write("<BR><B>Message from ASP inline</B><BR>") %>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
     Response.Write("<BR><B>Message from ASP script</B><BR>")
</SCRIPT>
<script language=cache runat=server>
     set x="message from Cach&eacute"
</script>
<br>Message from CSP #(x)# <br>
</body>
9</html>

CSP アプリケーションで使用できるように HTTP 認証を実装する

このバージョンでは、HTTP 認証を Caché/CSP で制御できるように Apache モジュール (mod_csp*.so/dll および CSPa*[Sys].so/dll) の機能が拡張されています。

Web 要求の HTTP 認証は、通常、Web サーバとクライアント (ブラウザ) の間で行われます。このため、CGI プログラムや Web サーバの API をベースにした要求ハンドラなど、Web サーバによりホストされるカスタム要求ハンドラに HTTP 認証を実装することはできません。もちろん、このような拡張機能で 401 Authorization Required 応答ヘッダを発行することができます。これに対して、ブラウザには HTTP ログイン・ダイアログが表示されます。ただし、それ以降の要求では、Web サーバはユーザ・ログインの詳細を傍受し、独自の組み込み機能を使用してユーザ認証を試みます。Web サーバが独自の方法でユーザを認証するまで、少なくとも、最初のインスタンスでは、ユーザ名とパスワードが要求処理拡張機能に渡されることはありません。

このスキーマは、サードパーティ開発技術 (CSP など) を使用して、その技術の範囲内でローカルに (プログラムによって) HTTP 認証を実行しようとしているユーザにとっては問題となります。

ここで説明した機能強化により、これらの技術的問題は解決されているため、ユーザは Caché/CSP 環境で Apache のホストする CSP アプリケーションに対して HTTP 認証を実行できるようになります。Apache ユーザは、これ以降のセクションで説明する 3 つのアプローチから選択できます。

Apache での標準 HTTP 認証 (mod_auth)

このメソッドは、Apache により (mod_auth モジュール経由で) 提供される標準メカニズムで、CSP モジュールへの最新の変更に依存しません。ここでは、完全を期すために説明しています。

Apache ベースの認証を使用する CSP サンプルを保護するために必要な基本パラメータの例は、以下の構成ブロック (httpd.conf) のとおりです。

<Location "/csp/samples/"> 
AuthType Basic 
AuthName "CSP samples" 
AuthUserFile conf/csp.pwd 
require valid-user 
</Location> 

以下はその説明です。

AuthType は要求された認証タイプ (通常は Basic) です。

AuthName はレルムです。

AuthUserFile はユーザ名とそれに関連付けられたパスワードを (暗号化された形で) 保持するファイル (Web サーバのルートとの相対パスで表されたもの) です。このファイルは、Apache htpasswd ユーティリティで作成され、管理されます。

require パラメータは、保護されたリソース (この場合は CSP サンプル) にアクセスが許可されたユーザのリストです。valid-user 引数は、ユーザを (AuthUserFile で宣言されたとおり) ユーザ名/パスワード・ファイルで定義する必要があることを示します。

Apache は、ユーザ 'groups' にグループ化されるユーザに対応しています。詳細は、AuthGroupFile 指示文を参照してください。

http://httpd.apache.org/docs/2.0/mod/mod_auth.html

要求の処理と同時に CSP で行われる認証

これは、CSP アプリケーションでの HTTP 認証の実装に推奨される (また、最もパフォーマンスのよい) メソッドです。

CSP ベースの認証を使用する CSP サンプルを保護するために必要な基本パラメータは、以下の Apache 構成ブロック (httpd.conf) のとおりです。

<Location "/csp/samples/"> 
AuthType Basic 
AuthName "CSP samples" 
require valid-user 
AuthCSPEnable On 
# The following directive is necessary for Apache v2.2 (and later)
AuthBasicAuthoritative Off
</Location> 

パラメータ AuthTypeAuthName、および require は認証のトリガに使用される標準 Apache パラメータです。

また、追加の AuthCSPEnable パラメータは、(mod_auth で) Apache により行われる認証チェックを迂回し、本来の Web 要求と共にユーザ名とパスワードを認証のために Caché に渡すように CSP モジュールに指示します。CSP アプリケーションは、以下の CGI 環境変数を使用して、このユーザをチェックする必要があります。

  • AUTH_TYPE : これは Basic です。

  • REMOTE_USER : ユーザ名。

  • AUTH_PASSWORD : ユーザのパスワード (プレーン・テキスト)。

これらのパラメータに保持された値に基づいて、ユーザが正常に認証されると、アプリケーションは要求の処理を続行します (つまり、要求された CSP リソースを返します)。認証されなかった場合、最低でも次のような HTTP 401 Authorization Required 応答が返されます。

HTTP/1.1 401 Authorization Required 
WWW-Authenticate: Basic realm="CSP samples" 
Content-Type: text/html 
Connection: close 
<html> 
<head><title>401 Authorization Required</title>
</head><body> <h1>Authorization Required</h1> 
<p> The Cache server could not verify that you are authorized 
to access the application. Check your username and password. 
</p> 
<hr> 
</body> 
</html> 

このメッセージが受信されると、ユーザが既定の回数 (通常は 3 回) を超えてログインを試行していない限り、ブラウザにはログイン・ダイアログが再表示されます。超えてしまった場合は、ヘッダに続いてこのメッセージが表示されます。

Caché システム v5.1 (およびそれ以降) では、ユーザは、ログイン・ページを変更することにより、この認証メソッドを実装できます。要求が到着したときに、アプリケーションを実行するために必要な権限をユーザが保持していなかった場合、ログイン・ページが呼び出され、要求から認証情報 (AUTH_TYPE、REMOTE_USER、AUTH_PASSWORD など) を抽出する処理が行われます。これらのパラメータが正当と判断された場合、ログイン・スクリプトは、本来要求されたアプリケーション・ページに制御をリダイレクトします。Caché セキュリティのコントロール・レイヤが展開されている場合、パブリック・ページすべてに対してこの認証プロシージャを繰り返す必要はありません。

要求の処理前に CSP で行われる認証

これは、Caché で HTTP 認証を実装するための代替方法です。これは主に、CSP アプリケーションでの要求処理時には認証を実行することが難しいか、実行に時間がかかる場合に行われます。例えば、Caché v5.0 (またはそれ以前) で実行される既存アプリケーションでは、標準ログイン・ページがない場合、すべてのパブリック・ページに認証チェックを追加するのは実用的ではありません。

この方法では、ユーザ認証のために、専用の認証クラスが呼び出されます。CSP ゲートウェイは、Caché に元の要求を送信する前に、このチェックを実行します。認証クラスによるユーザの詳細チェックが正常に終了すると、これ以上、CSP アプリケーションで選択を実行する必要はありません。

もちろん、この方法には、Web 要求 1 回に対して、認証に 1 回、CSP リソースに対する実際の要求の処理に 1 回の合計 2 回 (Caché への) 要求を処理するというオーバーヘッドがあります。

この認証方法を実装するために必要な基本パラメータは、以下の Apache 構成ブロック (httpd.conf) のとおりです。

<Location "/csp/samples/"> 
AuthType Basic 
AuthName "CSP samples" 
require valid-user 
AuthCSPEnable On 
AuthCSPClass /csp/samples/%CSP.HTTPAuthentication.cls 
# The following directive is necessary for Apache v2.2 (and later)
AuthBasicAuthoritative Off
</Location> 

パラメータ AuthTypeAuthNamerequire、および AuthCSPEnable はメソッド (2) と同じです。

また、AuthCSPClass パラメータはユーザ認証を実行するクラスを定義します。このクラスは、適切な CGI 環境変数を使って %CSP.PageOpens in a new tab を拡張し、ユーザ・ログインの詳細をチェックして、操作に成功した場合は 200 OK 応答ヘッダ、失敗した場合は 401 Authorization Required 応答ヘッダを返す必要があります。

%Users ファイルに保存されているレコードに対するユーザ・ログインの詳細のチェックが行われる単純な認証クラスは以下のとおりです。

Class %CSP.HTTPAuthentication Extends %CSP.Page 
{ 
ClassMethod OnPreHTTP() As %Boolean 
{ 
Set %response.ContentType = "text/html" 
Set %session.Preserve = 0 
Quit 1 
} 
ClassMethod OnPage() As %Status 
{ 
Set crlf=$Char(13,10) 
Set type=%request.GetCgiEnv("AUTH_TYPE", "") 
Set user=%request.GetCgiEnv("REMOTE_USER", "") 
Set pwd=%request.GetCgiEnv("AUTH_PASSWORD", "") 
Set httpauth=%request.GetCgiEnv("HTTP_AUTHORIZATION", "")
If httpauth'="" {
      Set type=$Piece(httpauth," ",1)
      Set user=$system.Encryption.Base64Decode($Piece(httpauth," ",2))
      Set pwd=$Piece(user,":",2)
      Set user=$Piece(user,":",1)
}
Set auth=0 If $ZConvert(type,"L")'="basic" Set auth=1 
If auth=0,user'="",$Get(^%Users(user))=pwd Set auth=1 
If auth=1 { 
Write "HTTP/1.1 200 OK"_crlf 
Write "Content-Type: text/html"_crlf 
Write "Content-Length: 0"_crlf 
Write "Connection: close"_crlf_crlf 
} 
Else { 
Write "HTTP/1.1 401 Authorization Required"_crlf 
Write "WWW-Authenticate: Basic realm=""CSP samples"""_crlf 
Write "Content-Type: text/html"_crlf 
Write "Content-Length: 0"_crlf 
Write "Connection: close"_crlf_crlf 
} 
Quit $$$OK 
} 
ClassMethod OnHTTPHeader(ByRef OutputBody As %Boolean) As %Status 
{ 
Quit $$$OK 
} 

メソッド (1) および (3) では、Apache ErrorDocument 指示文を使用して、ログインの失敗に対するカスタム・エラー・ページを指定できます。以下はその例です。

ErrorDocument /error/my_authentication_error.html 

もちろん、メソッド (2) では、エラー・メッセージの内容は CSP アプリケーションによって制御されます。

ミラー構成、フェイルオーバー、および負荷分散

ここでは以下について説明します。

複数の Web サーバ間の負荷分散とフェイルオーバー

ほとんどの環境では、Web サーバ層で負荷を分散して高可用性を実現するために、複数の Web サーバが使用されます。 一般に、参加する Web サーバに対してユーザ接続を行うには、ロード・バランサが必要です。 最適なパフォーマンスと復元力を得るには、ハードウェア・ベースのソリューションの使用をお勧めします。 Cisco ACE 4710 や F5 BigIP LTM アプライアンスなどの負荷分散システムは、Web サーバ群の前面に配置されます。 この構成では、Caché ECP 構成のように、複数の Caché サーバ・インスタンスも存在している場合、各 Web サーバ (およびゲートウェイ・インスタンスも含めて) を特定の Caché サーバ・インスタンスに接続するように構成してください。

ソフトウェア・ベースの負荷分散およびフェイルオーバー・システムは、ハードウェア・ベースのソリューションほど堅牢ではありませんが、非常に低コストで導入できます。 ソフトウェア・ベースのソリューションの例としては、HAProxy や Apache Group の mod_proxy_balancer があります。詳細は、HAProxy のサイト www.haproxy.orgOpens in a new tab を参照してください。

Note:

重要:CSP アプリケーションに対して必ずスティッキー・セッションを有効にしておいてください。 セッションが存続している間は、それぞれのユーザ・セッションを同一のバックエンド Caché サーバで 維持する 必要があります。ただし、当然のことながら、フェイルオーバー・イベントが発生した場合はこの限りではありません。

上記のアプローチが最も推奨される方法ですが、ゲートウェイには複数の Caché サーバ 間で負荷分散やフェイルオーバーを実装するための基本の (ソフトウェア・ベースの) システムが含まれています。 このような構成では、ゲートウェイのインストールは複数の Caché サーバ に接続するように構成されます。 この機能については、このセクションの以降の部分で説明します。

ゲートウェイの負荷分散およびフェイルオーバーは、[CSP ゲートウェイ管理]ページ ([システム管理][構成][CSP ゲートウェイ管理]) の [アプリケーションアクセス] セクションで構成されます。

Caché サーバのリストを、アプリケーション (パス) に対して定義できます。 Servers パラメータを使用して、それらの使用目的を確認します。 これには以下の 3 つのオプションがあります。

  • [負荷分散とフェイルオーバを使用する]

  • [フェイルオーバのみ使用する] メイン (つまり最初の) サーバが使用不能になった場合にのみ代替を使用します。

  • [最初のサーバのみを使用する] リスト内の最初のサーバのみを使用します。

複数の Caché サーバ・インスタス間の負荷分散とフェイルオーバー

複数 (同等) の Caché サーバ・インスタンスが含まれる構成 (Caché ECP 構成など) では、ゲートウェイは、それらの Caché インスタンス間で負荷分散とフェイルオーバーを実装するための基本 (ソフトウェア・ベース) の機能を Web アプリケーションに提供します。 しかし、第一に推奨されるのは、前述のような外部ソリューションです。

ゲートウェイによって提供されるフェイルオーバー・メカニズムでは、フェイルオーバー・クラスタリングや Caché ミラーリングなどの一般的な高可用性構成において、複数の Caché データベース・サーバ間にフェイルオーバーを実装する必要はありません。 それらのテクノロジは仮想 IP ベースのフェイルオーバーを提供しており、その IPアドレスに接続するようにゲートウェイを構成できます。

このセクションの残りの部分では、ゲートウェイによって提供される負荷分散およびフェイルオーバー機能について説明します。

ゲートウェイの負荷分散およびフェイルオーバーは、[CSP ゲートウェイ管理] ページの [アプリケーションアクセス] セクションで構成されます。

Caché サーバのリストを、アプリケーション (パス) に対して定義できます。 [代替サーバの使用目的] パラメータの下にリストされているオプションを使用して、そのサーバの使用目的を選択します。 これには、以下の 2 つのオプションがあります。

  • フェイルオーバー

  • 負荷分散とフェイルオーバー

どちらのオプションも選択されていない場合の既定の対策は、リストで定義されている最初の Caché サーバを使用することです。

以下は、Caché サーバーのリストです。それぞれは server# と指定されます (# はサーバ番号です)。

構成画面には、常に 3 つの空のサーバ・スロットのみが表示されていますが、任意の数の代替サーバを定義できます。それぞれのサーバは、[有効] または [無効] としてマークできます。 既定の設定は [有効] です。

負荷分散は、ラウンドロビン方式で実装されます。 新しい各ユーザ・セッションは、次に使用可能な "代替" サーバに接続されます。 ユーザ・セッションがサーバで確立されると、ゲートウェイはサーバが使用不可能にならない限り、そのサーバでセッションを維持しようとします。このサーバが使用不可能になった場合、セッションはリスト内で次に使用可能なサーバにフェイルオーバーされます。 ステート認識セッション (保持モード = 1) の場合、どのような状況でもフェイルオーバーは行われないので、ホスト・サーバが使用不可能になるとセッションは閉じます。

ミラー構成

ミラー Caché 構成を使用すると、データベースは参加するミラー・メンバ間で複製 (またはミラーリング) されます。 Caché ミラー・セット構成は、インストールに参加するミラー・メンバのセットを表します。Caché ミラーリングの詳しい説明は、"Caché 高可用性ガイド" の "ミラーリング" の章を参照してください。

プライマリ・メンバに対してネットワークのリダイレクトを提供するためにミラー仮想 IP (または同等のテクノロジ) が使用される場合は、そのアドレスに接続するように CSP ゲートウェイを構成します。それ以上のアクションは必要ありません。 仮想 IP アドレスは常にミラー・プライマリにマップされます。

ミラー仮想 IP を使用できない (または特定の災害シナリオでは機能しない) 構成の場合、CSP ゲートウェイをミラー認識になるように構成できます。 ゲートウェイがミラー認識の場合、どのメンバがプライマリかを決定する責任を負います。 ゲートウェイをミラー認識にするには、CSP ゲートウェイの [サーバ接続] セクションで、[構成はミラーを認識する] を選択し、ミラー・メンバのいずれかのアドレスを指定します。

Note:

ゲートウェイ構成をミラー認識にするのが適切でない状況があります。 例えば、管理ポータルをサポートするゲートウェイ構成は、ミラー認識になるように構成してはなりません。このポータルはミラーの状態にかかわりなく、常に特定の Caché サーバに接続する必要があるからです。

ミラー認識のゲートウェイ構成が、ミラー・メンバでない Caché サーバに接続する場合、接続は失敗し、影響を受けるクライアントは Server Availability エラーを受け取ります。

ゲートウェイは、最初に接続するメンバから、フェイルオーバー・メンバおよび災害復旧 (DR) メンバのリストを入手します。 ゲートウェイはこのリストをローカル構成ファイル (CSPRT.ini) に維持します。 その後、ゲートウェイがその構成で定義されたメンバに接続できなくなる場合、以前にローカルに記録されたリストを使用して、代替メンバを識別し、それに接続できるようにします。

ゲートウェイは、プライマリを見つけるまで、メンバ・リストを循環します。 プライマリが見つからない場合、接続は失敗し、影響を受けるクライアントは Server Availability エラーを受け取ります。

  • ゲートウェイは、プライマリとして定義されたメンバが見つかるまで、リストを繰り返し循環します。

  • 密接なループ構造がパフォーマンスに与える悪影響を回避するため、ゲートウェイは各サイクルの終了後、試行回数に相当する秒数の間、停止します。

  • 特定の HTTP 要求では、ゲートウェイは、[サーバ応答タイムアウト] パラメータで定義された時間を超えてプライマリを見つけることはありません。

  • プライマリを検索する場合、ゲートウェイが最初に接続するのは、常にフェイルオーバー・メンバです。 フェイルオーバー・メンバの中にプライマリが見つからない場合のみ、非同期メンバを試行します。 非同期メンバを手動でプライマリと指定する場合のみ、非同期メンバはプライマリになります。

最初の接続時に、ミラー・メンバがゲートウェイ・システム・ステータス・フォームに表示されます。 ミラー・メンバは、(ゲートウェイの [サーバ接続] セクションで定義されたとおりに) 現行の構成名で表示されます。その際に、ツールのヒントとしてミラー・セット名、ミラー、ミラー・メンバ名が表示されます。

2 つの新規列である [ミラー名] および [ミラー・ステータス] が [Caché サーバ] テーブルに追加されました。 ミラー・セットおよびミラー・メンバの名前が [ミラー名] 列に表示されます。現在のメンバ・ステータスが [ミラー・ステータス] 列に表示されます。[メンバタイプ] (Failover または Async) が表示され、プライマリ・メンバには Primary.というラベルが付けられます。

プロセス親和性とステート認識モード (保持モード 1)

Web のアーキテクチャはステートレスです。 Web アーキテクチャから最高のパフォーマンス、保守性、およびスケーラビリティを引き出すには、Web アプリケーションはステートレス・パラダイムを採用する必要があります。

既定では、CSP アプリケーションはホストする Caché サーバに対してステートレスな環境で動作します。 CSP ゲートウェイは Caché への接続プールを維持して、それらに負荷を分散し、構成された制限以内で接続プールのサイズを増加または減少させます。 各接続は ($Job 変数によって指定される) 1 つの Caché プロセスに関連付けられます。

ステートレス・モードで動作する通常の CSP アプリケーションの場合は、クライアント・セッションに対する各要求を処理するために使用されるバックエンド Caché プロセスの選択をランダムにすることを検討してください。 ゲートウェイは、そのときに利用可能な任意の接続/プロセスを選択します。

ただし、効率性を高めるために、ゲートウェイは一種の Cachéプロセス親和性を実装します。 つまり、可能であれば、セッションに対する要求を、そのセッションに対する前回の要求を処理するために使用されたものと同じ Caché プロセスに転送しようと試みます。

ゲートウェイはセッション ID に基づいたプロセス親和性に加え、ネームスペースに基づいたプロセス親和性の実装も試みます。 ゲートウェイは各接続がポイントするネームスペースを追跡し、可能な場合は、要求の処理に必要なネームスペースを既にポイントしている接続へ要求を配信します。 これにより、各 Web 要求の受信時に異なるネームスペース間でリソースを移動する際に発生するオーバーヘッドを回避できます。

優先順位という点では、接続を選択する際は、セッション親和性が常に他のすべての考慮事項より優先されます。受け取った要求をそのクライアント・セッションの処理に前回使用された接続に割り当てることができない場合は、代わりにネームスペース親和性を使用して最終的な選択が行われます。

CSP には、セッションに対するすべての要求を予約済みの (またはプライベート) Caché 接続/プロセスにゲートウェイが転送するモードが含まれています。 この処理モードは、CSP セッションとそれらに対応する Caché プロセスの関係に関してステート認識の環境を提供します。

ステート認識モードは CSP 保持モード 1 として実装

ステート認識モードによる処理は、固定クライアント・サーバ環境 (ターミナル・アプリケーション) から Web への従来のアプリケーション・コードの移行を比較的簡単にすることを当初の目的として提供されました。 また、複数の HTTP 要求に広がるトランザクションのサポートも考慮されました。 ただし、ステート認識アプリケーションを作成する際は、以下の段落で概説する制限事項に注意することが必要です。

ステート認識アプリケーションは、ステートレス・アプリケーションほど拡張しないため、新しいアプリケーション (および既存のアプリケーションの変更) は実質的にできる限りステートレスに設計することが推奨されます。 ステート認識モードを使用する場合は、大部分はステートレスなアプリケーションで、控えめに適用することをお勧めします。

アプリケーション全体をステート認識モードで動作するように作成することはお勧めできません。 ステート認識アプリケーションでは、全セッションそれぞれに Caché プロセスを予約する必要があるためにスケーラビリティの問題が発生するほか、転送要求に対する非常に固有の要件により、最新の負荷分散およびフェイルオーバー・ソリューションをフルに利用することができません。 また、ステート認識アプリケーションは、ステートレス・アプリケーションほど優れた耐障害性を備えていません。 例えば、Web サーバ・ワーカ・プロセスのリサイクルはステートレス・アプリケーションの下で透過的に発生しますが、その結果、関連付けられたすべてのステート認識セッションが閉じてしまいます。 もちろん、CSP ゲートウェイの NSD コンポーネントを使用して、ゲートウェイ・プロセス・プールの管理をホスト Web サーバから分離することで、この後者の制限事項は回避できます。

適切なステート認識アプリケーション (または大部分がステートレス・アプリケーション内のステート認識セクション) を作成するには、ある程度のコントロールが必要です。

セッションに対するすべての要求は同じ Caché プロセスによって処理する必要があるため、クライアントが複数の要求を同時に送信する場合にプライベート Caché プロセスへのアクセスをシリアル化するためのキューを維持する必要があります。 元の HTTP v1.1 標準は、クライアントは各サーバに対して同時に 3 つ以上の接続を開いてはいけないと定めています (RFC2616)。 ただし、この制限は構成可能で、実際には、最新世代の Web ブラウザは、既定で、各サーバに対して最大 8 つの接続をサポートしています。 もちろん、各サーバへの最大接続数が増加すると、ステート認識 CSP アプリケーションは深く影響されます。つまり、アプリケーションは、最大 8 つの要求が同時に送信され、1 つのプライベート Caché プロセスへのアクセスを制御するキューに保持されることを期待するようになります。

ステート認識モードで考えられるもう 1 つの落とし穴は、ゲートウェイと Caché の間で動作するサーバ応答タイムアウトの影響です。 応答タイムアウトによる所定の制限時間内にゲートウェイが応答を受信しなかった場合は、接続を閉じる以外の措置をとることはできず、結果的にステート認識セッションは失われてしまいます。

最後に、クライアントが中断すると、ステート認識モードで動作しているアプリケーションで問題が発生する可能性があります。 Caché が応答を生成する時点以降にクライアントが要求を中断すると、ゲートウェイは接続を保持するために (不要になった) 応答ペイロードを吸収しようとします。 この場合も、これをタイムリーに行えない場合は、Caché プロセスを中断する以外の措置をとることはできなくなり、接続が閉じられてセッションが失われることになります。 ゲートウェイが中断された要求のペイロードを吸収しようとしている間に、同じセッションに対するさらなる要求が到着してキューに置かれる可能性があることに注意してください。

ステート認識アプリケーションを作成する際に従うべき設計目標を以下にまとめます。

  • 多数の同時要求を生成するクライアント構造 (例 : HTML フレームセット・ドキュメント) は、できるだけ避けます (または控えめに使用します)。

  • 応答が迅速に生成されるようにします。 これにより、タイムアウトやクライアント中断イベントに関連する問題の範囲が縮小します。 また、セッション・キューの圧力が軽減されます。 Caché のタスクを完了するのに長い時間がかかると予測される場合は、プライマリ・プライベート・プロセスがゲートウェイ (とクライアント) にすばやく応答を返すことができるように、別のプロセスでそのタスクを実行することを検討してください。

ステート認識モードの起動

以下のように保持モードを設定することで、セッションをステート認識にします。

Set %session.Preserve = 1

フォームの OnPreHTTP メソッドでセッションをステート認識としてマークすることを推奨します。

<script language=Cache method=OnPreHTTP arguments="" returntype=%Boolean>
Set %session.Preserve = 1
Quit 1
</script>

ここで指示を出すことで、CSP エンジンは HTTP 応答ヘッダを作成してゲートウェイに送信する前に、セッションの cookie (またはトークン) をステート認識としてマークできます。

OnPreHTTP メソッドが起動した後でセッションをステート認識としてマークすることもできますが、この場合、セッションの cookie/トークンは既に作成されています。 CSP エンジンは、preserve=1 という指示を応答フッタでゲートウェイに渡し (応答ペイロードの後で送信)、ゲートウェイは接続を private とマークして、そのセッション ID に対する指示をキャッシュします。これによってゲートウェイは、以降の要求が到着した際、unmodified セッション・トークンをステート認識として識別することが可能になります。

OnPreHTTP メソッドでセッションがステート認識としてマークされた場合、その情報は事実上クライアントに常駐するセッションの cookie/トークンで運ばれるため、ゲートウェイはそのセッションの移行をキャッシュする必要はありません。

ステート認識モードの維持とエラーへの応答

セッションがステート認識としてマークされ、ゲートウェイがステートの移行を認識して接続をプライベートとマークすると、以下のイベントのいずれかが発生するまでセッションは透過的にステート認識モードで動作します。

  • アプリケーションがステートレス処理モードに戻った場合。

  • アプリケーションがプログラムによってセッションを終了するか、セッションがタイムアウトした場合。

  • エラー状態の結果としてプライベート接続が不完全に閉じた場合。

(おそらくエラー状態の結果として) ステート認識アプリケーションをホストするプライベート接続が不完全に閉じた場合、ゲートウェイはプールで利用可能なステートレス接続に要求を転送し、Caché エラー番号 5974 が返されます。

CSP error occurred
Error: The persistent session is no longer available because the server process does not exist
ErrorNo: 5974
CSP Page: /csp/samples/loop.csp
Namespace: %SYS
Class: <Unknown>

この時点では、要求はステートレス・モードで処理され、このエラーにはアプリケーションが例えばユーザにアプリケーションのログイン・フォームを再度表示するなどして応答します。

ステート認識モードで動作している際は、全ページの %session.NewSession の値をチェックする必要があります。 または、アプリケーションへのアクセスをユーザが最初に許可されたときに、アプリケーションが %session.Data に格納されているユーザ固有の認証データの有効性をチェックする必要があります。これらのチェックはセキュリティのためにも、ユーザ・セッションが依然としてステート認識処理モードにしっかり固定されていることを確認するためにも重要です。 これらの状況では、エラー状態は自動的に発生しません。なぜなら、セッションは既に (適切な手順を踏んで正常に) ステート認識モードから移行している可能性があるからです。 例えば、受信セッションのトークンは依然としてステート認識とマークされているもののアプリケーションは既にステートレス・モードに移行している状況を考えてみましょう。この状況は、移行が行われる前に処理されたフォームに (CSPCHD として) セッションのトークンが埋め込まれているために起こります。

最後に、(例えば、タイムアウトの後で) セッションが終了する際、CSP エンジンはそのセッションに関連付けられたすべての処理データを削除することに注意してください。その後は、そのセッションに対する受信要求は、すべて新しいセッションに対する要求のように処理されます。

Caché が CSP アプリケーションに提供する埋め込みのセキュリティ・メカニズムは、前述の不測の事態から保護します。 (Caché プロセスに関して) ステート認識アプリケーション内の継続性が失われた場合は必ず、ユーザには自動的にログイン・フォームが表示されます。

ステート認識モードの終了

以下のように保持モードを設定することで、アプリケーションをステートレス処理モードに戻すことができます。

Set %session.Preserve = 0

このコードは、フォームの OnPreHTTP メソッドで実行することを推奨します。

<script language=Cache method=OnPreHTTP arguments="" returntype=%Boolean>
Set %session.Preserve = 0
Quit 1
</script>

ここで指示を出すことで、CSP エンジンは HTTP 応答ヘッダを作成してゲートウェイに送信する前に、セッションの cookie (またはトークン) をステートレスとしてマークできます。

セッションは以下のように即座に終了できます。

Set %session.EndSession = 1

このプロパティを設定すると、セッションは現在の要求を処理した後で直ちに終了します。

以下のようにセッションのタイムアウトを設定できます。

Set %session.AppTimeout = 900

アクティビティがない時間が所定の秒数に達すると、セッションはタイムアウトして終了します。 既定値は 900 秒 (15 分) です。

Caché のゲートウェイ・レジストリ

Caché ベースの CSP ゲートウェイ・レジストリは、接続された各ゲートウェイ・インストールを Caché に登録し、Caché コードでこれらのゲートウェイ・インストールと通信できるようにするインフラストラクチャを提供します。 そのようなプログラムで制御された通信には、ゲートウェイの実行時構成の読み取りと変更、およびシステム・ステータスとログ情報の収集が含まれます。 関連するクラスは以下のとおりです。

%CSP.Mgr.GatewayRegistry (The Gateway Registry)
%CSP.Mgr.GatewayMgr  (A Connected Gateway)

以下のコードは、すべての接続された、つまりアクティブなゲートウェイ・インストールをリストし、Web サーバ IP アドレス、ポート、およびゲートウェイ・ビルド番号をコンソール・ウィンドウに書き込みます。

Set reqistry = $system.CSP.GetGatewayRegistry()
Set gateways = reqistry.GetGatewayMgrs()
For no=1:1:gateways.Count() {
     Set gateway = gateways.GetAt(no)
     Write !,no, " : ",
     Write gateway.IPAddress,":",gateway.Port," ",gateway.Version
}

Caché が最初に起動されたときは、このリストは空です。 管理者およびユーザのアクティビティが増加すると、少なくとも 2 つのエントリが表示されます。管理ポータルを処理するプライベート Web サーバ用に 1 つ、およびアプリケーションをサポートする外部 Web サーバ用に最低 1 つです。

上記のクラスについては、他のドキュメントで説明されています。 一般的なタスクを説明するコード例を以下に示します。

既定のパラメータのリスト

Kill defaults
Do gateway.GetDefaultParams(.defaults)
ZWrite defaults

既定のパラメータの更新

Kill newpars
Set newpars("Server_Response_Timeout")=30
Do gateway.SetDefaultParams(.newpars)

サーバのリスト

Set status = gateway.GetServers(.servers)
For no=1:1:$ListLength(servers) {
     Set server = $List(servers,no)
     Write !,no, " : ",server
}

サーバ・パラメータのリスト

Kill serverpars
Do gateway.GetServerParams("LOCAL",.serverpars)
ZWrite serverpars

サーバ・パラメータの更新

Kill newpars
Set newpars("Maximum_Server_Connections")=250
Do gateway.SetServerParams("LOCAL",.newpars)

アプリケーション・パスのリスト

Set status = gateway.GetApplicationPaths(.paths)
For no=1:1:$ListLength(paths) {
     Set path = $List(paths,no)
     Write !,no, " : ",path
}

アプリケーション・パラメータのリスト

Kill pathpars
Do gateway.GetApplicationParams("/csp",.pathpars)
ZWrite pathpars

アプリケーション・パラメータの更新

Kill newpars
Set newpars("GZIP_Compression")="Enabled"

ゲートウェイ・キャッシュのクリア

Do gateway.ClearCache(“*”)

構成を再ロードするようゲートウェイを強制する

ゲートウェイの構成が外部エージェント (つまり、ゲートウェイ独自のシステム管理スイート以外のエージェント) によって変更される場合があります。

完全な再起動を必要とせずに、ゲートウェイに構成を再ロードするようインタラクティブに指示するには、以下の 2 つの方法があります。

Caché ベースのゲートウェイ・レジストリの使用

以下のレジストリ・メソッドが提供されています。

Set status = %CSP.Mgr.GatewayMgr.ActivateCSPIni()

呼び出しが成功すると、ゲートウェイはその構成ファイル (CSP.ini) を読み取り、行われたすべての変更を有効化します。

Caché 外部のスクリプトの使用

スクリプトでは、変更されたゲートウェイの構成ファイル (CSP.ini) の SYSTEM セクションに次の行 (大文字と小文字が区別される) を追加する必要があります。

[SYSTEM]
RELOAD=1

ゲートウェイ・ケアテイカー・デーモンは、ほぼ 1 分おきに RELOAD フラグを確認し、正しく設定されていれば、その構成を再ロードおよび再起動して、ファイルからフラグを削除します。 再ロード操作が成功すると、以下のメッセージがイベント・ログに書き込まれます。

Gateway Management 
Gateway Configuration Reloaded and Reactivated

WebSockets の使用 (RFC 6455)

Web は、要求/応答のパラダイムの周囲に構築されています。つまり、クライアントは要求をサーバに送信し、サーバは応答をクライアントに送信することによって応答します。 このパラダイム (および HTTP 自体) は、サーバがクライアントとの要求/応答のサイクルを開始する際に使用するこの通信プロトコルの反転形式を使用できません。 多くのテクノロジが開発され、サーバがクライアントとの対話を開始できるという幻想を作り出しました。 これらのテクノロジは、通常、プッシュ・ベース・テクノロジまたはコメット・ベース・テクノロジと呼ばれていて、Web インフラストラクチャ上での一般的な配置に不適切であるという問題があります。 現在使用されている 3 つの主なテクノロジを以下に説明します。

ショート・ポーリング

この手法では、クライアントは定期的に HTTP 要求を送信してサーバの状態の変化を検出し、サーバはすぐに応答するようにプログラムされています。 空の応答は変化なしを示します。

問題 :

  • ポーリング頻度 (および応答性) が、ユーザが許容できる更新遅延によって制限されます。

  • 各要求は、HTTP トラフィックが大量になってしまう完全な HTTP 要求/応答の往復で、これはサーバおよびネットワーク・インフラストラクチャへの許容できない負荷になります。

  • メッセージ交換ごとに HTTP プロトコルのオーバーヘッドが送信され、メッセージ・サイズが最大転送単位 (MTU) を超える場合には非常に大きな負荷になります (MTU はイーサネットの場合には通常 1500 バイトです)。

ロング・ポーリング

この手法では、クライアントは HTTP 要求を送信しますが、サーバは、変化の通知をクライアントが必要とする場合のみ応答します。 クライアントは、通常、サーバが応答メッセージを送信するとすぐに別の “ロング・ポール” 要求を送信します。

問題 :

  • この手法ではショート・ポーリングよりも HTTP トラフィックの量は減りますが、各要求は完全な HTTP 要求/応答の往復です。

  • 永続的な接続を維持する負荷があります。

  • メッセージ交換ごとに HTTP プロトコルのオーバーヘッドが送信されます。

  • この手法が成功するかどうかは、タイムアウトによって悪影響を受ける可能性があります。

HTTP ストリーミング

この手法は、クライアントとサーバの間の永続的な (または “キープアライブ”) 接続を維持する HTTP プロトコルの機能を利用します。 クライアントは、クライアントが変化の通知を必要とする場合のみ応答するサーバに接続された状態を永続的に維持している HTTP 要求を送信します。 サーバは、応答メッセージを送信した後に接続を終了しません。また、クライアントは、サーバからの次のメッセージを待機します (または、独自にメッセージをサーバに送信します)。

問題 :

  • クライアント/サーバの交換全体は、単一の HTTP 要求/応答の往復でフレーム化されます。すべてのサーバがこれをサポートするわけではありません。

  • この手法が成功するかどうかは、プロキシ、ゲートウェイなどの媒体の動作によって悪影響を受ける可能性があります。…

  • 部分的な応答を他方にすぐに送信する義務はどちら側にもありません。

  • この手法は、クライアントのバッファ方式によって悪影響を受ける可能性があります。

  • この手法は、タイムアウトによって悪影響を受ける可能性があります。

WebSocket プロトコル

WebSocket プロトコル (RFC 6455) は、クライアントとサーバの間で全二重のメッセージ指向の通信チャネルを指定することによって、サーバがクライアントにメッセージを事前にプッシュできるようにするという、基本的な要件に対処します。 このプロトコルは、クライアントとサーバの間に既に確立されている標準 TCP チャネルを介して動作するように (したがって保護されるように) 設計されています。 つまり、Web ブラウザと Web サーバの間で HTTP プロトコルをサポートするために既に使用されているチャネルです。

WebSocket プロトコルおよびその API は、W3C によって標準化され、クライアント部分は HTML 5 に組み込まれています。

媒体 (プロキシやファイアウォールなど) は、WebSocket プロトコルを認識していること (およびサポートしていること) が期待されています。

ブラウザのサポート

WebSocket プロトコルの最終規格の作成は数回行われ、それぞれに程度の異なるブラウザのサポートが組み込まれています。その履歴を以下のまとめます。

  • Hixie-75 :

    • Chrome 4.0+5.0、Safari 5.0.0

  • HyBi-00/Hixie-76 :

    • Chrome 6.0-13.0、Safari 5.0.2+5.1、Firefox 4.0 (無効)、Opera 11 (無効)

  • HyBi-07+ :

    • Chrome 14.0、Firefox 6.0、IE 9 (Silverlight 拡張経由)

  • HyBi-10 :

    • Chrome 14.0+15.0、Firefox 7.0+8.0+9.0+10.0、IE 10 (Windows 8 開発者プレビュー経由)

  • HyBi-17/RFC 6455

    • Chrome 16

    • Safari 6

    • Firefox 11

    • Opera 12.10/Opera Mobile 12.1

    • IE 10

最後の強調表示されたセクションは、ポータブル Web アプリケーションを開発する目的では最も重要です。

サーバのサポート

サーバ指向の JavaScript ベースの Node.js テクノロジは、最も精巧で、現在最も成熟した WebSocket プロトコルの実装を確実に提供します。 このため、WebSocket は、このドキュメント作成時点 (2013 年 3 月) まで Node.js と深く関連付けられてきました。 しかし、他の Web サーバ・テクノロジが急速に追いついていて、主な Web サーバすべての最新バージョンが、以下に示すように WebSocket のサポートを提供するようになりました。

  • Node.js

    • すべてのバージョン

  • Apache v2.2

  • IIS v8.0

    • Windows 8 および Windows Server 2012

  • Nginx v1.3

  • Lighttpd

強調表示されたセクションは、CSP を備えたポータブル Web アプリケーションを開発する目的では最も重要です。

プロトコルの詳細

WebSocket の作成には、クライアントとサーバの間のメッセージの順序付けされた交換が含まれます。 まず、WebSocket ハンドシェイクを実行する必要があります。 ハンドシェイクは、HTTP メッセージ交換に基づいていて、これに似ています。そのため、既存の HTTP インフラストラクチャ使用して問題なく渡すことができます。

  • クライアントは、WebSocket 接続のハンドシェイク要求を送信します。

  • サーバは、ハンドシェイク応答を送信します (可能な場合)。

Web サーバは、ハンドシェイク要求メッセージの従来の HTTP ヘッダ構造を認識し、WebSocket プロトコルをサポートしていることを示す、同じように構成された応答メッセージをクライアントに送信します (応答メッセージを送信できることが前提)。 両者が同意した場合、チャネルは HTTP (http://) から WebSocket プロトコル (ws://) に切り替わります。

  • プロトコルが正常に切り替わると、チャネルは、クライアントとサーバの間の全二重通信を許可します。

  • 個別のメッセージのデータ・フレーミングは最小です。

クライアントからの典型的な WebSocket ハンドシェイク・メッセージ

GET /csp/user/MyApp.MyWebSocketServer.cls HTTP/1.1
Host: localhost
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat
Sec-WebSocket-Version: 13
Origin: http://localhost

サーバからの典型的な WebSocket ハンドシェイク・メッセージ

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat

プロトコルを HTTP から WebSocket にアップグレードすることをクライアントのハンドシェイク・メッセージが要求する方法に注意してください。 クライアント (Sec-WebSocket-Key) とサーバ (Sec-WebSocket-Accept) の間の一意のキーの交換にも注意してください。

WebSocket のクライアント・コード (JavaScript)

ブラウザ環境では、WebSocket プロトコルのクライアント側は JavaScript コードで実装されます。 標準のテキスト本に使用法のモデルについて詳細に説明されています。 このドキュメントでは、その基本について簡単に説明します。

WebSocket の作成

最初のパラメータは、WebSocket アプリケーションのサーバ側を特定する URL を表します。 2 番目のパラメータは任意です。これがある場合、WebSocket 接続が成功することをサーバがサポートする必要がある、サブプロトコルを指定します。

var ws = new WebSocket(url, [protocol]);

例:

ws = new WebSocket(((window.location.protocol == "https:")
     ? "wss:" : "ws:") \
     + "//" + window.location.host
     + /csp/user/MyApp.MyWebSocketServer.cls);

基盤となるトランスポートが SSL/TLS を使用して保護されているかどうかに応じて、プロトコルが ws または wss に定義される方法に注意してください。

読み取り専用属性 ws.readyState は、接続の状態を定義します。以下の値のいずれかになります。

  • 0 : 接続はまだ確立されていません。

  • 1 : 接続が確立され、通信可能です。

  • 2 : 接続は閉じているハンドシェイクに従います。

  • 3 : 接続が閉じられているかまたは開くことができませんでした。

読み取り専用属性 ws.bufferedAmount は、send() メソッドを使用してキューに入っている UTF-8 テキストのバイト数を定義します。

WebSocket のイベント

以下のイベントを使用できます。

  • ws.onopen : ソケット接続が確立されるとトリガされます。

  • ws.onmessage : クライアントがサーバからデータを受信するとトリガされます。

event.data で受信されるデータ。

  • ws.onerror : 通信でエラーが発生するとトリガされます。

  • ws.onclose : 接続が閉じられるとトリガされます。

WebSocket のメソッド

以下のメソッドを使用できます。

  • ws.send(data) : クライアントにデータを送信します。

  • ws.close() : 接続を閉じます。

WebSocket のサーバ・コード (CSP)

WebSocket サーバを実装するベース Caché クラスは %CSP.WebSocketOpens in a new tab です。

クライアントが WebSocket 接続を要求すると、初期 HTTP 要求 (初期ハンドシェイク・メッセージ) は、アプリケーションの WebSocket サーバを初期化するように CSP エンジンに指示します。 WebSocket サーバは、要求元の URL で名前を付けられたクラスです。 例えば、WebSocket サーバが MyApp.MyWebSocketServer という名前で、USER NameSpace で動作するように設計されている場合、WebSocket 接続を要求するために使用される URL は以下のようになります。

/csp/user/MyApp.MyWebSocketServer.cls
WebSocket のイベント

WebSocket サーバの実装は、ベースの %CSP.WebSocket クラスから派生します。 応答として以下のイベントに実装する重要なメソッドは 3 つあります。 これらのメソッドのいずれかを呼び出す前に、CSP セッションがロック解除されることに注意してください。

OnPreServer (optional)

このメソッドを使用して、WebSocket サーバが確立される前に実行する必要があるコードを呼び出します。 SharedConnection プロパティの変更はここで行う必要があります。

Server (Mandatory)

WebSocket サーバ。 これは、WebSocket アプリケーションのサーバ側の実装です。 Read() メソッドおよび Write() メソッドを使用して、クライアントとメッセージを交換できます。 EndServer() メソッドを使用して、サーバ側から WebSocket を正常に閉じます。

OnPostServer (optional)

このメソッドを使用して、WebSocket サーバが閉じられた後に実行する必要があるコードを呼び出します。

WebSocket のメソッド

以下のメソッドが用意されています。

Method Read(ByRef len As %Integer = 32656,
     ByRef sc As %Status,
     timeout As %Integer = 86400) As %String

このメソッドは、クライアントから len で指定された文字まで読み取ります。 呼び出しに成功すると、ステータス (sc) は $$$OK として返されます。失敗すると、以下のエラー・コードのいずれかが返されます。

  • $$$CSPWebSocketTimeout : 読み取りメソッドはタイムアウトになりました。

  • $$$CSPWebSocketClosed : クライアントが WebSocket を終了しました。

Method Write(data As %String) As %Status

このメソッドは、データをクライアントに書き込みます。

Method EndServer() As %Status

このメソッドは、クライアントとの接続を閉じることによって WebSocket サーバを正常に終了します。

Method OpenServer(WebSocketID As %String = "") As %Status

このメソッドは、既存の WebSocket サーバを開きます。 このメソッドを使用してアクセスできるのは、非同期で動作している WebSocket (SharedConnection=1) のみです。

WebSocket のプロパティ

以下のプロパティが用意されています。

SharedConnection (default: 0)

このプロパティによって、クライアントと WebSocket サーバの間の通信を専用のゲートウェイ接続を介して行う必要があるか、または共有接続のプールを介して非同期で行う必要があるかが決まります。 このプロパティは、OnPreServer() メソッドで設定する必要があり、以下のように設定できます。

  • SharedConnection=0 : WebSocket サーバは、専用のゲートウェイ接続を介してクライアントと同期して通信します。 このモードの処理では、ホスト接続は、アプリケーションの WebSocket サーバに対して事実上「プライベート」です。

  • SharedConnection=1 : WebSocket サーバは、共有ゲートウェイ接続のプールを介してクライアントと非同期で通信します。

WebSocketID

このプロパティは、WebSocket の一意の ID を表します。

SessionId

このプロパティは、WebSocket が作成されたホスト CSP セッション ID を表します。

BinaryData

このプロパティは、転送されたデータ・ストリームを UTF-8 エンコード・テキストとして解釈する機能をバイパスし、WebSocket フレーム・ヘッダに適切なバイナリ・データ・フィールドを設定するようゲートウェイに指示します。

これは、バイナリ・データのストリームをクライアントに書き込む前に 1 に設定する必要があります。 次に例を示します。

Set ..BinaryData = 1

WebSocket サーバの例

以下の単純な WebSocket サーバ・クラスは、クライアントからの接続を受け入れ、受信したデータを単純にエコー・バックします。

タイムアウトは 10 秒に設定され、Read() メソッドがタイムアウトになるたびに、メッセージがクライアントに書き込まれます。 これは、WebSocket を実証する重要な概念の 1 つ (サーバからクライアントとのメッセージ交換の開始) を示します。

最後に、クライアント (つまりユーザ) が文字列 exit を送信すると、WebSocket は正常に閉じます。

Method OnPreServer() As %Status
{
   Quit $$$OK
}

Method Server() As %Status
{
   Set timeout=10
   For  {
      Set len=32656
      Set data=..Read(.len, .status, timeout)
      If $$$ISERR(status) {
If $$$GETERRORCODE(status) = $$$CSPWebSocketClosed {
Quit
}
         If $$$GETERRORCODE(status) = $$$CSPWebSocketTimeout {
               Set status=..Write(“Server timed-out at “_$Horolog)
         }
      }
      else {
         If data="exit" Quit
         Set status=..Write(data)
      }
   }
   Set status=..EndServer()
   Quit $$$OK
}

Method OnPostServer() As %Status
{
   Quit $$$OK
}

}

WebSockets サーバの非同期動作

前の節の例は、専用の Caché 接続を介して、WebSocket サーバがクライアントと同期して動作する例を示しています。 このような接続が確立されると、ゲートウェイ・システム・ステータス・フォームのステータス列で WebSocket というラベルが付けられます。 このモードでは、WebSocket は、ホスト CSP セッションのセキュリティ・コンテキスト内で動作し、そのセッションに関連付けられたすべてのプロパティに簡単にアクセスできます。

非同期モードでの動作 (SharedConnection=1) では、ホスト接続は、WebSocket オブジェクトが作成されるとすぐに解放され、クライアントとのその後の対話は、共有接続のプールを介して行われます。クライアントからのメッセージは、ゲートウェイ接続の従来のプールを介して Caché に到達し、クライアントへのメッセージは、ゲートウェイと Caché の間に確立されたサーバ接続のプールを介して送信されます。

非同期モードでは、WebSocket サーバは、メイン CSP セッションから分離されます。つまり、 SessionId プロパティは、ホスト・セッション ID の値を保持しますが、セッション・オブジェクトのインスタンスは自動的には作成されません。

前に示した例は、単純に OnPreServer() メソッドの SharedConnection プロパティを設定することによって、非同期で実行できます。 ただし、Caché プロセスを永遠に WebSocket と関連付ける必要はありません。 Server() メソッドは、WebSocket を閉じずに終了できます (ホスト・プロセスは停止します)。 WebSocketID が保持された場合、WebSocket は、次に別の Caché プロセスで開くことができ、クライアントとの通信が再開されます。

例 :

Class MyApp.MyWebSocketServer Extends %CSP.WebSocket
{

Method OnPreServer() As %Status
{
MYAPP.SAVE(..WebSocketID)
   Set SharedConnection = 1
   Quit $$$OK
}

Method Server() As %Status
{
   Quit $$$OK
}

Method OnPostServer() As %Status
{
   Quit $$$OK
}

}

WebSocketID は OnPreServer() メソッドを次に使用できるように保持されることに注意してください。 また、OnPreServer() メソッドおよび Server() メソッドの SharedConnection プロパティの設定は単に終了することにも注意してください。

WebSocketID の後続の取得 :

Set WebSocketID = MYAPP.RETRIEVE()

クライアントとのリンクの再確立 :

Set ws=##class(%CSP.WebSocketTest).%New()
Set %status = ws.OpenServer(WebSocketID)

クライアントからの読み取りとクライアントへの書き込み :

Set %status=ws.Write(message)
Set data=ws.Read(.len, .%status, timeout)

最後に、サーバ側からの WebSocket のクローズ :

Set %status=ws.EndServer()

自動配置サイト (クラウドなど) のオプション

このビルドには、ゲートウェイによって保守されるバージョン/タイムスタンプのパラメータをゲートウェイ構成ファイル (CSP.ini) から実行時パラメータ・ファイル (CSPRT.ini) に再配置するオプションがあります。CSPRT.ini は、CSP ゲートウェイによって所有および保守され、構成設定は含まれていません。

このオプションは、クラウドベースのインストールを作成および保守するために使用するなどの自動ソフトウェア配置環境のニーズを満たします。 こうした環境では、それらの運用環境の外側で構成ファイルが保守されます。変更が行われると、再配置または更新の処理がトリガされます。 そのため、実行時に構成ファイルが CSP ゲートウェイによって変更されないことが重要になります。

このオプションを呼び出す場合は、CSP ゲートウェイの初期化 (ホスト Web サーバの起動または再起動) の前に、CSP.ini ファイルで READONLY パラメータを設定します。

[SYSTEM]
READONLY=1

影響を受けるパラメータは、以下のとおりです。

Configuration_Initialized
Configuration_Initialized_Build
Configuration_Modified
Configuration_Modified_Build

例 :

Configuration_Initialized        = Thu Nov 12 18:02:57 2015
Configuration_Initialized_Build  = 1601.1551
Configuration_Modified           = Thu Jul 14 16:47:40 2016
Configuration_Modified_Build     = 1603.1599
FeedbackOpens in a new tab