建立自訂標示庫

建立自訂標示庫所涉及的步驟最好是用範例來說明。 下列範例顯示建立稱為 sslCheck 新標示庫的步驟。 這個標示庫利用 Secure Socket Layer (SSL) 來維護您的網站安全。SSL 可讓您在 Web 瀏覽器和 Web 伺服器之間使用安全連線,而 sslCheck 標示則提供一種靈活使用安全連線的方式。此標示可用在任何 JSP Script 中,其中包括 Java™ 及 JavaScript™。

下列簡單的標示實作會檢查所用的通訊協定,再根據標示的參數化(稍後說明)將使用者重新導向至安全頁面或錯誤頁面。 這個安全連線實作只適用於 JSP 頁面(伺服器端動態執行頁面),不適用於 HTML(靜態)頁面。

新標示必須建立兩個檔案:
  • 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) {
                          // 重新導向至錯誤頁面
                          response.sendRedirect(errorpage);
                      } else {
                          // 使用 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 檔中定義。如果要從 Web 視景建立 TLD 檔,請執行下列動作:
  1. 選取 YourApp
  2. 選取 Web 模組 WEB-INF
  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>檢查 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. 請將下列 taglib 定義放在 JSP 程式檔的第一行中:
    <%@ taglib uri="/WEB-INF/tlds/sslCheck.tld" prefix="sslchk" %>
  2. 在 taglib 定義之後,緊接著將下列其中一個 SSL 檢查標示放在程式碼中。標示可以搭配或不搭配 errorpage 屬性來使用。
    選項 說明
    <sslchk:sslcheck errorpage="error_page"/> 當要求進入 JSP 且不是使用 SSL 時,就會顯示使用 errorpage 屬性所定義的頁面。您必須先建立含錯誤訊息的錯誤頁面,才開始使用應用程式。
    <sslchk:sslcheck/> 不搭配 errorpage 屬性來使用標示時,會將頁面立即重新導向相同的位置,不過使用的是安全連線。
  3. 儲存並關閉檔案。

設定 SSL 傳輸

如果您要部署至 WebSphere® 第 5 版或 5.1 版伺服器,必須先設定測試應用程式伺服器的 SSL 傳輸之後,才能在開發環境中測試 SSL 連線。如果要設定 SSL 傳輸,請完成下列步驟:
  1. 從 J2EE 視景中,開啟文件分送應用程式的測試伺服器配置(WebSphere 管理網域)。
  2. 按一下標籤。
  3. 按一下 HTTP 傳輸清單旁的新增。請輸入下列各值:
    • 主機名稱:*(星號)
    • 埠: 443
  4. 勾選啟用 SSL 勾選框。
  5. 勾選外部勾選框。
  6. 按一下確定
  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. 啟動應用程式,然後登入。
瀏覽器會通知您網站是利用安全連線來存取的。 如果應用程式正在使用頁框,且有一或多個頁框使用安全連線,瀏覽器中的位置會保留 "http",不會改成 "https"
讀者意見
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.