Sun Java logo     上一頁      目錄      索引      下一頁     

Sun logo
Sun Java System Portal Server 6 2004Q2 管理員指南 

第 9 章
管理 Rewriter 服務

本章說明如何管理 Sun Java™ System Portal Server 的 Rewriter 服務。

本章包含以下各節:


Rewriter 服務簡介

Sun Java™ System Portal Server Rewriter 會提供在標記語言與 JavaScript™ 代碼中執行 URL 轉譯的引擎。 桌面 與 Sun Java™ System Portal Server 中的 URLScraperProviderXMLProvider:所有「Secure Remote Access」閘道都使用 Rewriter 服務。

Rewriter 會掃描網頁內容並識別在那些網頁找到的 URL。其會使用定義於規則集的規則集合以確定欲改寫的網頁元素。一旦 Rewriter 識別 URL,即可藉由下列項目改寫 URL:

將相對 URL 展開為絕對 URL

URLScraperProvider 是 Sun Java System Portal Server 核心產品的一部分。 在非閘道情況下,URLScraperProvider 可以用於將相對 URL 展開為絕對 URL。例如,若使用者嘗試存取站台:

<a href=”../mypage.html”>

Rewriter 會將此轉譯為:

<a href='http://www.yahoo.com/mail/mypage.html'>

其中 http://www.yahoo.com/mail/ 是已緩衝暫存頁面的基準 URL。

URLScraperProvider 限制

URLScraperProvider 僅要嘗試在通道中顯示指定的 URL。沒有指定欲顯示部分文件 URL (文件) 的方法。URLScraperProvider 的作用更像是 HTTP 用戶端,其會請求指定 URL 的內容。就像是在瀏覽器中,欲緩衝暫存的目標 URL 必須可視於網路中,或您必須擁有已配置的代理伺服器。

然而,結果 URL 緩衝暫存通道並不是一個迷你瀏覽器或框架。因此,在內容中若有一個連結,將會影響整個頁面而不只是通道。您不應該在 URL 緩衝暫存通道中瀏覽。若您在通道中選取連結,則瀏覽器會解釋連結並使用連結位置的內容置換目前顯示的頁面 (您的 [Portal Server 桌面])。

已緩衝暫存通道的外觀是由產生原始內容的事物控制。URLScraperProvider 完全不會修改內容,且僅會顯示可用於 URL 的事物。因為通道在 HTML 表格中是一個儲存格,其僅可顯示合法顯示於儲存格的 HTML 內容。也就是說,使用 URLScraperProvider 無法緩衝暫存框架集,因為 <FRAMESET> 標記無法顯示於 <BODY> 標記中。URLScraperProvider 也不會在 <HEAD> 標記中執行 JavaScript 代碼。因此,下列緩衝暫存情況不適合於 URLScraperProvider

原始伺服器傳送 cookie 時,在每次重新緩衝暫存網路內容時會將 cookie 傳回。所以當更新或重新載入 Portal Desktop 時,原始伺服器應取得在第一次緩衝暫存網路內容時傳送的 cookie。但是當使用者按一下 url 緩衝暫存通道中的任何連結時,這些 cookie 就不會如所預期那樣傳回。

將閘道 URL 前置於現有 URL

在使用閘道的實作中,例如 Sun Java System Portal Server, Secure Remote Access,閘道的作用為用戶端的代理伺服器,並存取內部網路站台與將回應傳回用戶端。 Rewriter 藉由將閘道 URL 前置於現有 URL,在已下載的頁面中轉譯 URL,以便其可指回閘道,而非原始站台。

例如,若使用者嘗試在 mymachine 上使用下列 URL 存取 HTML 頁面:

<a href=http://mymachine.intranet.com/mypage.html>

Rewriter 會使用參照前置這個 URL 至閘道,如下所示:

<a href=”https://gateway.company.com/http://mymachine.intranet.com/mypage.html>

當使用者選取與此控點相關的連結時,瀏覽器會聯絡閘道。閘道會從 mymachine.intranet.com 擷取 mypage.html 內容。

如需更多關於使用 Rewriter 將閘道 URL 前置於現有 URL 的資訊,請參閱 「Sun Java System Portal Server, Secure Remote Access 6 2004Q2 管理指南」


支援的 URL

Rewriter 支援由 RFC-1738 指定的全部標準 URL 改寫。不論通訊協定是 HTTP 或 HTTPS 且不論通訊協定是否為大寫皆會支援這些 URL。例如 hTtP、HTtp 與 httP 皆為有效的格式。以下列出一些範例 URL:

http://www.my.sesta.com
http://www.example.org:8000/imaginary/test
http://www.example.edu/org/admin/people#andy
http://info.example.org/AboutUs/Index/Phonebook?dobbins
http://www.example.org/RDB/EMP?*%20where%20name%%3Dobbins
http://info.example.org/AboutUs/Phonebook
http://user:password@example.com

Rewriter 支援一些非標準基本 URL 的改寫。將非標準 URL 轉換為標準格式的資訊是從頁面基準 URL 取得,其中 URL 會出現並可以包括通訊協定、主機名稱與路徑。只有在反斜線為相對 URL 的部分且不是絕對 URL 的部分時才支援反斜線 (\)。例如,會改寫 http://sesta.com\index.html,但不會改寫 http:\\sesta.com

除此之外,在通訊協定或方案之後含有單一斜線的 URL,例如 http:/sesta.com 不會被改寫。


定義 Rewriter 規則與規則集

Rewriter 會修改出現於網頁上不同元素的 URL 部分。 含有預設規則集的 Rewriter 會確定欲改寫的網頁元素。 不同種類與子種類的規則集合會儲存於 .dtd 檔案中且被稱為規則集。Rewriter 規則集定義於 XML。

DTD 位於 /opt/SUNWps/web-src/WEB-INF/lib/rewriter.jar (resources/RuleSet.dtd)。規則集的用途為識別 URL。依預設,在網路內容中,以 "/"、../、"http" 與 "https" 字元開頭的所有字串會被視為 URL 且預備被改寫。

若要為實作配置 Rewriter,請在管理主控台 Portal Server 配置中的 Rewriter 部分建立一個規則集並定義規則。有關建立與修改規則集的詳細資訊,請參閱管理 Rewriter 服務。您可以根據網頁中的內容類型定義多個規則。例如,要求改寫 HTML 內容的規則會與要求改寫 JavaScript 內容的規則不同。Rewriter 規則會屬於下列各種類型:

規則集為 XML 文件且其中的 XML 必須形式恰當。在規則集中定義規則時,請記住以下指導方針:

用於 HTML 內容的規則

網頁中的 HTML 內容可以被分類為屬性、JavaScript 記號、表格與 applet。同樣地,HTML 內容的規則可分類為:

HTML 內容的屬性規則

屬性規則會識別在欲改寫 HTML 頁面中的基本屬性標記。藉由展開或前置現有 URL,Rewriter 會修改已定義標記的各種出現情形。預設規則集會改寫下列屬性標記:

屬性規則的語法為:

<Attribute name="name" [tag="tag" valuePatterns="patterns"]

其中 name 指定屬性,tag 指定屬性所屬的標記 (設定為 * 以代表所有標記),而 patterns 指定可能的式樣以符合屬性。tagvaluePatterns 參數為選擇性。

用於 HTML 內容的 JavaScript 記號規則

網頁可以在 JavaScript 標記中包含純 JavaScript 代碼,或可以包含 JavaScript 記號或功能。例如,網頁可以包含導致跳至不同 URL 的 onClick() 功能。為了正確的執行頁面功能,onClick() 功能的值必須被轉譯或改寫。大多數情況下,預設規則集提供的規則足夠改寫 JavaScript 記號中的 URL。預設規則集會改寫下列 JavaScript 記號:

JavaScript Token 規則的語法為:

<JSToken>javascript_function_name</JSToken>

其中 javascript_function_name 是功能名稱,例如 onLoadonClick

用於 HTML 內容的表單規則

使用者可以瀏覽包含表單的 HTML 頁面。表單元素,例如 input,可將 URL 作為值。預設規則集不會改寫任何表單元素。表單規則的語法為:

<Form source="/source.html" name="form1" field="field1"> [valuePatterns="pattern"] />

其中 /source.html 包含表單的 HTML 頁面的 URL,form1 是表單的名稱, field1 是欲被改寫的表單欄位,pattern 表示欲被改寫的欄位部分。符合指定式樣的所有內容都將被改寫。

valuePatterns 參數為選擇性。

用於 HTML 內容的 Applet 規則

單一網頁可以包含許多 applet,且每個 applet 可以包含許多參數。applet 中 URL 的 Rewriter 規則應包含下列資訊的式樣:

Rewriter 使用 applet 內容與指定於規則中的值匹配,並依需要修改 URL。此取代動作會在伺服器上進行,而非在使用者瀏覽特定網頁時進行。萬用字元 (*) 也可以用作規則的部分。例如,在 Rewriter 不比較 applet 中的參數名稱的情況時,參數名稱可以為 *。

預設規則集不會改寫任何 applet 參數。

applet 規則的語法為:

<Applet source="sourcehtml.jsp" code="class" param="parameter_name" [valuePatterns="pattern"]

其中 /sourcehtml.jsp 是包含 applet 的 URL,class 是 applet 類別的名稱, parameter_name 是值需要被改寫的參數,而 pattern 表示欲被改寫的欄位部分。符合指定式樣的所有內容都將被改寫。valuePatterns 參數為選擇性。

用於 JavaScript 內容的規則

URL 可以出現於 JavaScript 代碼的不同部分。Rewriter 無法直接剖析 JavaScript 代碼與確定 URL 部分。需要撰寫特別的規則集以幫助 JavaScript 處理器轉譯 URL。

包含 URL 的 JavaScript 元素如下所示分類:

JavaScript 變數

JavaScript 變數會再被分為五種種類:

JavaScript URL 變數

URL 變數在右手邊具有 URL 字串。 預設規則集會改寫下列 JavaScript URL 變數:

JavaScript 內容規則的 URL 變數語法為:

<Variable type="URL">variable_name</Variable>

其中 variable_name 是欲被改寫的變數名稱。

JavaScript EXPRESSION 變數

EXPRESSION 變數在右手邊會有表示式。此表示式會產生一個 URL。Rewriter 在無法求這類表示式的值時,會附加 JavaScript 函數以將表示式轉換為 HTML 頁面。此函數會將表示式視為參數並在用戶端瀏覽器中求值。

預設規則集會改寫 location JavaScript EXPRESSION 變數。

JavaScript 內容規則的 EXPRESSION 變數語法為:

<Variable type="EXPRESSION">variable_exp</Variable>

其中 variable_exp 是表示式變數。

JavaScript DHTML 變數

DHTML 變數是保留 HTML 內容的 JavaScript 變數。預設規則集會改寫下列 JavaScript DHTML 變數:

JavaScript 內容規則的 DHTML 變數語法為:

<Variable type="DHTML">variable</Variable>

其中 variable 是 DHTML 變數。

JavaScript DJS (動態 JavaScript) 變數

DJS (動態 JavaScript) 變數是保留 JavaScript 內容的 JavaScript 變數。

JavaScript 內容規則的 DJS 變數語法為:

<Variable type="DJS">variable</Variable>

其中 variable 是 DJS 變數。

包含於變數中的 JavaScript 代碼需要其他規則以將之轉譯。

JavaScript 系統變數

系統變數是不由使用者公佈的變數,但可用作 JavaScript 標準的一部分。

預設規則集會改寫 window.location.pathname JavaScript 系統變數。

JavaScript 內容規則的系統變數語法為:

<Variable type="SYSTEM">variable</Variable>

其中 variable 是系統變數。

JavaScript 函數參數

函數參數會被分類為四個種類:

JavaScript URL 參數

URL 參數是直接包含 URL 的字串參數。

預設規則集會改寫下列 JavaScript URL 參數:

URL 參數的語法為:

<Function type = "URL" name = "function" [paramPatterns="y,y,"] />

其中 function 是欲被求值的函數名稱,而 y 表示需要被改寫的參數位置。參數位置由逗號分隔。例如,在語法行中,應改寫第一個與第二個參數,而不應改寫第三個參數。

JavaScript EXPRESSION 參數

EXPRESSION 參數是當求值時函數內會得出 URL 結果的變數。EXPRESSION 參數的語法為

<Function type = "EXPRESSION" name = "function" [paramPatterns="y,y,"] />

其中 function 是欲被求值的函數名稱,而 y 表示需要被改寫的參數位置。參數位置由逗號分隔。例如,在語法行中,應改寫第一個與第二個參數,而不應改寫第三個參數。

JavaScript DHTML 參數

DHTML 參數是動態產生 HTML 頁面的原生 JavaScript 方法。例如,document.write() 方法就屬於這個種類。

預設規則集會改寫下列 JavaScript DHTML 參數:

DHTML 參數的語法為:

<Function type = "DHTML" name = "function" [paramPatterns="y,y,"] />

其中 function 是欲被求值的函數名稱,而 y 表示需要被改寫的參數位置。參數位置由逗號分隔。例如,在語法行中,應重新改寫第一個與第二個參數,而不應改寫第三個參數。

JavaScript DJS 參數

動態 JavaScript (DJS) 參數,例如 HTML 中的串級樣式表 (CSS) 也將被轉譯。沒有為這個轉譯定義規則,因為 URL 僅出現在 CSS url() 函數中。DJS 參數的語法為:

<Function type = "DJS" name = "function" [paramPatterns="y,y,"] />

其中 function 是欲被求值的函數名稱,而 y 表示需要被改寫的參數位置。參數位置由逗號分隔。例如,在語法行中,應重新改寫第一個與第二個參數,而不應改寫第三個參數。

用於 XML 內容的規則

網頁可以包含 XML 內容,而 XML 內容又可以包含 URL,而 Rewriter 則可以改寫在 XML 內容中的 URL。

包含 URL 的 XML 內容被分類為下:

XML 中的標記文字

Rewriter 會根據標記名稱轉譯 XML。

預設規則集會改寫下列 XML 中的標記:

標記文字的語法為:

<TagText tag ="attribute" attributePatterns="name=src"/>

其中 attribute 是標記名稱,而 src 是屬性名稱。

XML 中的屬性

XML 中屬性的規則與 HTML 中屬性的規則類似。有關其他資訊,請參閱 HTML 內容的屬性規則。Rewriter 會根據屬性與標記名稱轉譯屬性。

預設規則集會改寫下列 XML 中的屬性:

HTML 中屬性的語法為:

<Attributes>
<Attribute name="attribute" [valuePatterns="name=src"/>
</Attributes>

其中 attribute 是標記名稱,而 src 是屬性名稱。


管理 Rewriter 服務

在 Sun Java System Portal Server 6 2004Q2 中,Rewriter 服務使用 Sun Java™ System Identity Server 屬性為 Rewriter 規則集提供永久性的儲存區。Rewriter 規則集定義 Rewriter 如何改寫網頁內容。使用者可透過 Sun Java System Identity Server 管理主控台定義多個 Rewriter 規則集並儲存為 Sun Java System Identity Server 服務屬性值。

您也可以使用指令行管理 Rewriter。有關 rwadmin 指令的詳細資料,請參閱第 21 章,「指令行公用程式」

由於 Sun Java System Identity Server 管理主控台不具任何 Rewriter 規則集的概念,因此 Sun Java System Portal Server 使用自訂的服務管理 Plug-in 模組進行管理。所有的 Rewriter 規則集對於 Sun Java System Identity Server 中的組織來說都是全域性的。沒有提供任何功能可在任一特定組織層級中建立規則集。


備註       

URLScraperProvider 僅可緩衝暫存在 HTML 表格儲存格中有效的內容。若要緩衝暫存的 HTML 標記包含表格儲存格中無法被描繪的標記,例如 <body><base>,與特定 JavaScript 程序,其無法在表格儲存格中被描繪,[桌面] 頁面的顯示可能會異常。定義欲緩衝暫存的內容時,請嘗試確認內容為有效的 HTML。有關更多資訊,請參閱 URLScraperProvider 限制


若要配置 SSL 的 Rewriter URLScraperProvider

您可以使用 Rewriter 的 URLScraperProvider 以緩衝暫存 SSL 頁面並改寫 URL 以供在安全作業階段上存取之用。

  1. 為您安裝 Sun Java System Portal Server 的伺服器,在 Web 伺服器管理主控台中初始化可信資料庫,方法如下:
    1. 從瀏覽器中,輸入下列 URL 以存取 Web 伺服器管理頁面:
    2. http://servername:8088

    3. 以管理員身份登錄並按一下 [安全] 標籤。
    4. 輸入「資料庫」密碼兩次並選取 [確定] 。
  2. 建立密碼檔案如下:
    1. 變更目錄為 /BaseDir/SUNWam/config
    2. 建立隱藏文字檔案 .wtpass
    3. 輸入在初始化可信資料庫時給定的密碼。
  3. 若沒有為使用 URLScraperProvider 存取的 Web 伺服器所用的證書安裝 root CA,則將下行新增至 /BaseDir/SUNWam/lib/AMConfig-instance_nickname.properties 檔案。
  4. com.sun.am.jssproxy.trustAllServerCerts=true

    這個選項會告知 JSS 信任證書。

  5. 重新啟動 Sun Java System Portal Server。
  6. /etc/init.d/amserver start

若要從預設範本建立新規則集

  1. 以管理員的身份登入 Sun Java System Identity Server 管理主控台。
  2. 選取位置窗格中的 [服務配置] 。
  3. 按一下導覽窗格中 Rewriter 旁邊的特性箭頭。
  4. 目前定義的規則集的清單隨即會顯示於資料窗格中。

  5. 按一下 [新增] 。
  6. 如此將顯示可供修改的規則集範本。

  7. 編輯 <RuleSet id="ruleset_template"> 行,以新的規則集名稱取代 default_ruleset
  8. 依需要新增或修改規則集範本中的規則以改寫 URL。
  9. 按一下 [儲存] 以建立新的規則集。
  10. 順利完成後,您將會看見初始頁面及所有目前定義的規則集清單 (包含您剛才所建立的規則集)。

若要編輯現有的規則集

  1. 以管理員的身份登入 Sun Java System Identity Server 管理主控台。
  2. 選取位置窗格中的 [服務配置] 。
  3. 按一下導覽窗格中 Rewriter 旁邊的特性箭頭。
  4. 目前定義的規則集的清單隨即會顯示於資料窗格中。

  5. 按一下待編輯規則集的 [編輯] 連結。
  6. 如此即可顯示待編輯規則集的 XML。

  7. 依需要新增或修改規則集範本中的規則以改寫 URL。
  8. 若您想要變更規則集的名稱,請編輯 <RuleSet id="ruleset_template"> 行,以規則集名稱取代其中的名稱。
  9. 按一下 [儲存]。

若要下載規則集

可將規則集下載並儲存至檔案中。

  1. 以管理員的身份登入 Sun Java System Identity Server 管理主控台。
  2. 選取位置窗格中的 [服務配置] 。
  3. 按一下導覽窗格中 Rewriter 旁邊的特性箭頭。
  4. 目前定義的規則集的清單隨即會顯示於資料窗格中。

  5. 按一下規則集的 [下載] 連結以儲存至檔案中。
  6. 指定檔案名稱,然後儲存。

若要上傳規則集

可將規則集檔案上傳至系統中。

  1. 以管理員的身份登入 Sun Java System Identity Server 管理主控台。
  2. 選取位置窗格中的 [服務配置] 。
  3. 按一下導覽窗格中 Rewriter 旁邊的特性箭頭。
  4. 目前定義的規則集的清單隨即會顯示於資料窗格中。

  5. 按一下清單中任何規則集旁邊的 [上傳] 連結。
  6. 瀏覽至或鍵入待上傳規則集的檔案名稱。
  7. 按一下 [上傳]。
  8. 若檔案中於 <RuleSet id="ruleset_template"> 行所定義的名稱符合系統上的規則集名稱,則此檔案的內容將取代規則集檔案。若在 <RuleSet id="ruleset_template"> 行中所定義的名稱是唯一的,則將會以該名稱建立新的規則集並新增至清單中。

若要刪除現有的規則集

  1. 以管理員的身份登入 Sun Java System Identity Server 管理主控台。
  2. 選取位置窗格中的 [服務配置] 。
  3. 按一下導覽窗格中 Rewriter 旁邊的特性箭頭。
  4. 目前定義的規則集的清單隨即會顯示於資料窗格中。

  5. 按一下待刪除規則集旁邊的核取方塊。
  6. 您可選取多個規則集。

  7. 按一下 [刪除]。
  8. 確認訊息隨即顯示。

  9. 按一下 [是] 以刪除所選規則集。

若要復原預設規則集

若您不小心刪除了預設規則集,可以使用下列方法復原:

rwadmin store --runasdn "uid=amadmin, ou=people, o=sesta.com, o=isp" --password "testing123" /resources/DefaultRuleSet.xml

其中 /resources/DefaultRuleSet.xml 是儲存於 rewriter.jar 檔案的規則集位置。


備註

將復原安裝中封裝的預設規則集。若您已自訂預設規則集,則變更將不會復原。




上一頁      目錄      索引      下一頁     


Copyright 2004 Sun Microsystems, Inc. 版權所有。