クライアントと,WebサーバまたはインプロセスHTTPサーバとの間に,SSLアクセラレータや負荷分散機などのゲートウェイを配置している場合で,welcomeファイルやForm認証画面への遷移時などにWebコンテナが自動的にリダイレクトするとき,Webコンテナではゲートウェイの情報を得ることができず,転送先のURLを正しく作成できないことがあります。
これを解決するために,ゲートウェイ指定機能を使用します。ゲートウェイ指定機能によって,Webコンテナにゲートウェイ情報を通知し,welcomeファイルやForm認証画面に正しくリダイレクトできるようになります。
ゲートウェイ指定機能は次のような場合に使用できます。
- クライアントと,WebサーバまたはインプロセスHTTPサーバとの間にSSLアクセラレータを配置する場合
クライアントからSSLアクセラレータへのアクセスがHTTPSの場合でも,SSLアクセラレータからWebサーバへのアクセスはHTTPとなるため,WebコンテナはHTTPによるアクセスであると認識します。このため,welcomeファイルやForm認証画面へのリダイレクト先URLのスキームはHTTPとなります。
この場合,ゲートウェイ指定機能を使用して,スキームを常にhttpsとみなすように指定することで,正しくリダイレクトできるようになります。
- Hostヘッダのないリクエストに対して,リクエストを受けたWebサーバまたはインプロセスHTTPサーバ以外へリダイレクトする必要がある場合
Hostヘッダのないリクエストをリダイレクトする場合,リダイレクト先URLのホスト名・ポート番号は,リクエストを受けたWebサーバのホスト名・ポート番号となります。
ゲートウェイ指定機能は,WebサーバまたはインプロセスHTTPサーバの前に負荷分散機を配置している場合などで,クライアントがアクセスするURLのホスト名・ポート番号が,リクエストを受けたWebサーバまたはインプロセスHTTPサーバと異なるときに使用します。これによって,クライアントからアクセスするホスト名・ポート番号が指定されるので,正しくリダイレクトできるようになります。
なお,インプロセスHTTPサーバを使用する場合,一つのWebコンテナに複数の異なる経路でアクセスする場合(複数のゲートウェイからWebコンテナにHTTPリクエストが転送される場合など),ゲートウェイ指定機能を使用できません。インプロセスHTTPサーバを使用する場合,ゲートウェイ指定機能を使用するには,Webコンテナへのアクセス経路は一つになる構成にする必要があります。
なお,Webコンテナにゲートウェイ情報を通知するための設定は,リダイレクタに指定します。Webコンテナにゲートウェイ情報を通知するための設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。
●注意事項
ゲートウェイ指定機能を使用する上での注意事項を次に示します。
- リダイレクト先URLのホスト名,およびポート番号の指定について
通常,ブラウザはHostヘッダを付けてリクエストを送信するため,リダイレクト先URLのホスト名やポート番号を指定する必要はありません。
なお,リクエストにHostヘッダがあるかどうかは,javax.servlet.http.HttpServletRequestクラスのgetHeaderメソッドに,引数「Host」を指定して呼び出すことで確認できます。
- サーブレットAPIの動作について
ゲートウェイ指定機能の利用によって,一部のサーブレットAPIの動作が変わります。WebアプリケーションでAPIを利用するときには注意が必要です。
なお,動作が変わるサーブレットAPIについては,「12.7.1 実装時の留意事項」を参照してください。
- web.xmlの<transport-guarantee>タグについて
ゲートウェイ指定機能でスキームをHTTPSとみなすように設定した場合,WebサーバへのリクエストがHTTPであってもHTTPSであると見なされます。このため,web.xmlの<transport-guarantee>タグでINTEGRALやCONFIDENTIALを指定してもHTTPSのURLへリダイレクトされないので注意してください。
- CookieのSecure属性について
ゲートウェイ指定機能でスキームをHTTPSとみなすように設定している場合に,Webコンテナが生成したセッションIDを,Cookieによってクライアントに返すとき,そのCookieにはSecure属性が付与されます。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.