Sun Java System Portal Server Secure Remote Access 6 2005Q4 管理ガイド |
第 5 章
Netletこの章では、ユーザーのリモートデスクトップとイントラネット上のアプリケーションを実行しているサーバーとの間で、Netlet を使用してアプリケーションを安全に実行する方法について説明します。Netlet の設定については、第 11 章「Netlet の設定」を参照してください。
この章で説明する内容は次のとおりです。
Netlet の概要Sun JavaTM System Portal Server のユーザーが、一般的なアプリケーションや企業専用のアプリケーションをリモートデスクトップで安全に実行できると便利な場合があります。プラットフォームに Netlet を設定すると、このようなアプリケーションに安全にアクセスできるようになります。
Netlet を使用することで、インターネットなどのセキュリティーの弱いネットワークで一般的な TCP/IP サービスを安全に実行できます。TCP/IP アプリケーション (Telnet や SMTP など)、HTTP アプリケーション、同じポートを使用するすべてのアプリケーションを実行できます。
アプリケーションが TCP/IP ベースであるか同じポートを使用する場合、Netlet を介してアプリケーションを実行できます。
Netlet アプレットを使用する場合はブラウザのポップアップブロッカを無効にする必要があることを、ユーザーに通知してください。
Netlet のコンポーネント
図 5-1 は、Netlet で使用される各種コンポーネントを示しています。
図 5-1 Netlet のコンポーネント
localhost の待機ポート
これは Netlet アプレットが待機するクライアントマシン上のポートです。クライアントマシンは localhost です。
Netlet アプレット
Netlet アプレットは、リモートクライアントマシンと、Telnet、Graphon、Citrix などのイントラネットアプリケーションの間で、暗号化された TCP/IP トンネルの設定を担当します。アプレットはパケットを暗号化してゲートウェイに送信し、ゲートウェイからの応答パケットを解読してローカルアプリケーションに送信します。
スタティックルールの場合、Netlet アプレットは、ユーザーがポータルにログインすると自動的にダウンロードされます。ダイナミックルールの場合、ダイナミックルールに対応するリンクをユーザーがクリックしたときにアプレットがダウンロードされます。スタティックルールとダイナミックルールについては、「ルールのタイプ」を参照してください。
Sun Ray 環境での Netlet の実行については、「Sun Ray 環境での Netlet の実行」を参照してください。
Netlet ルール
Netlet ルールでは、クライアントマシンで実行する必要のあるアプリケーションが、対応する宛先ホストにマッピングされます。つまり Netlet は、Netlet ルールに定義されたポートに送信されたパケットに対してだけ動作します。これにより、セキュリティーが向上します。
管理者は Netlet の機能に対して特定のルールを設定する必要があります。これらのルールによって、使用される暗号化方式や、呼び出す URL、ダウンロードするアプレット、宛先ポート、宛先ホストなどの詳細が指定されます。クライアントマシン上のユーザーが Netlet を通じて要求を行う場合、これらのルールに基づいて接続の確立方法が速やかに決定されます。詳細については、「Netlet ルールの定義」を参照してください。
Netlet プロバイダ
これは Netlet の UI コンポーネントです。プロバイダを使用することで、Portal Server のデスクトップから必要なアプリケーションを設定できます。プロバイダにリンクが作成され、ユーザーはこのリンクをクリックして必要なアプリケーションを実行します。また、デスクトップ Netlet プロバイダで、ダイナミックルールの宛先ホストを指定できます。「Netlet ルールの定義」を参照してください。
Netlet プロキシ (オプション)
ゲートウェイは、リモートクライアントマシンとゲートウェイ間の安全なトンネルを保証します。Netlet プロキシの使用は任意です。インストール時にこのプロキシをインストールしない選択も可能です。Netlet プロキシについては、「Netlet プロキシの使用」を参照してください。
Netlet の使用例
Netlet 使用時には、次の一連のイベントが行われます。
- リモートユーザーが Portal Server デスクトップにログインします。
- ユーザー、ロール、または組織にスタティック Netlet ルールが定義されている場合は、リモートクライアントに Netlet アプレットが自動的にダウンロードされます。
ユーザー、ロール、または組織にダイナミックルールが定義されている場合は、Netlet プロバイダに必要なアプリケーションを手動で設定する必要があります。Netlet アプレットは、ユーザーが Netlet プロバイダのアプリケーションリンクをクリックしたときにダウンロードされます。スタティックルールとダイナミックルールについては、「Netlet ルールの定義」を参照してください。
- Netlet は Netlet ルールで定義されたローカルポートで待機します。
- Netlet はリモートクライアントとホストの間で、Netlet ルールで指定されたポートを使用するチャネルを確立します。
Netlet の操作
Netlet が異なる組織間のさまざまなユーザーの要求に合わせて機能するには、次の手順を実行する必要があります。
- ユーザー要件に基づいて、スタティックルールとダイナミックルールのどちらを作成するかを決定します。「ルールのタイプ」を参照してください。
- Access Manager 管理コンソールの「サービス設定」タブで、Netlet テンプレートにグローバルオプションを定義します。第 11 章「Netlet の設定」を参照してください。
- ルールの基準を組織、ロール、ユーザーから選択し、各レベルで必要に応じて修正します。組織、ロール、およびユーザーについては、『Portal Server 管理ガイド』を参照してください。
リモートホストからのアプレットのダウンロードURL から返されたページに、リモートマシンからフェッチする必要があるアプレットが埋め込まれていることがあります。ただし、JavaTM のセキュリティーによって、アプレットがそのアプレットのダウンロード元以外のホストと通信することは許可されていません。アプレットがローカルネットワークポートを使用してゲートウェイと通信できるようにするには、Access Manager 管理コンソールの「アプレットのダウンロード」フィールドを確認し、次の構文を指定する必要があります。
local-port:server-host:server-port
各表記の意味は次のとおりです。
local-port はローカルポートです。Netlet は、アプレットから送信されるトラフィックをここで待機します。
server-host は、アプレットのダウンロード元です。
server-port は、アプレットのダウンロードに使用されるポートです。
Netlet ルールの定義Netlet の設定は Netlet ルールによって定義されます。このルールは、Access Manager 管理コンソールの「SRA 設定」セクションで設定されます。Netlet ルールは組織、ロール、またはユーザーのいずれかに対して設定できます。Netlet ルールをロールまたはユーザーに対して定義したときは、組織を選択してから目的のロールまたはユーザーを選択します。
警告
Netlet ルールはマルチバイトエントリをサポートしません。Netlet ルールのどの編集フィールドにもマルチバイト文字を指定しないでください。
Netlet ルールには 64000 を超えるポート番号を指定できません。
表 5-1 は、Netlet ルールのフィールドを示しています。
表 5-1 Netlet ルールのフィールド
パラメータ
説明
値
ルール名
この Netlet ルールの名前を指定します。各ルールに一意の名前を指定する必要があります。これは、特定のルールへのアクセスを定義する場合に便利です。詳細については、「Netlet ルールへのアクセスの定義」を参照してください。
暗号化方式
暗号化方式を定義するか、ユーザーが選択できる方式のリストを指定します。
選択した暗号化方式は、Netlet プロバイダにリスト表示されます。ユーザーは必要な暗号化方式をリストから選択できます。
デフォルト : Netlet 管理コンソールで指定するデフォルト VM ネイティブ暗号化方式と、デフォルト Java プラグイン暗号化方式。
URL
URL ユーザーが Netlet プロバイダのリンクをクリックしたときにブラウザで開かれる URL を指定します。ブラウザにはアプリケーションのウィンドウが表示され、ルールによって指定されたローカルポート番号で localhost に接続します。
相対 URL を指定する必要があります。
Netlet ルールによって呼び出されるアプリケーションへの URL。例 : telnet://localhost:30000
アプリケーションの呼び出しにアプレットが必要な場合は、その URL を指定します。
null : 指定した URL によってアプリケーションが起動されない、またはデスクトップで制御されない場合に設定する値。通常は Web ベース以外のアプリケーションで使用されます。
アプレットのダウンロード
このルールでアプレットのダウンロードが必要であるかどうかを指定します。
チェックマークなし: アプレットをダウンロードしません。
チェックマークあり: ループバックポートを使用してアプレットを Portal Server マシンからダウンロードします。
アプレットの詳細は、local-port:server-host:server-port の形式で指定します。
- local-port はクライアントの宛先ポートを表します。このポートは、デフォルトのループバックポートとは異なる必要があります。詳細については、第 11 章「Netlet の設定」を参照してください。各ルールに一意の local port を指定します。
- server-host はアプレットのダウンロード元のサーバー名を表します。
- server-port はアプレットのダウンロードに使用されるサーバー上のポートを表します。
アプレットがダウンロードされる場合にサーバーが指定されていないときは、アプレットは Portal Server のホストからダウンロードされます。
拡張セッション
Netlet がアクティブの場合、Portal Server セッションのアイドル時間のタイムアウトを制御します。
チェックマークあり: Netlet がアクティブで、ほかのポータルアプリケーションがアイドルの場合にのみ、ポータルセッションを持続するようにします。
チェックマークなし: Netlet アプリケーションがアクティブで、ほかのポータルアプリケーションがアイドルの場合でも、ポータルセッションのアイドル時間は、セッションに指定されたアイドル時間でタイムアウトになります。
ローカルポート
Netlet が待機するクライアントのポート。
local-port の値は一意である必要があります。特定のポート番号を複数のルールに指定することはできません。
複数のローカルポートを指定するのは、複数の接続に複数のホストを指定している場合です。構文については、「複数ホスト接続のスタティックルール」を参照してください。
FTP ルールでは、ローカルポートは 30021 である必要があります。
宛先ホスト
Netlet 接続の受信者。
host : Netlet 接続を受信するホスト名。これはスタティックルールで使用されます。siroe などの簡易ホスト名、または siroe.mycompany.com などの完全修飾 DNS 形式のホスト名を指定します。次の場合に複数のホストを指定します。
- 指定された各ホストとの接続を確立する場合。指定された各ホストに対して、対応するクライアントと宛先ポートを指定する必要があります。構文については、「複数ホスト接続のスタティックルール」を参照してください。
- 指定されたホストのリストから、使用可能なホストへの接続を試みる場合。構文については、「複数ホストを選択するスタティックルール」を参照してください。
TARGET : 構文で TARGET を指定するルールはダイナミックルールです。TARGET は、デスクトップの Netlet プロバイダで、必要な宛先ホストをユーザーが 1 つ以上指定できることを示します。
1 つのルールでスタティックホストと TARGET を組み合わせることはできません。
宛先ポート
宛先ホスト上のポート。
ホストと宛先ホストのほかに、宛先ポートを指定する必要があります。
複数の宛先ホストがある場合は、複数の宛先ポートを指定できます。複数のポートは、port1+port2+port3-port4+port5 のように指定します。
ポート番号間のプラス (+) 記号は、単一の宛先ホストに対する代替ポートを表します。
異なる宛先ホストのポート番号を区切るときは、区切り文字としてポート番号間にマイナス (-) 記号を挿入します。
この例では、Netlet は port1、port2、および port3 を順番に使用して、指定された最初の宛先ホストへの接続を試みます。これに失敗した場合、Netlet は port4 と port5 をこの順序で使用して 2 番目のホストへの接続を試みます。
複数のポートは、スタティックルールでのみ設定できます。
ゲートウェイが Portal Server からセッション通知を受け取るようにするには、次の情報を
com.iplanet.am.jassproxy.trustAllServerCerts=true
Portal Server 上の次のプロパティファイルに追加します。
/etc/opt/SUNWam/config/AMConfig.instance-name.properties
Access Manager を再起動します。
ルールのタイプ
ルールで宛先ホストがどのように指定されているかにより、Netlet ルールは 2 つのタイプに分かれます。
スタティックルール
スタティックルールは、ルールの一部として宛先ホストを指定します。スタティックルールを作成する場合、ユーザーは必要な宛先ホストを指定することができません。次の例では、sesta は宛先ホストです。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
ftpstatic
SSL_RSA_WITH_RC4_128_MD5
null
false
true
30021
sesta
21
複数の宛先ホストおよびポートを設定できるのは、スタティックルールだけです。設定例については、「複数ホスト接続のスタティックルール」を参照してください。
ダイナミックルール
ダイナミックルールでは、宛先ホストはルールの一部として指定されません。ユーザーは Netlet プロバイダで必要な宛先ホストを指定できます。次の例では、TARGET は宛先ホストの可変部分です。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
ftpdynamic
SSL_RSA_WITH_RC4_128_MD5
null
false
true
30021
TARGET
21
暗号化方式
暗号化方式に基づいて、Netlet ルールはさらに次のように分類されます。
Netlet でサポートされる暗号化方式のリストについては、「サポートされる暗号化方式」を参照してください。
Netlet でサポートされる暗号化方式のリストについては、「サポートされる暗号化方式」を参照してください。
サポートされる暗号化方式
表 5-2 は、Netlet でサポートされる暗号化方式のリストを示しています。
下位互換性
旧バージョンの Portal Server は、Netlet ルールの一部として暗号化方式をサポートしていません。暗号化方式を使用せずに既存のルールと下位互換を行うには、ルールでデフォルトの暗号化方式を指定します。暗号化方式を使用しない既存のルールは、次のとおりです。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
Telnet
telnet://localhost:30000
false
true
30000
TARGET
23
これは次のように解釈されます。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
Telnet
デフォルト暗号化方式
telnet://localhost:30000
false
true
30000
TARGET
23
これは、管理者設定ルールでデフォルトとして選択した「暗号化方式」フィールドと同じです。詳細については、「デフォルトの暗号化方式の指定」を参照してください。
Netlet ルールの例
ここでは、Netlet ルールの例をいくつか示し、Netlet 構文がどのように機能するかについて説明します。
基本的なスタティックルール
このルールは、クライアントマシンから sesta への Telnet 接続をサポートします。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
myrule
SSL_RSA_WITH_RC4_128_MD5
null
false
true
1111
sesta
23
各表記の意味は次のとおりです。
myrule はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
null は、このアプリケーションが URL で呼び出されない、またはデスクトップから実行できないことを示します。
false は、クライアントがこのアプリケーションを実行するためにアプレットをダウンロードしないことを示します。
true は、Netlet 接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
1111 は、Netlet が宛先ホストからの接続要求を待機するクライアント側のポートです。
sesta は Telnet 接続の受信側ホストの名前です。
23 は接続の宛先ホストのポート番号です。この例では、既知の Telnet ポートです。
デスクトップ Netlet プロバイダにはリンクが表示されませんが、Netlet は指定されたポート (1111) で自動的に起動して待機します。クライアントソフトウェア、この場合はポート 1111 で localhost に接続した Telnet セッションを開始するようにユーザーに指示してください。
たとえば、Telnet セッションを開始するには、クライアントは端末の UNIX コマンド行で次のコマンドを入力する必要があります。
複数ホスト接続のスタティックルール
このルールは、クライアントマシンから 2 台のマシン sesta および siroe への Telnet 接続をサポートします。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
myrule
SSL_RSA_WITH_RC4_128_MD5
null
false
true
1111
sesta
23
1234
siroe
23
各表記の意味は次のとおりです。
23 は接続用の宛先ホスト上のポート番号です。
Telnet の予約ポート番号です。1111 は、Netlet が最初の宛先ホスト sesta からの接続要求を待機するポートです。
1234 は、Netlet が 2 番目の宛先ホスト siroe からの接続要求を待機するポートです。
このルールの最初の 6 つのフィールドは、「基本的なスタティックルール」と同じです。2 番目の宛先ホストを識別するためのフィールドが 3 つ追加されている点が異なります。
ルールにターゲットを追加するときは、新しい宛先ホストごとに、ローカルポート、宛先ホスト、宛先ポートの 3 つのフィールドを追加する必要があります。
注
各宛先ホストへの接続を、3 つのフィールドのセットを使って記述することができます。2048 未満の待機ポート番号は、UNIX ベースのリモートクライアントでは使用できません。UNIX は下位数値のポートに制約され、root でリスナーを開始する必要があるためです。
このルールは前述のルールと同様に機能します。Netlet プロバイダはリンクを表示しませんが、Netlet は指定された 2 つのポート (1111 と 1234) で自動的に起動して待機します。ユーザーはクライアントソフトウェア、この場合は、ホストに接続するために localhost のポート 1111 に対して Telnet セッションを、2 番目のホストに接続するには、localhost のポート 1234 に対して Telnet セッションを開始する必要があります。
複数ホストを選択するスタティックルール
このルールは、複数の代替ホストを指定する場合に使用します。ルールの最初のホストへの接続に失敗した場合、Netlet は 2 番目に指定されたホストへの接続を試み、成功するまで指定の順に代替ホストへの接続を試みます。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
gojoe
SSL_RSA_WITH_RC4_128_MD5
/gojoe.html
8000:gojoeserver:8080
true
10491
siroe+sesta
35+26+491-35+491
各表記の意味は次のとおりです。
10491 は、Netlet が宛先ホストからの接続要求を待機するクライアント側のポートです。
Netlet はポート 35、ポート 26、ポート 491 の順に使用可能なポートにアクセスし、siroe との接続を確立しようと試みます。
siroe との接続が確立できない場合、Netlet はポート 35、491 の順序で sesta への接続を試みます。
URL を呼び出すダイナミックルール
このルールを使用することで、目的の宛先ホストを設定できるため、Netlet を使用してさまざまなホストへの Telnet 接続を確立できます。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
myrule
SSL_RSA_WITH_RC4_128_MD5
telnet://localhost:30000
false
true
30000
TARGET
23
各表記の意味は次のとおりです。
myrule はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
telnet://localhost:30000 はルールで呼び出される URL です。
false はアプレットがダウンロードされないことを示します。
拡張セッション (true) は、Netlet 接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
30000 は、Netlet がこのルールの接続要求を待機するクライアント上のポートです。
TARGET は、ユーザーが Netlet プロバイダを使用して宛先ホストを設定する必要があることを示します。
23 は Netlet で開かれる宛先ホストのポートです。この例では、既知の Telnet ポートです。
ルールの追加後に Netlet を実行するには
このルールが追加した後に、ユーザーは Netlet を目的どおりに稼動させるためにいくつかの手順を実行しなければなりません。ユーザーはクライアント側で次の操作を実行する必要があります。
アプレットをダウンロードするダイナミックルール
このルールは、ダイナミックに割り当てられたホストとクライアント間の接続を定義します。このルールにより、アプレットのあるサーバーからクライアントに GO-Joe アプレットがダウンロードされます。
ルール名
暗号化方式
URL
アプレットのダウンロード
拡張セッション
ローカルポート
宛先ホスト
宛先ポート
gojoe
SSL_RSA_WITH_RC4_128_MD5
/gojoe.html
8000:gojoeserver:8080
true
3399
TARGET
58
各表記の意味は次のとおりです。
gojoe はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
/gojoe.html : たとえば、アプレットを含む HTML ページのパスや、ポータルが配備されている Web コンテナのドキュメントルートへの相対パスです。
8000:server:8080 は、クライアントでアプレットを受け取る宛先ポートがポート 8000 であることを示します。gojoeserve はアプレットを送るサーバー名、8080 はアプレットのダウンロード元のサーバー上のポートです。
Extend Session(true) は、Netlet 接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
3399 は、Netlet がこのタイプの接続要求を待機するクライアント上のポートです。
TARGET は、ユーザーが Netlet プロバイダを使用して宛先ホストを設定する必要があることを示します。
58 は Netlet で開かれる宛先サーバーのポートです。この例では、GoJoe のポートです。ポート 58 は宛先ホストが自分のトラフィックを待機するポートです。Netlet は新しいアプレットの情報をこのポートに渡します。
Netlet ルールの例表 5-3 は、いくつかの一般的なアプリケーションの Netlet ルールの例を示しています。
この表には 7 つの列があります。それぞれ、「Netlet ルールのルール名」、「URL」、「ダウンロードアプレット」、「ローカルポート」、「宛先ホスト」、「宛先ポート」の各フィールドに対応します。最後の列は、ルールの説明を示します。
注
表 5-3 には、Netlet ルールの暗号化方式、およびセッションの延長のフィールドは示されていません。表に示される例で、それぞれが「SSL_RSA_WITH_RC4_128_MD5」および「true」に設定されていることを前提としています。
Netlet ロギングの有効化ゲートウェイサービスで、Netlet 関連アクティビティーのロギングを有効にできます。「Netlet ロギングの有効化」を参照してください。このログファイルは、Access Manager 設定属性の「ロギング」セクションにある「ログの場所」属性で指定されたディレクトリに作成されます。
ログファイル名には、次の命名ルールがあります。
srapNetlet_gateway-hostname_gateway-profile-name
Netlet ログには、次の情報が記録されます。
デバッグロギングの有効化デバッグ情報の場所は、Portal Server ノードの AMConfig-instance-name.properties ファイルに設定されている com.iplanet.services.debug.directory 属性の値によって異なります。
たとえば、com.iplanet.services.debug.directory 属性に次の値が設定されているとします。
/var/opt/SUNWam/debug/
この場合、NetFile のデバッグ情報は /var/opt/SUNWam/debug ディレクトリの srapNetFile ファイルから取得できます。
詳細については、『Access Manager 管理ガイド』を参照してください。
Sun Ray 環境での Netlet の実行Sun Ray 環境のクライアントマシンでアプレットをダウンロードする必要があるアプリケーションを実行するときは、HTML ファイルを変更する必要があります。次に、必要な変更を加えたファイルの例を示します。
新しい 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['key'] = 'value';
function retrieveKeyValues() {
KEY_VALUES = new Object();
var queryString = '' + this.location;
queryString = unescape(queryString);
queryString = queryString.substring((queryString.indexOf('?')) + 1);
if (queryString.length < 1) {
return false; }
var keypairs = new Object();
var numKP = 0;
while (queryString.indexOf('&') > -1) {
keypairs[numKP] = queryString.substring(0,queryString.indexOf('&'));
queryString = queryString.substring((queryString.indexOf('&')) + 1);
numKP++;
}
// クエリ文字列に最後の keypairs[] データとして残されている内容を格納します。
keypairs[numKP++] = queryString;
var keyName;
var keyValue;
for (var i=0; i < numKP; ++i) {
keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));
keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
while (keyValue.indexOf('+') > -1) {
keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
}
keyValue = unescape(keyValue);
// 英数字以外のエスケープを解除します。
KEY_VALUES[keyName] = keyValue;
}
}
function getClientPort(serverPort) {
var keyName = "clientPort['" + serverPort +"']";
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('1494')
+ ">¥n"
+ "</applet>¥n"
+ "</body>¥n"
+ "</html>¥n";
document.write(newContent);
}
</script>
<body onLoad="generateContent();">
</body>
</html>
変更前の 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>