本章會介紹如何使用 Netlet 在使用者遠端桌面以及在您的企業內部網路中執行應用程式的伺服器之間,以安全的方式執行應用程式。要配置 Netlet,請參閱第 11 章, 配置 Netlet。
本章包含下列章節:
Sun Java System Portal Server 軟體使用者可能希望在他們的遠端桌面上,以安全的方式執行最常使用或特定於公司的應用程式。在您的平台上設定 Netlet 之後,您就可以安全存取這些應用程式。
Netlet 可讓使用者透過不安全的網路,例如網際網路,安全地執行 一般 TCP/IP 服務。您可執行 TCP/IP 應用程式 (如 Telnet 和 SMTP)、HTTP 應用程式以及任何使用固定連接埠的應用程式。
如果應用程式是以 TCP/IP 為基礎或使用固定的連接埠,您可以在 Netlet 上執行應用程式。
只有在使用 FTP 時才支援動態連接埠。要使用 Microsoft Exchange,請使用 OWA (Outlook Web Access)。
請確定通知您的使用者在使用 Netlet 時,停用他們瀏覽器中的快顯式阻擋程式選項。
Netlet 所用的不同元件會顯示於 Netlet 元件。
此為用戶端機器上 Netlet applet 偵聽的連接埠。用戶端機器為 localhost。
Netlet applet 負責在遠端用戶端機器和企業內部應用程式 (例如 Telnet、Graphon 或 Citrix) 之間設定加密的 TCP/IP 通道。Applet 會將封包加密並將它們傳送至閘道,並將來自閘道的回應封包解密,然後將它們傳送至本機的應用程式。
對於靜態規則,當使用者登入入口網站時,會自動下載 Netlet applet。對於動態規則,會在使用者在相對應的動態規則連結上按一下時,下載 applet。請參閱規則類型以取得靜態與動態規則的詳細資訊。
要在 Sun Ray 環境中執行 Netlet,請參閱在 Sun Ray 環境中執行 Netlet。
Netlet 規則會將需要在用戶端機器上執行的應用程式映射至相應的目標主機。這表示 Netlet 只會在已傳送至連接埠 (於 Netlet 規則中定義) 的封包上運作。這可確保取得較大的安全性。
作為管理員,您需要為 Netlet 的功能運作配置一些規則。這些規則指定了各種詳細信息,例如要使用的加密、要呼叫的 URL、要下載的 applet、目標連接埠以及目標主機。當用戶端機器上的使用者透過 Netlet 提出請求時,這些規則會協助確定如何建立連線。請參閱定義 Netlet 規則以取得詳細資訊。
此為 Netlet 的 UI 元件。提供者允許使用者透過 Portal Server 桌面配置必要的應用程式。會在提供者中建立連結,而使用者按一下連結以執行必要的應用程式。使用者也可以將桌面中動態規則的目標主機指定為 Netlet 提供者。請參閱定義 Netlet 規則。
閘道可確保為遠端用戶端機器以及閘道之間提供一條安全通道。Netlet 代理伺服器為選用選項,您可以在安裝時選擇不安裝此代理伺服器。如需 Netlet 代理伺服器的資訊,請參閱使用 Netlet 代理伺服器。
使用 Netlet 將會順序發生下列事件:
遠端使用者登入至 Portal Server 桌面。
如果已經為使用者、角色或組織定義靜態 Netlet 規則,則將會自動下載 Netlet applet 至遠端用戶端。
如果已經為使用者、角色或組織定義動態規則,則使用者需要在 Netlet 提供者中配置必要的應用程式。當使用者按一下 Netlet 提供者中的應用程式連結時,將會下載 Netlet applet。請參閱定義 Netlet 規則以取得靜態與動態規則的詳細資訊。
Netlet 會偵聽在 Netlet 規則中定義的本機連接埠。
Netlet 會通過 Netlet 規則中指定的連接埠,設定遠端用戶端與主機之間的通道。
為了使 Netlet 在運作時能夠符合不同組織中各種使用者的需要,您必須執行下列動作:
依據使用者需求確定是否需要建立靜態或動態規則。請參閱規則類型。
從 Portal Server 管理主控台配置 Netlet 服務的選項。如需配置 Netlet 的資訊,請參閱第 11 章, 配置 Netlet。
確定規則是否以組織、角色或使用者為基礎,並視需要在每個層級中做出修改。如需組織、角色和使用者的詳細資訊,請參閱「Portal Server 管理指南」。
請勿本地化在 srapNetletServlet.properties 檔案中的框架集參數的值。
偶爾 URL 會傳回需要從遠端主機取得的內嵌 applet 之頁面。然而 Java 的安全性不允許 applet 與非其下載來源的主機進行通訊。要允許 applet 透過本機網路埠與閘道通訊,您必須核取 Access Manager 管理主控台上的 [下載 Applet] 欄位並指定以下語法:
local-port:server-host:server-port
其中
local-port 是 Netlet 偵聽來自 applet 流量的本機連接埠
server-host 是下載 applet 之處
server-port 是用來下載 applet 的連接埠
Netlet 配置是 Netlet 規則所定義的,這些規則使用 [Secure Remote Access] 配置標籤下的 Portal Server 管理主控台配置。可為組織、角色或使用者配置 Netlet 規則。如果 Netlet 規則用於角色或使用者,請在選取組織之後選取想要的角色或使用者。
Netlet 規則不支援多位元組輸入。請勿在 Netlet 規則中的任何欄位中指定多位元組字元。
Netlet 規則中不能包含任何高於 64000 的連接埠號。
定義 Netlet 規則會列出 Netlet 規則中的欄位。
表 6–1 Netlet 規則中的欄位
參數 |
描述 |
值 |
---|---|---|
規則名稱 |
指定此 Netlet 規則的名稱。您需要為每個規則指定唯一的名稱。如此當您在定義使用者存取特定規則時將會非常有用。 | |
加密密碼 |
定義加密密碼,或是指定使用者可從中選擇的密碼清單。 |
您選取的密碼將會在 Netlet 提供者中以清單的形式出現。使用者可以從清單中選擇需要的密碼。 預設 - 會使用 Netlet 管理主控台中指定的 [預設 VM 原生密碼] 和 [預設 Java Plugin 密碼]。 |
遠端應用程式 URL |
指定當使用者按一下 Netlet 提供者中的相關連結時,瀏覽器所開啟的 URL。瀏覽器會開啟應用程式的視窗,並連接至稍後在規則中指定的本機連接埠號的 localhost。 您需要指定一個相對的 URL。 |
Netlet 規則所呼叫之應用程式的 URL。例如,telnet://localhost:30000 。 如果應用程式使用 applet 來呼叫應用程式,則指定一個 URL。 null- 如果應用程式不是由 URL 啟動或由桌面控制,請設定此值。對於不以網路為基礎的應用程式而言,該項通常為 true。 |
啟用下載 Applet |
指出是否需要為此規則下載 applet。 |
|
啟用延伸階段作業 |
此將控制 Netlet 為使用中時 Portal Server 階段作業的閒置逾時。 |
僅在 Netlet 為使用中且入口網站應用程式的其餘部分為閒置時,選取此核取方塊以保持入口網站階段作業為使用中。根據預設,不會選取此選項。 |
將本機連接埠對映至目標伺服器連接埠 |
本機連接埠 |
Netlet 偵聽之用戶端上的連接埠。 local-port 的值必須唯一。您不能夠在一個以上的規則中指定某特定的連接埠號。 如果您要為多個連線指定多個主機,請指定多個本機連接埠。請參閱包含多個主機連線的靜態規則以取得語法。 對於 FTP 規則,本機連接埠值必須為 30021。 |
目標主機 |
Netlet 偵聽之用戶端上的連接埠。 Netlet 連線的收件者。 host - 接收 Netlet 連線的主機名稱。此欄位用於靜態規則。使用簡單的主機名稱 (例如 siroe) 或完全合格的 DNS 式主機名稱 (例如 siroe.mycompany.com)。因下列原因指定多個主機: local-port 的值必須唯一。您不能夠在一個以上的規則中指定某特定的連接埠號。 如果您要為多個連線指定多個主機,請指定多個本機連接埠。請參閱包含多個主機連線的靜態規則以取得語法。 對於 FTP 規則,本機連接埠值必須為 30021。 與每個指定主機建立連線。您需要為每個指定的主機指定相對應的用戶端以及目標連接埠。請參閱包含多個主機連線的靜態規則以取得語法。 嘗試連接至指定主機清單中任何可用的主機。請參閱選擇多個主機的靜態規則以取得語法。 TARGET - 在語法中指定 TARGET 的規則為動態規則。TARGET 表示一般使用者能夠在桌面的 Netlet 提供者中指定一台或多台必要的目標主機。 在單個規則中,不可以同時有靜態主機和 TARGET。 |
|
目標連接埠 |
目標主機上的連接埠 除了主機與目標主機以外,您必須指定目標連接埠。 您可以在有多個目標主機的情況下,指定多個目標連接埠。以下列格式指定多個連接埠:port1+port2+port3-port4+port5。 連接埠號之間的加號 (+) 指出用於單一目標主機的替代連接埠。 連接埠號之間的減號 (-) 為不同目標主機連接埠號的分隔符號。 Netlet 在此會嘗試依序使用 port1、port2 和 port3 連接至指定的第一台目標主機。如果此項操作失敗,Netlet 會嘗試以 port4 和 port5 依次連接至第二台主機。 您只可以為靜態規則配置多個連接埠。 |
閘道要從 Portal Server 取得階段作業通知時,新增下列指令行:
com.iplanet.am.jassproxy.trustAllServerCerts=true
至下列的特性檔中
Portal Server 上的 /etc/opt/SUNWam/config/AMConfig.instance-name .properties
根據規則中指定目標主機的方式,Netlet 規則類型有兩種。
靜態規則會指定目標主機做為規則的一部分。如果您建立一項靜態規則,使用者將無法指定需要的目標主機。在下列範例中,sesta 為目標主機。
規則名稱 |
加密密碼 |
URL |
啟用下載 Applet |
啟用延伸階段作業 |
將本機連接埠對映至目標伺服器連接埠 |
---|---|---|---|---|---|
ftpstatic |
SSL_RSA_WITH_RC 4_128_MD5 |
空 |
false |
true |
|
您可以為靜態規則配置多個目標主機和連接埠。請參閱包含多個主機連線的靜態規則以取得範例。
在動態規則中,不會將目標主機指定為規則的一部分。使用者可以在 Netlet 提供者中指定必要的目標主機。在下列範例中,TARGET 為目標主機的萬用字元。
規則名稱 |
加密密碼 |
遠端應用程式 URL |
啟用下載 Applet |
啟用延伸階段作業 |
將本機連接埠對映至目標伺服器連接埠 |
---|---|---|---|---|---|
ftpdynamic |
SSL_RSA_WIT H_RC4_128_MD5 |
空 |
選取核取方塊 |
選取核取方塊 |
|
根據加密密碼,可進一步將 Netlet 規則依如下分類:
使用者可配置的密碼規則 - 在此規則中,您可指定使用者可從中選擇的密碼清單。這些選擇性密碼會在 Netlet 提供者中以清單的形式出現。使用者可以從清單中選擇必要的密碼。在下列範例中,使用者可以從多個密碼中作出選擇。
規則名稱 |
加密密碼 |
遠端應用程式 URL |
啟用下載 Applet |
啟用延伸階段作業 |
將本機連接埠對映至目標伺服器連接埠 |
---|---|---|---|---|---|
Telnet |
SSL_RSA_WITH_RC4 _128_SHA |
空 |
選取核取方塊 |
選取核取方塊 |
|
SSL_RSA_WITH_RC4 _128_MD5 |
雖然 Portal Server 主機可能已經啟用不同的密碼,但是使用者僅能從配置為 Netlet 規則部分的清單中選擇。
請參閱支援的密碼以取得 Netlet 所支援的密碼的清單。
規則名稱 |
加密密碼 |
遠端應用程式 URL |
啟用下載 Applet |
啟用延伸階段作業 |
將本機連接埠對映至目標伺服器連接埠 |
---|---|---|---|---|---|
Telnet |
SSL_RSA_WITH_RC4_128_MD5 |
空 |
選取核取方塊 |
選取核取方塊 |
|
請參閱支援的密碼以取得 Netlet 支援的密碼的清單。
支援的密碼列出 Netlet 支援的密碼。
表 6–2 支援的密碼清單
密碼 |
---|
原生 VM 密碼 |
KSSL_SSL3_RSA_WITH_3DES_EDE_CBC_SHA |
KSSL_SSL3_RSA_WITH_RC4_128_MD5 |
KSSL_SSL3_RSA_WITH_RC4_128_SHA |
KSSL_SSL3_RSA_EXPORT_WITH_RC4_40_MD5 |
KSSL_SSL3_RSA_WITH_DES_CBC_SHA |
Java Plugin 密碼 |
SSL_RSA_WITH_3DES_EDE_CBC_SHA |
SSL_RSA_WITH_RC4_128_MD5 |
SSL_RSA_WITH_RC4_128_SHA |
SSL_RSA_EXPORT_WITH_RC4_40_MD5 |
SSL_RSA_WITH_DES_CBC_SHA |
SSL_RSA_WITH_NULL_MD5 |
TLS_RSA_WITH_AES_128_CBC_SHA |
TLS_RSA_WITH_AES_256_CBC_SHA |
先前的 Portal Server 版本並不支援將密碼作為 Netlet 規則的一部分。為了向下相容不含密碼的現有規則,規則會使用預設的密碼。不含密碼的現有規則如下:
規則名稱 |
加密密碼 |
遠端應用程式 URL |
啟用下載 Applet |
啟用延伸階段作業 |
將本機連接埠對映至目標伺服器連接埠 |
---|---|---|---|---|---|
Telnet |
telnet://localhost:30000 |
請勿選取核取方塊 |
選取核取方塊 |
|
將被解譯為:
規則名稱 |
加密密碼 |
遠端應用程式 URL |
啟用下載 Applet |
啟用延伸階段作業 |
將本機連接埠對映至目標伺服器連接埠 |
---|---|---|---|---|---|
Telnet |
預設密碼 |
telnet://localhost:30000 |
請勿選取核取方塊 |
選取核取方塊 |
|
這類似於 [加密密碼] 欄位已選擇為 [預設] 的 [管理員配置的規則]。
Netlet 規則無法包含任何大於 64000 的連接埠號碼。
本節包括一些 Netlet 規則的範例,以說明 Netlet 的語法。
本規則支援從用戶端至機器 sesta 的 Telnet 連線。
規則名稱 |
加密密碼 |
遠端應用程式 URL |
下載 Applet |
延伸式階段作業 |
將本機連接埠對映至目標伺服器連接埠 |
---|---|---|---|---|---|
myrule |
SSL_RSA_WITH_RC4_128_MD5 |
空 |
請勿選取核取方塊 |
true |
|
其中
myrule 為規則的名稱。
SSL_RSA_WITH_RC4_128_MD5 表示要使用的密碼。
null 表示此應用程式不是由 URL 所呼叫或透過桌面執行。
false 表示用戶端並不會下載 applet 以執行此應用程式。
true 表示當 Netlet 連線在使用中的情況下 Portal Server 不應逾時。
1111 為用戶端上的連接埠,Netlet 會在此偵聽來自目標主機的連線請求。
sesta 是 Telnet 連線上收件者主機的名稱。
23 是目標主機上用於連線的連接埠號,在本例中即為已知的 Telnet 連接埠。
桌面 Netlet 提供者並不會顯示連結,但是 Netlet 會自動啟動與偵聽指定的連接埠 (1111)。指示使用者啟動用戶端軟體 - 此情形中為連接至 localhost 的 Telnet 階段作業。
例如,如果要啟動 Telnet 階段作業,用戶端需要在終端機 UNIX 指令行中鍵入下列字元:
telnet localhost 1111 |
本規則支援從用戶端至兩台機器,即 sesta 和 siroe 的 Telnet 連線。
規則名稱 |
加密密碼 |
遠端應用程式 URL |
啟用下載 Applet |
啟用延伸階段作業 |
將本機連接埠對映至目標伺服器連接埠 |
---|---|---|---|---|---|
myrule |
SSL_RSA_WITH_RC4_128_MD5 |
空 |
請選取核取方塊 |
選取核取方塊 |
|
其中
23 是目標主機上用於連線的連接埠號碼 – Telnet 的保留連接埠。
1111 為用戶端上的連接埠,Netlet 會在此偵聽來自第一個目標主機 sesta 的連線請求。
1234 為用戶端上的連接埠,Netlet 會在此偵聽來自第二個目標主機 siroe 的連線請求。
此規則中的前六個欄位與基本靜態規則中的相同。差別在於有三個欄位用於識別第二個目標主機。
當您新增其他目標至規則時,必須為每個新目標主機新增三個欄位:local port、destination host 與 destination port。
您可以有多組此三個欄位,以描述與每個目標主機的連線。如果遠端用戶端是以 UNIX 為基礎,則不可以使用低於 2048 的偵聽連接埠號,原因是數字較低的連接埠將會受到限制,並且您必須是超級使用者才能夠啟動偵聽程式。
此規則的作用與先前的規則相同。Netlet 提供者並不顯示任何連結,但是 Netlet 會自動在指定的兩個連接埠 (1111 和 1234) 上啟動與偵聽。使用者必須啟動用戶端軟體 (在此案例中是連線至連接埠 1111 上的 localhost,或連接埠 1234 上的 localhost 的 Telnet 階段作業) 以連線至第二個範例中的主機。
使用此規則以指定多個替代主機。如果與規則中第一個主機的連線失敗,Netlet 會嘗試連接指定的第二個主機,以此類推。
其中
10491 為用戶端上的連接埠,Netlet 會在此偵聽來自目標主機的連線請求。
Netlet 會嘗試以相同順序連線至連接埠 35、26 和 491 上的 siroe,視何者可用而定。
如果無法建立與 siroe 的連線,Netlet 會嘗試以相同順序連線至連接埠 35 和 491 上的 sesta。
主機之間的加號 (+) 表示替代的主機。
連接埠號之間的加號 (+) 指出用於單一目標主機的替代連接埠。
連接埠號之間的減號 (-) 為不同目標主機連接埠號的分隔符號。
會按次序連線至鏈接中所提供的主機。例如,如果規則是 siroe+ sesta,則會先嘗試 siroe。如果連線失敗,則會嘗試連線至 sesta。如果規則中先列出的主機無法在使用中的網路實際使用,則連線至下一個可用主機的時間會隨著規則中的不可用主機數增加而增加。
此規則可以讓使用者配置必要的目標主機,讓使用者可以通過 Netlet 遠程登入不同主機。
規則名稱 |
加密密碼 |
遠端應用程式 URL |
啟用下載 Applet |
啟用延伸階段作業 |
將本機連接埠對映至目標伺服器連接埠 |
---|---|---|---|---|---|
myrule |
SSL_RSA_WITH_RC4_128_MD5 |
telnet://localhost:30000 |
請勿選取核取方塊 |
選取核取方塊 |
|
其中
myrule 為規則的名稱。
SSL_RSA_WITH_RC4_128_MD5 表示要使用的密碼。
telnet://localhost:30000 為規則所呼叫的 URL。
false 表示將不會下載任何 applet。
Extend Session(true) 表示當 Netlet 連線在使用中的情況下 Portal Server 不應逾時。
30000 為用戶端上的連接埠,Netlet 會在此偵聽此規則的連線需求。
TARGET 表示使用 Netlet 提供者的使用者需要配置的目標主機。
23 是 Netlet 開啟的目標主機上的連接埠,在本例中為已知的 Telnet 連接埠。
在新增規則之後,使用者必須完成某些步驟,使得 Netlet 能夠如預期般執行。使用者需要在用戶端執行下列動作:
在標準 Portal Server 桌面的 Netlet 提供者區段中,按一下 [編輯]。
新的 Netlet 規則會列在 [新增新目標] 區段中的 [規則名稱] 底下。
變更規則名稱,然後鍵入目標主機的名稱。
儲存變更。
使用者會返回桌面,此時您可以在 Netlet 提供者區段中看見此新連結。
按一下新連結。
會啟動一個新的瀏覽器,並進至 Netlet 規則中所提供的 URL。
透過重複上述步驟,您可以在相同的規則中新增一個以上的目標主機。只有最後選取的連結為使用中。
本規則定義從用戶端至動態配置的主機之間的連線。規則會從 applet 所在的伺服器上將 GO-Joe applet 下載至用戶端。
規則名稱 |
加密密碼 |
遠端應用程式 URL |
啟用下載 Applet |
延伸式階段作業 |
將本機連接埠對映至目標伺服器連接埠 |
---|---|---|---|---|---|
gojoe |
SSL_RSA_WITH_RC4_128_MD5 |
/gojoe.html |
|
選取核取方塊 |
|
其中
gojoe 是規則的名稱。
SSL_RSA_WITH_RC4_128_MD5 表示要使用的密碼。
例如 /gojoe.html 是包含 applet 的 HTML 頁面的路徑,路徑應與部署入口網站的 Web 容器文件根是相對的。
8000:server:8080 表示連接埠 8000 是用戶端上用來接收 applet 的目標連接埠,gojoeserve 是提供 applet 的伺服器名稱,而 8080 則是伺服器上的連接埠,applet 則從該處下載。
Extended Session(true) 表示當 Netlet 連線在使用中的情況下 Portal Server 不應逾時。
3399 為用戶端上的連接埠,Netlet 會在此偵聽此類型的連線請求。
TARGET 表示使用 Netlet 提供者的使用者需要配置的目標主機。
58 為 Netlet 所開啟的目標主機上的連接埠,在本例中為 GoJoe 的連接埠。連接埠 58 為目標主機偵聽其本身通訊的連接埠。Netlet 會將資訊從新的 applet 傳送至此連接埠。
Netlet 規則範例列出某些共用應用程式的範例 Netlet 規則。
表格中有 7 欄,與 Netlet 規則的下列欄位相對應。規則名稱、URL、下載 Applet、本機連接埠、目標主機、目標連接埠。最後一欄包含規則的說明。
Netlet 規則範例不會列出 Netlet 規則的 [密碼] 與 [延伸階段作業] 欄位。假設提供的範例中這兩個欄位是「SSL_RSA_WITH_RC4_128_MD5」和「true」。
netlet applet 或 jws 的用戶端記錄會顯示於用戶端的 java 主控台上。
netlet 的伺服器記錄會顯示於 /var/opt/SUNWportal/portals/<portal_ID>/logs/<INSTANCE_ID> 目錄下的 portal.0.0.log 檔案中。
如果您希望執行的應用程式將 applet 下載至 Sun Ray 環境中的用戶端機器上,您需要變更 HTML 檔。以下是一個範例檔案,您可以透過該檔案瞭解必須執行的修改。
<!-- @(#)citrix_start.html 2.1 98/08/17 Copyright (c) 1998 i-Planet, Inc., All rights reserved.--> <html> <script language="JavaScript"> var KEY_VALUES; // KEY_VALUES[\qkey\q] = \qvalue\q; function retrieveKeyValues() { KEY_VALUES = new Object(); var queryString = \q\q + this.location; queryString = unescape(queryString); queryString = queryString.substring((queryString.indexOf(\q?\q)) + 1); if (queryString.length < 1) { return false; } var keypairs = new Object(); var numKP = 0; while (queryString.indexOf(\q&\q) > -1) { keypairs[numKP] = queryString.substring(0,queryString.indexOf(\q&\q)); queryString = queryString.substring((queryString.indexOf(\q&\q)) + 1); numKP++; } // Store what\qs left in the query string as the final keypairs[] data. keypairs[numKP++] = queryString; var keyName; var keyValue; for (var i=0; i < numKP; ++i) { keyName = keypairs[i].substring(0,keypairs[i].indexOf(\q=\q)); keyValue = keypairs[i].substring((keypairs[i].indexOf(\q=\q)) + 1); while (keyValue.indexOf(\q+\q) > -1) { keyValue = keyValue.substring(0,keyValue.indexOf(\q+\q)) + \q \q + keyValue.substring(keyValue.indexOf(\q+\q) + 1); } keyValue = unescape(keyValue); // Unescape non-alphanumerics KEY_VALUES[keyName] = keyValue; } } function getClientPort(serverPort) { var keyName = "clientPort[\q" + serverPort +"\q]"; return KEY_VALUES[keyName]; } function generateContent() { retrieveKeyValues(); var newContent = "<html>\\n" + "<head></head>\\n" + "<body>\\n" + "<applet code=\\"com.citrix.JICA.class\\" archive=\\ "JICAEngN.jar\\" width=800 height=600>\\n" + "<param name=\\"cabbase\\" value=\\"JICAEngM.cab\\">\\n" + "<param name=\\"address\\" value=\\"localhost\\">\\n" + "<param name=ICAPortNumber value=" + getClientPort(\q1494\q) + ">\\n" + "</applet>\\n" + "</body>\\n" + "</html>\\n"; document.write(newContent); } </script> <body onLoad="generateContent();"> </body> </html>
<html> <body> <applet code="com.citrix.JICA.class" archive= "JICAEngN.jar" width=800 height=600> <param name="cabbase" value="JICAEngM.cab"> <param name="address" value="localhost"> <param name=ICAPortNumber value=1494> </applet> </body></html>