カスタム・タグ・ライブラリーの作成

カスタム・タグ・ライブラリーを作成するステップは、例を用いて説明するのが最適です。 以下の例は、sslCheck と呼ばれる新しいタグ・ライブラリーを作成するステップを示したものです。 このライブラリーは、Web サイトを保護するために Secure Socket Layer (SSL) を使用します。 SSL により、ご使用の Web ブラウザーと Web サーバーの間のセキュア接続が可能となり、sslCheck タグにより、 セキュア接続の使用法には融通性がもたらされます。 このタグは、Java™ と JavaScript™ を含め、どのような JSP スクリプトでも使用することができます。

以下の簡単なタグ実装では、使用されるプロトコルが検査されてから、タグのパラメーター化 (後に説明) に応じてユーザーがセキュア・ページまたはエラー・ページに転送されます。 こうしたセキュア接続の実装は、JSP ページ (サーバー・サイドの動的に実行するページ) の場合にかぎり働き、HTML (静的) ページの場合には働きません。

新しいタグ用に次の 2 つのファイルを作成する必要があります。
  • sslCheck.java - タグの Java 実装
  • sslCheck.tld - 新しいタグの taglib 定義

sslCheck .java の作成

Java パースペクティブから以下のことを行ってください。
  1. 「YourApp」を選択する。
  2. 「ファイル」 > 「新規」 > 「クラス」の順に選択する。「新規 Java クラス」ウィンドウで以下のものを入力します。
    • パッケージ: com.ibm.entry.security
    • 名前: sslCheck
    • スーパー・クラス: java.lang.Object
  3. 「終了」をクリックする。ソース・ファイルが自動的に開きます。
  4. 自動コードを削除して、これを以下のコードに置き換える。
    package com.ibm.entry.security;
     import java.io.*;
     import javax.servlet.http.*;
     import javax.servlet.jsp.*;
     import javax.servlet.jsp.tagext.TagSupport;
    
    public class sslCheck extends TagSupport {
    
      private String errorpage=null;
    
      public void setErrorpage(String errorpage) {
         this.errorpage=errorpage;
       }
    
      public int doStartTag() throws JspException {
         try {
          HttpServletRequest request=(HttpServletRequest)pageContext.getRequest();
           HttpServletResponse response=(HttpServletResponse)pageContext.getResponse();
           if(request.getScheme().indexOf("https")==-1) {
             if(errorpage!=null) {
               // redirect to the error page
               response.sendRedirect(errorpage);
             } else {
               // redirect to the page using ssl
               String jumpURL="https://"+request.getServerName()+request.getRequestURI();
               if(request.getQueryString()!=null) jumpURL+="?"+request.getQueryString();
               response.sendRedirect(jumpURL);
             }
             return SKIP_PAGE;
           }
         } catch (IOException ioe) {
           throw new JspTagException("sslcheck tag failed");
         }
        return EVAL_BODY_INCLUDE;
       }
    
      public int doEndTag() {
         return EVAL_PAGE;
       }
     } 
  5. ファイルを保管して、閉じる。
sslCheck.tld の作成
TLD ファイル内にタグを定義する必要があります。TLD ファイルを作成するには、Web パースペクティブから以下のことを行ってください。
  1. 「YourApp」を選択する。
  2. Web モジュールの WEB-INF (WebContent フォルダーの下にあります) を選択する。
  3. 「WEB-INF/tlds」フォルダーを右マウス・ボタン・クリックする。
  4. 「新規」 > 「ファイル」の順に選択する。
  5. ファイルの名前を sslCheck.tld とする。
  6. 「終了」をクリックする。ソース・ファイルが自動的に開きます。 自動コードを削除して、これを以下のコードに置き換える。
    <?xml version="1.0" encoding="UTF-8"?>
      <taglib>
        <tlibversion>1.0</tlibversion>
        <shortname>sslchk</shortname>
        <info>Tag library for checking SSL</info>
        <tag>
          <name>sslcheck</name>
          <tagclass>com.ibm.entry.security.sslCheck</tagclass>
          <bodycontent>empty</bodycontent>
          <attribute>
            <name>errorpage</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
        </tag>
      </taglib>
  7. ファイルを保管して、閉じる。
タグの使用
sslcheck タグを使用するためには、以下の taglib 参照が必要です。
  1. JSP ソース・ファイルの最初の行に以下の taglib 定義を置く。
    <%@ taglib uri="/WEB-INF/tlds/sslCheck.tld" prefix="sslchk" %>
  2. taglib 定義の直後のコードに以下の SSL 検査タグの 1 つを置く。 errorpage 属性の有る無しにかかわらずタグを使用することができます。
    オプション 説明
    <sslchk:sslcheck errorpage="error_page"/> 要求が JSP に出され、SSL が使用されていない時は、定義された、errorpage 属性のあるページが表示されます。 アプリケーションを使用して開始する前に、エラー・メッセージ付きのエラー・ページを作成する必要があります。
    <sslchk:sslcheck/> errorpage 属性が無い状態でタグを使用すると、ページがただちに、同じロケーションにではあるが、セキュア接続を使用してリダイレクトされます。
  3. ファイルを保管して、閉じる。
SSL トランスポートの設定
WebSphere® V5 または V5.1 へデプロイしている場合、 開発環境内で SSL 接続をテストするためには、その前にテスト・アプリケーション・サーバーに SSL トランスポートをセットアップする必要があります。SSL トランスポートをセットアップするには、以下のステップを完了します。
  1. J2EE パースペクティブから、文書配布アプリケーション用のテスト・サーバー構成 (WebSphere 管理可能ドメイン) を開く。
  2. 「ポート」タブをクリックする。
  3. HTTP トランスポート・リストの隣の「追加」をクリックする。 以下の値を指定してください。
    • ホスト名: * (アスタリスク)
    • ポート: 443
  4. 「SSL を使用可能にする」チェック・ボックスにチェックマークを付ける。
  5. 「外部」チェック・ボックスにチェックマークを付ける。
  6. 「OK」をクリックする。
  7. ファイルを保管して、閉じる。
これで SSL トランスポートがテスト・アプリケーション・サーバーに設定されました。 ここで、開発環境内の SSL 接続をテストすることができます。 内蔵 HTTP サーバーでは、テスト・サーバーにダミー SSL サーバー認証を使用しています。 この認証を変更する場合は、iKeyman ユーティリティーを使用してください。 ダミー SSL サーバー認証は、以下のロケーションにあります。
<wsad install directory>¥plugins¥com.ibm.etools.websphere.runtime¥etc¥DummyServerKeyFile.jks
WebAS は、JKS ファイルのパスワードです。
タグのテスト
  1. ファイル login/login.jsp を開き、「ソース」タブをクリックする。
  2. このファイルの最上部に以下の行を置く。
    <%@ taglib uri="/WEB-INF/tlds/sslCheck.tld" prefix="sslchk" %>
    <sslchk:sslcheck/>
  3. ファイルを保管する。
  4. アプリケーションを始動してから、ログインする。
ブラウザーは、セキュア接続を使用してサイトへのアクセスが行われることを通知します。 アプリケーションでフレームを使用しており、1 つ以上のフレームでセキュア接続が使用されている場合は、 ブラウザー内のロケーションは "http" のままであり、"https" に変ることはありません。
関連概念
タグ・ライブラリー
Web リソース
関連タスク
カスタム JSP タグの追加

フィードバック