WebSphere Application Server Network Deployment, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

フォーム・ログイン処理のためのサーブレット・フィルターの開発

フォーム・ベースのログイン・メカニズムを使用すると、 ログイン画面のルック・アンド・フィールを制御できます。 フォーム・ベースのログインでは、ユーザー ID およびパスワード情報 を取り出すために使用するログイン・ページを指定します。認証が失敗したときに 表示されるエラー・ペ ージを指定することもできます。

このタスクについて

認証の前後に追加の認証 または追加処理が必要な場合は、オプションでサーブレット・フィルターを使用できます。サーブレット・フィルターは、 要求と応答を動的にインターセプトし、その要求または応答に含まれている 情報を変換または使用することができます。 1 つ以上のサーブレット・フィルターを、サーブレットまたはサーブレットの グループに付加することができます。 サーブレット・フィルターは、JavaServer Pages (JSP) ファイルおよび HTML ページに付加することもできます。付加されたすべてのサーブレット・フィルターは、 サーブレットを起動する前に呼び出されます。

フォーム・ベースのログインとサーブレット・フィルターは両方とも、 サーブレット・バージョン 2.3 仕様に準拠するすべての Web コンテナーによって サポートされます。 フォーム・ログイン・サーブレットは認証を実行し、サーブレット・フィルターは、 追加の認証または情報の監査やロギングを実行します。

サーブレット・フィルターを使用して事前ログインおよび事後ログインのアクション を実行するには、これらのフィルターを、フォーム・ログイン・ページ・サポート 用または /j_security_check URL 用のいずれかに構成してください。j_security_check は、ユーザー名を含む j_username パラメーター、 およびパスワードを含む j_password パラメーターを指定した、 フォーム・ログイン・ページでポストされます。サーブレット・フィルターは、 ユーザー名パラメーターおよびパスワード情報を使用して、さらに多くの認証またはその他の特別なニーズ を実行できます。

プロシージャー

  1. サーブレット・フィルターは javax.servlet.Filter クラスをインプリメントします。フィルター・クラスで 3 つのメソッドをインプリメントします。
    • init(javax.servlet.FilterConfig cfg)。 このメソッドは、コンテナーによって、 サーブレット・フィルターがサービス内に入れられるときに一度呼び出されます。 このメソッドに渡される FilterConfig には、サーブレット・フィルターの 初期パラメーターが含まれています。サーブレット・フィルターの初期パラメーターは、 構成する際にアセンブリー・ツールを使用して指定してください。
    • destroy。このメソッドは、コンテナーによって、サーブレット・フィルターがサービスから取り出されるときに呼び出されます。
    • doFilter(ServletRequest 要求、ServletResponse 応答、FilterChain チェーン)。 このメソッドは、サーブレットを呼び出す前に、このフィルターにマップされる 各サーブレット要求ごとに、コンテナーによって呼び出されます。このメソッドに渡される FilterChain チェーンを使用して、 フィルターのチェーン内の次のフィルターを呼び出すことができます。 要求された元のサーブレットは、チェーン内の最後のフィルター が chain.doFilter メソッドを呼び出すときに実行されます。 したがって、元のサーブレットをフィルター操作の後に 実行するために、すべてのフィルターが chain.doFilter メソッドを呼び出します。 追加の認証検査がフィルター・コードにインプリメントされており、 その結果が失敗した場合は、元のサーブレットは実行されません。 chain.doFilter メソッドは呼び出されず、その他のなんらかのエラー・ページ にリダイレクトすることができます。
  2. 1 つのサーブレットが多数のサーブレット・フィルターにマップしている場合、サーブレット・フィルターは、アプリケーションの web.xml デプロイメント記述子にリストされている順に呼び出されます。サーブレット・フィルター・クラス・ファイル は、アプリケーションの WEB-INF/classes ディレクトリーに置いてください。

以下にサーブレット・フィルターの例を示します。このログイン・フィルターは、 ログイン前およびログイン後のアクションを実行するために /j_security_check URL にマップ することができます。
import javax.servlet.*;
     public class LoginFilter implements Filter {
     protected FilterConfig filterConfig;
     // Called once when this filter is instantiated.      // If mapped to j_security_check, called
     // very first time j_security_check is invoked.
     public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
        }
     public void destroy() {
        this.filterConfig = null;
        }
      // Called for every request that is mapped to this filter.      // If mapped to j_security_check,
     // called for every  j_security_check action
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    throws java.io.IOException, ServletException   {
         // perform pre-login action here
         chain.doFilter(request, response);
         // calls the next filter in chain.
         // j_security_check if this filter is 
         // mapped to j_security_check.
        // perform post-login action here.
                 }
       }



サブトピック
例: サーブレット・フィルターを使用して、フォーム・ログイン中にログイン前後処理を実行する
サーブレット・フィルターの構成
関連概念
サンプルへのアクセス
関連タスク
アセンブリー・ツールを使用した Web アプリケーションの保護
Web アプリケーション・ログインのカスタマイズ
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 10:13:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/tsec_servlet.html