この章では、Sun JavaTM System Portal Server Secure Remote Access について、および Sun Java System Portal Server と Sun Java System Portal Server Secure Remote Access コンポーネントの関係について説明します。
この章の内容は次のとおりです。
Secure Remote Access を使えば、リモートエンドユーザーは所属する組織のネットワークとサービスに、インターネット経由で安全にアクセスできます。また、セキュリティー保護されたインターネットポータルを組織に提供し、従業員、ビジネスパートナー、一般ユーザーなど、ターゲットとするユーザーがコンテンツ、アプリケーション、およびデータを利用できるようにします。
リモートデバイスからポータルコンテンツおよびサービスにアクセスする場合、Secure Remote Access ではブラウザによる、セキュリティー保護されたリモートアクセスが提供されます。Secure Remote Access は、Java™ テクノロジに対応したブラウザを使用するすべてのデバイスからユーザーへのアクセスが可能な、セキュリティー保護されたアクセスソリューションであり、クライアントソフトウェアを使用する必要はありません。Portal Server に統合すると、アクセス権のあるコンテンツおよびサービスへの暗号化されたセキュリティー保護されたアクセスが、ユーザーに対して保証されます。
Secure Remote Access ソフトウェアは、安全性の高いリモートアクセスポータルを提供する企業を対象に設計されています。このようなポータルは、イントラネットリソースのセキュリティー、保護、およびプライバシに重点が置かれています。Secure Remote Access のアーキテクチャーは、これらのタイプのポータルに適しています。ユーザーは Secure Remote Access ソフトウェアを利用することで、イントラネットリソースをインターネットに公開しなくても、これらのリソースにインターネットを通じて安全にアクセスできます。
Portal Server は、次の節で説明するオープンモードとセキュリティー保護されたモードの 2 つのモードで動作します。
オープンモードの場合、Portal Server のインストール時に Secure Remote Access ソフトウェアはインストールされません。このモードでの HTTPS 通信は可能ですが、セキュリティー保護されたリモートアクセスは使用できません。したがって、ユーザーはセキュリティー保護されたリモートファイルシステムとアプリケーションにはアクセスできません。
オープンポータルとセキュリティー保護されたポータルの主な違いは、オープンポータルを通じて提供されるサービスは、通常は保護されたイントラネット内ではなく非武装ゾーン (DMZ) 内に存在する点にあります。DMZ は一般のインターネットと私的なイントラネットの間に存在する保護付きの小規模ネットワークで、通常は両端のファイアウォールで境界が定められます。
公開情報の配布、無償アプリケーションへのアクセス許可について、ポータルに機密情報が含まれていない場合、大量のアクセス要求への応答は、セキュリティー保護されたモードに比べて速くなります。
オープンモードでは、Portal Server はファイアウォールの背後にある単一のサーバーにインストールされています。複数のクライアントが単一のファイアウォールを経由して、インターネット上の Portal Server にアクセスしています。
セキュリティー保護されたモードは、必要とされるイントラネットファイルシステムとアプリケーションへのセキュリティー保護されたリモートアクセスを可能にします。
ゲートウェイは非武装ゾーン (DMZ) に常駐します。ゲートウェイはすべてのイントラネット URL とアプリケーションへの単一のセキュリティー保護されたアクセスポイントとして機能し、ファイアウォールに開かれるポートの数は減ります。その他のセッション、認証、および標準のポータルデスクトップなどの Portal Server サービスはすべて、保護されたイントラネットの DMZ の背後で実行されます。クライアントブラウザからゲートウェイへの通信は、SSL (Secure Socket Layer) を使った HTTP を使って暗号化されます。ゲートウェイからサーバーおよびイントラネットリソースへの通信には HTTP または HTTPS が使用されます。
セキュリティー保護されたモードでは、SSL を使用してクライアントとゲートウェイ間のインターネット上の接続を暗号化しています。また、SSL はゲートウェイとサーバー間の接続の暗号化にも使用されます。イントラネットとインターネット間にゲートウェイが存在することで、クライアントと Portal Server 間のパスの安全性が強化されます。
サーバーとゲートウェイをさらに追加して、サイトを拡張することができます。Secure Remote Access ソフトウェアは、ビジネスの要件に基づいてさまざまな方法で構成することができます。ビジネス要件への対応方法の詳細については、『Sun Java System Portal Server 7.2 Deployment Planning Guide 』を参照してください。
Secure Remote Access ソフトウェアには、次に示す 5 つの主要なコンポーネントがあります。
ゲートウェイ
SRA のゲートウェイは、インターネットから送信されるリモートユーザーセッションと企業イントラネットの間のインタフェースおよびセキュリティーバリアとして機能します。ゲートウェイはリモートユーザーとの単一のインタフェースを通じて、内部 Web サーバーとアプリケーションサーバーのコンテンツを安全に提供します。
Web サーバーでは、クライアントとゲートウェイの間の通信に HTML、JavaScript、XML などの Web ベースのリソースが使用されます。リライタは、Web コンテンツを使用できるようにするためのゲートウェイコンポーネントです。
アプリケーションサーバーは、クライアントとゲートウェイの間の通信に telnet や FTP などのバイナリプロトコルを使用します。ゲートウェイに常駐するネットレットは、この目的で使用されます。詳細については、第 2 章「ゲートウェイの操作」を参照してください。
リライタ
リライタは、エンドユーザーのイントラネット参照を可能にし、またそのページ上のリンクや URL へのリンクが正しく機能するようにします。リライタは Web ブラウザのロケーションフィールドにゲートウェイ URL を追加して、ゲートウェイを通じてコンテンツ要求をリダイレクトします。詳細については、第 4 章「リライタの操作」を参照してください。
ネットファイル
ネットファイルは、ファイルシステムとディレクトリのリモートアクセスおよびリモート操作を可能にするファイルマネージャーアプリケーションです。ネットファイルには Java ベースのユーザーインタフェースが含まれます。詳細については、第 5 章「ネットファイルの操作」を参照してください。
ネットレット
ネットレットは、一般的なアプリケーションまたは企業独自のアプリケーションをリモートデスクトップで安全かつ効率的に実行できるようにします。サイトにネットレットを実装すると、Telnet や SMTP などの共通の TCP/IP サービスや、pcANYWHERE または Lotus Notes などの HTTP ベースのアプリケーションを安全に実行できます。詳細については、第 6 章「ネットレットの操作」を参照してください。
プロキシレット
プロキシレットは、クライアントマシン上で稼動する動的なプロキシサーバーです。プロキシレットは URL をゲートウェイにリダイレクトするために、クライアントマシン上のブラウザのプロキシ設定を読み込み、ローカルプロキシサーバー (プロキシレット) をポイントするように変更します。
Secure Remote Access の属性は、Portal Server 管理コンソールで次のサービスを使用して設定します。
アクセス制御
特定の URL へのアクセスを許可または制限し、シングルサインオン機能を管理する場合に使用します。詳細については、第 7 章「Secure Remote Access サーバーのアクセス制御の設定」を参照してください。
ゲートウェイ
コンポーネントの有効化、Cookie 管理、プロキシ管理、セキュリティー設定、パフォーマンスチューニング、リライタのマッピング管理など、ゲートウェイに関連したすべての属性を設定する場合に使用します。詳細については、第 8 章「Secure Remote Access ゲートウェイの設定」を参照してください。
ネットファイル
共通ホスト、MIME タイプ、および異なる種類のホストへのアクセスなど、ネットファイル関連のすべての属性を設定する場合に使用します。詳細については、第 14 章「ネットファイルの設定」を参照してください。
ネットレット
ネットレットルール、必須ルールへのアクセス、組織とホスト、およびデフォルトアルゴリズムなど、ネットレットに関連したすべての属性を設定する場合に使用します。詳細については、第 11 章「ネットレットの設定」を参照してください。
リライタ
すべてのリライタルールセットのダウンロード、アップロード、および削除を行う場合に使用します。
プロキシレット
「プロキシレットアプレットのバインド IP」アドレスやポート番号など、プロキシレットに関連する属性を設定する場合に使用します。詳細については、第 13 章「プロキシレットの設定」を参照してください。
ゲートウェイの実行中に行われた属性変更は、ゲートウェイに通知されません。更新された (ゲートウェイまたはその他のサービスに属する) プロファイル属性を有効にするには、ゲートウェイを再起動します。詳細については、「コマンド行オプションによるゲートウェイ属性の設定」を参照してください。
「Secure Remote Access」タブを選択し、適切なサービスタブ (「ネットレット」、「ネットファイル」、または「プロキシレット」) をクリックします。
「DN を選択」ドロップダウンメニューから「組織」または「ロール」を選択します。
「COS 優先順位」ドロップダウンボックスで適切な競合解決レベルを選択します。
「保存」をクリックして終了します。
SRA は、次のアプリケーションをサポートします。
PortalServer_base/bin/psadmin switch-sra-status -u amadmin -f <passwordfile> on コマンドを使用して、SRA の状態を切り替えます。
PortalServer_base/bin/psadmin provision-sra -u amadmin -f <passwordfile> -p <portal-id> --gateway-profile <profile-name> --enable コマンドを使用して、SRA の状態をプロビジョニングします。
この章では、ゲートウェイに関連する概念について説明します。ゲートウェイの管理については、第 16 章「ゲートウェイの管理」を参照してください。ゲートウェイの設定については、第 8 章「Secure Remote Access ゲートウェイの設定」を参照してください。
この章の内容は次のとおりです。
ゲートウェイは、インターネットから送信されるリモートユーザーセッションと企業イントラネットの間のインタフェースおよびセキュリティーバリアとして機能します。ゲートウェイはリモートユーザーとの単一のインタフェースを通じて、内部 Web サーバーとアプリケーションサーバーのコンテンツを安全に提供します。
ゲートウェイインスタンスごとに、次のタスクを完了してください。
そのほかに、次のゲートウェイ関連トピックがあります。
ゲートウェイプロファイルには、ゲートウェイが待機するポート、SSL オプション、およびプロキシオプションなどのゲートウェイの設定に関連したすべての情報が収められています。ゲートウェイをインストールする場合、デフォルトの値を選択すると、「default」という名前のデフォルトゲートウェイプロファイルが作成されます。デフォルトプロファイルに相当する設定ファイルは、次の場所にあります。/etc/opt/SUNWportal/platform.conf.default
/etc/opt/SUNWportal は、すべての platform.conf.* ファイルが格納されるデフォルトの場所です。platform.conf ファイルの詳細については、「platform.conf ファイルの概要」を参照してください。
プロファイルを操作するときは、次の作業を実行できます。
複数のプロファイルを作成して、各プロファイルに属性を定義します。また、必要に応じてこれらのプロファイルを異なる複数のゲートウェイに割り当てます。
同じプロファイルを、複数のマシン上にあるゲートウェイに割り当てます。
異なる複数のプロファイルを、同じマシン上で稼動している単一のゲートウェイの複数のインスタンスに割り当てます。
同じマシン上で稼動するゲートウェイの複数のインスタンスには、同じプロファイルを割り当てないでください。このように設定すると、ポート番号が同じになることにより競合が発生します。
また、同じゲートウェイに作成された複数のプロファイルに、同じポート番号を指定しないでください。同じゲートウェイの複数のインスタンスを同じポートで実行すると、競合が発生します。
複数のゲートウェイインスタンスの作成については、『Sun Java System Portal Server 7.2 Installation and Configuration Guide』の第 4 章「Installing and Configuring a Gateway With Portal Server」を参照してください。
マルチホームゲートウェイのインスタンスとは、1 つの Portal Server 上に作成された複数のゲートウェイです。これらのインスタンスを作成するには、platform.conf ファイルを次のように変更します。
gatewaybindipaddress = 0.0.0.0
最初のゲートウェイを作成したあとで、同じ LDAP を使用する複数のゲートウェイを作成する場合は、次の操作を行います。
次の部分を参照しながら、/etc/opt/SUNWam/config/ の AMConfig-instance-name.properties を、最初にインストールしたゲートウェイインスタンスと一致するように変更します。
「同じ LDAP を使用するゲートウェイインスタンスを作成する」を参照してください。
通常はゲートウェイを再起動する必要はありません。再起動が必要なのは、次のいずれかに該当する場合だけです。
新規プロファイルを作成し、新しいプロファイルをゲートウェイに割り当てる必要がある場合
既存のプロファイルの属性を修正し、変更を有効にする必要がある場合
OutOfMemory エラーなどによりゲートウェイがクラッシュする場合
ゲートウェイが応答を停止し、要求を一切処理しない場合
ウォッチドッグがゲートウェイを監視する間隔を設定することができます。ウオッチドッグを開始または停止するには、次のコマンドを実行します。./psadmin sra-watchdog -u amadmin -f <password-file> -t <type> on|offこの間隔は、デフォルトでは 60 秒に設定されています。この値を変更する場合は、crontab ユーティリティーで次の行を編集します。
0-59 * * * * gateway-install-root/SUNWportal/bin/ /var/opt/SUNWportal/.gw. 5 > /dev/null 2>&1 |
crontab のエントリを設定する方法については、crontab のマニュアルページを参照してください。
仮想ホストとは、同じマシンの IP とホスト名をポイントする追加のホスト名のことです。たとえば、ホスト名 abc がホスト IP アドレス 192.155.205.133 をポイントしている場合には、同じ IP アドレスをポイントする別のホスト名 cde を追加できます。
ゲートウェイが、Portal Server に配備されている SRA コア (RemoteConfigServlet) にアクセスするために使用するプロキシホストを指定することができます。このプロキシは、Portal Server および Access Manager にアクセスするためにゲートウェイが使用します。「プロキシを指定する」を参照してください。
platform.conf ファイルは、デフォルトでは次の場所にあります。/etc/opt/SUNWportal
platform.conf ファイルには、ゲートウェイが必要とする詳細情報が収められています。ここでは、サンプルの platform.conf ファイルを提示し、すべてのエントリについて説明します。
マシン固有の詳細を設定ファイルにすべて格納しているため、複数のマシンで実行するゲートウェイが共通のプロファイルを共有できるという利点があります。
次に platform.conf ファイルのサンプルを示します。
Tue May 30 11:51:23 IST 2006 debug.com.sun.portal.rewriter.original.level=INFO gateway.favicon= gateway.bindipaddress=10.12.154.236 debug.com.sun.portal.sra.rproxy.toFromServer.handler.java.util.logging.FileHandler.pattern= /var/opt/SUNWportal/logs/sra/default/Gateway.toFromServer.%u.%g.log gateway.port=443 rewriterproxy.jvm.flags=-ms64m -mx128m portal.server.instance=default debug.com.sun.portal.handler.java.util.logging.FileHandler.filter= gateway.jdk.dir=/usr/jdk/entsys-j2se gateway.ignoreURIList=/MSOffice/cltreq.asp,/_vti_bin/owssvr.dll debug.com.sun.portal.rewriter.rest.level=INFO gateway.trust_all_server_certs=true debug.com.sun.portal.handler.java.util.logging.FileHandler.append=true gateway.cdm.cacheCleanupTime=300000 gateway.httpurl= debug.com.sun.portal.handler.java.util.logging.FileHandler.count=1 gateway.jvm.classpath= debug.com.sun.portal.setserverlogs=false gateway.protocol=https debug.com.sun.portal.sra.rproxy.toFromServer=java.util.logging.FileHandler rewriterproxy.jvm.classpath= gateway.enable.customurl=false debug.com.sun.portal.sra.rproxy.toFromBrowser=java.util.logging.FileHandler debug.com.sun.portal.handler.java.util.logging.FileHandler.formatter=com.sun.portal. log.common.PortalLogFormatter debug.com.sun.portal.sra.rproxy.toFromBrowser.handler.java.util.logging.FileHandler.pattern= /var/opt/SUNWportal/logs/sra/default/Gateway.toFromBrowser.%u.%g.log debug.com.sun.portal.level=INFO debug.com.sun.portal.rewriter.unaffected.separatefile=true gateway.enable.accelerator=false debug.com.sun.portal.rewriter.original.separatefile=true gateway.virtualhost=nicp236.india.sun.com 10.12.154.236 debug.com.sun.portal.stacktrace=true gateway.host=nicp236.india.sun.com debug.com.sun.portal.handler.java.util.logging.FileHandler.pattern= /var/opt/SUNWportal/logs/sra/default/%logger.%sraComponentType.%u.%g.log gateway.certdir=/etc/opt/SUNWportal/cert/default gateway.sockretries=3 gateway.allow.client.caching=true debug.com.sun.portal.rewriter.unaffected.level=INFO debug.com.sun.portal.rewriter.uriinfo.separatefile=true log.config.check.period=2000 debug.com.sun.portal.rewriter.rewritten.level=INFO gateway.userProfile.cacheSize=1024 debug.com.sun.portal.rewriter.rulesetinfo.level=INFO netletproxy.jvm.classpath= gateway.userProfile.cacheSleepTime=60000 debug.com.sun.portal.rewriter.uriinfo.level=INFO debug.com.sun.portal.rewriter.rest.separatefile=true gateway.notification.url=notification debug.com.sun.portal.rewriter.rulesetinfo.separatefile=true gateway.logdelimiter=&& gateway.ignoreServerList=false gateway.jvm.flags=-ms64m -mx128m debug.com.sun.portal.handler.java.util.logging.FileHandler.limit=5000000 gateway.dsame.agent=http\://sunone216.india.sun.com\:8080/portal/RemoteConfigServlet gateway.httpsurl= gateway.retries=6 gateway.userProfile.cacheCleanupTime=300000 gateway.logging.password=X03MO1qnZdYdgyfeuILPmQ\=\= UX9x0jIua3hx1YOVRG/TLg\=\= netletproxy.jvm.flags=-ms64m -mx128m debug.com.sun.portal.rewriter.rewritten.separatefile=true gateway.user=noaccess gateway.external.ip=10.12.154.236 debug.com.sun.portal.handler=java.util.logging.FileHandler gateway.cdm.cacheSleepTime=60000 rewriterproxy.accept.from.gateways= rewriterproxy.checkacl=false |
次の表は、platform.conf ファイルのすべてのフィールドと、その説明を示しています。
表 2–1 ファイルのプロパティー
SUN 以外の Web プロキシを使用して HTTP リソースにアクセスするように、ゲートウェイを設定できます。Web プロキシは、クライアントとインターネットの間に設置されます。
ドメインおよびサブドメインごとに異なるプロキシを使用できます。これらのエントリから、特定のドメインの特定のサブドメインへのアクセスに使用するプロキシがゲートウェイに伝えられます。ゲートウェイで指定したプロキシ設定は次のように機能します。
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」フィールドで、必要なプロキシとドメインおよびサブドメインのリストを作成します。
「プロキシを使用する」オプションを選択すると、次のような設定になります。
指定されたホストに、「ドメインとサブドメインのプロキシ」フィールドで指定したプロキシが使用されます。
「ドメインとサブドメインのプロキシ」リストで指定したドメインとサブドメイン内の、特定の URL に直接接続できるようにするには、「Web プロキシを使用しない URL」フィールドにその URL を指定します。
「プロキシを使用する」オプションを選択しない場合は、次のような設定になります。
「ドメインとサブドメインのプロキシ」フィールドで指定したドメインとサブドメイン内の特定の URL にプロキシを使用するには、「Web プロキシを使用しない URL」リストにその URL を指定します。
「プロキシを使用する」オプションが無効になっていても、「Web プロキシを使用する URL」リスト内の URL への接続にはプロキシが使用されます。これらの URL のプロキシは、「ドメインとサブドメインのプロキシ」リストから取得されます。
次の図は、ゲートウェイサービスのプロキシ設定に基づいて Web プロキシ情報が解決される手順を示しています。
「Web プロキシの設定」では、「プロキシを使用する」が選択され、「Web プロキシを使用しない URL」リストに要求された URL が含まれている場合、ゲートウェイは指定されたホストに直接接続します。
「プロキシを使用する」が選択され、「Web プロキシを使用しない URL」リストに要求された URL が含まれていない場合、ゲートウェイは指定されたプロキシを経由してホストに接続します。プロキシが指定されている場合は、「ドメインとサブドメインのプロキシ」リスト内でプロキシが検索されます。
「プロキシを使用する」が無効で、「Web プロキシを使用する URL」リストに要求された URL が含まれている場合、ゲートウェイは「ドメインとサブドメインのプロキシ」リストのプロキシ情報を使用して目的のホストに接続します。
「プロキシを使用する」が無効で、「Web プロキシを使用する URL」リストに要求された URL が含まれていない場合、ゲートウェイは指定されたホストに直接接続します。
前述したいずれの条件も満たさず、直接接続が不可能な場合は、ゲートウェイは接続不可を伝えるエラーを表示します。
標準のポータルデスクトップのブックマークチャネルを通じて URL にアクセスする場合、前述したいずれの条件にも合わない場合は、ゲートウェイはブラウザにリダイレクトを送信します。ブラウザは独自のプロキシ設定を使用して URL にアクセスします。
domainname [web_proxy1:port1]|subdomain1 [web_proxy2:port2]| |
sesta.com wp1:8080|red wp2:8080|yellow|* wp3:8080 |
各表記の意味は次のとおりです。
sesta.com はドメイン名、wp1 はポート 8080 にアクセスするプロキシです。
red はサブドメイン、wp2 はポート 8080 にアクセスするプロキシです。
yellow はサブドメインです。プロキシが指定されていないため、ドメインに指定されたプロキシ、つまりポート 8080 の wp1 が使用されます。
* は、ほかのすべてのサブドメインがポート 8080 で wp3 を使用する必要があることを表します。
デフォルトでは、ポートを指定しない場合ポート 8080 が使用されます。
クライアントが特定の URL へのアクセスを試みると、URL のホスト名が「ドメインとサブドメインのプロキシ」リスト内のエントリと照合されます。指定されたホスト名でもっとも長いサフィックスに一致するエントリが選ばれます。たとえば、ホスト名 host1.sesta.com が要求されているとします。一致するエントリが見つかるまで、次の検索が順に行われます。
「ドメインとサブドメインのプロキシ」リストで host1.sesta.com がスキャンされます。一致するエントリが見つかると、このエントリに指定されたプロキシがホストの接続に使用されます。
見つからなかった場合、リストで *.sesta.com がスキャンされます。エントリが見つかると、対応するプロキシが使用されます。
見つからなかった場合、リストで sesta.com がスキャンされます。エントリが見つかると、対応するプロキシが使用されます。
見つからなかった場合、リストで *.com がスキャンされます。エントリが見つかると、対応するプロキシが使用されます。
見つからなかった場合、リストで com がスキャンされます。エントリが見つかると、対応するプロキシが使用されます。
見つからなかった場合、リストで * がスキャンされます。エントリが見つかると、対応するプロキシが使用されます。
一致するエントリが見つからなかった場合、直接接続が試みられます。
「ドメインとサブドメインのプロキシ」リストに次のようなエントリがあるとします。
com p1| host1 p2 | host2 | * p3 sesta.com p4 | host5 p5 | * p6 florizon.com | host6 abc.sesta.com p8 | host7 p7 | host8 p8 | * p9 host6.florizon.com p10 host9.sesta.com p11 siroe.com | host12 p12 | host13 p13 | host14 | * p14 siroe.com | host15 p15 | host16 | * p16 * p17 |
ゲートウェイは、次の表に示すように、これらのエントリを内部的に 1 つのテーブルにマッピングします。
表 2–2 「ドメインとサブドメインのプロキシ」リストのエントリのマッピング
番号 |
「ドメインとサブドメインのプロキシ」リストのエントリ |
プロキシ |
説明 |
---|---|---|---|
1 |
com |
p1 |
リストで指定されたプロキシ |
2 |
host1.com |
p2 |
リストで指定されたプロキシ |
3 |
host2.com |
p1 |
host2 に対してプロキシが指定されないため、ドメインのプロキシが使用されます。 |
4 |
*.com |
p3 |
リストで指定されたプロキシ |
5 |
sesta.com |
p4 |
リストで指定されたプロキシ |
6 |
host5.sesta.com |
p5 |
リストで指定されたプロキシ |
7 |
*.sesta.com |
p6 |
リストで指定されたプロキシ |
8 |
florizon.com |
直接 |
詳細はエントリ 14 の説明を参照 |
9 |
host6.florizon.com |
– |
詳細はエントリ 14 の説明を参照 |
10 |
abc.sesta.com |
p8 |
リストで指定されたプロキシ |
11 |
host7.abc.sesta.com |
p7 |
リストで指定されたプロキシ |
12 |
host8.abc.sesta.com |
p8 |
リストで指定されたプロキシ |
13 |
*.abc.sesta.com |
p9 |
リストで指定されたプロキシabc.sesta.com ドメインの host7 と host8 以外のすべてのホストについては、p9 がプロキシとして使用されます。 |
14 |
host6.florizon.com |
p10 |
エントリ 9 と同じエントリ。エントリ 9 は直接接続を指定するのに対し、このエントリはプロキシ p10 の使用を指定します。このような 2 つのエントリがある場合、プロキシ情報のあるエントリが有効なエントリと見なされます。もう 1 つのエントリは無視されます。 |
15 |
host9.sesta.com |
p11 |
リストで指定されたプロキシ |
16 |
siroe.com |
直接 |
siroe.com に対して指定されるプロキシがないため、直接接続が試みられます。 |
17 |
host12.siroe.com |
p12 |
リストで指定されたプロキシ |
18 |
host13.siroe.com |
p13 |
リストで指定されたプロキシ |
19 |
host14.siroe.com |
直接 |
host14 に対して指定されるプロキシがないため、直接接続が試みられます。 |
20 |
*.siroe.com |
p14 |
エントリ 23 の説明を参照 |
21 |
host15.siroe.com |
p15 |
リストで指定されたプロキシ |
22 |
host16.siroe.com |
直接 |
host16 または siroe.com に対して指定されるプロキシがないため、直接接続が試みられます。 |
23 |
*.siroe.com |
p16 |
エントリ 20 に類似していますが、指定されるプロキシが異なります。このような場合、ゲートウェイの正確な動作がわかりません。2 つのプロキシのいずれかが使用されます。 |
24 |
* |
p17 |
要求された URL に一致するエントリが存在しない場合、プロキシとして p17 が使用されます。 |
「ドメインとサブドメインのプロキシ」リストでは、プロキシエントリを「|」記号で区切らずに、個々のエントリをリスト内の各行に配置できます。たとえば、次のように表記されるエントリがあるとします。
sesta.com p1 | red p2 | * p3 |
この情報は次のように指定できます。
sesta.com p1 red.sesta.com p2 *.sesta.com p3 |
このようなリスト形式にすると、反復されたエントリやその他のあいまいなエントリを追跡しやすくなります。
リライタも、「ドメインとサブドメインのプロキシ」リストのエントリを使用します。リライタは、ドメインが「ドメインとサブドメインのプロキシ」リストのドメインに一致するすべての URL を書き換えます。
「ドメインとサブドメインのプロキシ」リストのエントリ * は、書き換えの対象と見なされません。たとえば、エントリ 24 は書き換えの対象になりません。
リライタについては、第 4 章「リライタの操作」を参照してください。
URL の最終ホストが完全修飾名になっていない場合、完全修飾名に到達するためにデフォルトのドメインおよびサブドメインが使用されます。
管理コンソールの「デフォルトのドメイン」フィールドに、次のエントリが設定されていると仮定します。
red.sesta.com |
「ドメインとサブドメインのプロキシ」リストには、対応するエントリが必要です。
前述した例では、sesta.com がデフォルトのドメイン、デフォルトのサブドメインは red です。
要求された URL が host1 の場合、このエントリはデフォルトのドメインとサブドメインを使用して host1.red.sesta.com として解決されます。「ドメインとサブドメインのプロキシ」リストに host1.red.sesta.com があるかどうかが確認されます。
「ドメインとサブドメインのプロキシ」リストの情報を無視するには、自動プロキシ設定機能を有効にします。
プロキシ自動設定 (PAC) ファイルを使用するときは、次の点に注意してください。
Portal Server、ゲートウェイ、ネットレット、およびプロキシレットは、Rhino ソフトウェアを使用して PAC ファイルを解析します。SUNWrhino パッケージは、Java Enterprise System アクセサリ CD からインストールできます。
このパッケージに含まれている js.jar ファイルは、/usr/share/lib ディレクトリに存在している必要があります。このディレクトリは、ゲートウェイおよび Portal Server マシンの webserver/appserver クラスパスに追加してください。このクラスパスに見つからなかった場合、Portal Server、ゲートウェイ、ネットレット、およびプロキシレットは PAC ファイルを解析できません。
ゲートウェイマシンの $JRE_HOME/lib/ext ディレクトリに js.jar が存在する必要があります。このファイルが存在しない場合、ゲートウェイは PAC ファイルを解析できません。
ゲートウェイは起動時に、ゲートウェイプロファイルの「自動プロキシ設定ファイルの位置」フィールドに指定されている場所から PAC ファイルを取得します。
ゲートウェイは、URLConnection API を使用してこの場所にアクセスします。ゲートウェイにアクセスするようにプロキシを設定しなければならないときは、プロキシを次のように設定します。
コマンド行で、次のファイルを編集します。
/etc/opt/SUNWportal/platform.conf.gateway-profile-name
次のエントリを追加します。
http.proxyHost= web-proxy-hostname
http.proxyPort= web-proxy-port
http.proxySet=true
指定のプロキシを使用するために、ゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway>
PAC ファイルの初期化に失敗した場合は、ゲートウェイは「ドメインとサブドメインのプロキシ」リストの情報を使用します。
PAC ファイルから空白文字列または「NULL」が返される場合、ゲートウェイはそのホストがイントラネットに属していないと判断します。これは、「ドメインとサブドメインのプロキシ」に含まれないホストの扱いと似ています。
ゲートウェイにホストへの直接接続を使用させたい場合は、「DIRECT」を返します。「DIRECT または NULL のいずれかが返される例」を参照してください。
複数のプロキシが指定されている場合、ゲートウェイは最初に返されるプロキシだけを使用します。ホストに指定されている複数のプロキシの間で、フェイルオーバーや負荷分散は行われません。
ゲートウェイは SOCKS プロキシを無視して直接接続を試み、ホストがイントラネットの一部であると解釈します。
イントラネットの一部に含まれないホストへのアクセスに使用するプロキシを指定するには、STARPROXY というプロキシタイプを使用します。このプロキシタイプは、PAC 形式のファイル拡張子で、ゲートウェイプロファイルの「ドメインとサブドメインのプロキシ」セクションに指定される * proxyHost:port エントリと似ています。「STARPROXY が返される例」を参照してください。
次の例は、「ドメインとサブドメインのプロキシ」リストに含まれる URL と、それに対応する PAC ファイルを示しています。
次のプロキシをドメインとサブドメインに使用する場合を考えます。
*intranet1.com proxy.intranet.com:8080
intranet2.com proxy.intranet1.com:8080
対応する PAC ファイルは次のようになります。
// Start of the PAC File function FindProxyForURL(url, host) { if (dnsDomainIs(host, ".intranet1.com")) { return "DIRECT"; } if (dnsDomainIs(host, ".intranet2.com")) { return "PROXY proxy.intranet1.com:8080"; } return "NULL"; } //End of the PAC File |
次のプロキシをドメインとサブドメインに使用する場合を考えます。
intranet1.com
intranet2.com.proxy.intranet1.com:8080
internetproxy.intranet1.com:80
対応する PAC ファイルは次のようになります。
// Start of the PAC File function FindProxyForURL(url, host) { if (dnsDomainIs(host, ".intranet1.com")) { return "DIRECT"; } if (dnsDomainIs(host, ".intranet2.com")) { return "PROXY proxy.intranet1.com:8080;" + "PROXY proxy1.intranet1.com:8080"; } return "STARPROXY internetproxy.intranet1.com:80"; } //End of the PAC File |
この場合、要求が .intranet2.com ドメイン内のホストに対するものであれば、ゲートウェイは proxy.intranet1.com:8080 にアクセスします。proxy.intranet1.com:8080 がダウンしている場合、要求は失敗します。ゲートウェイは、フェイルオーバーを行わず、proxy1.intranet1.com:8080 にアクセスします。
PAC ファイルの場所を指定するための形式は、その場所により次のようになります。
PAC ファイルが Web サーバーに常駐している場合、PAC URL は次のようになります。
http://hostname/pacfile_name .pac
PAC ファイルがローカルファイルの場合 (たとえば、c:\pacfile\sample.pac)、Java 1.4.1_x では PAC URL を次のように入力します。
file://c:/pacfile/sample.pac
PAC ファイルがローカルファイルの場合 (たとえば、c:\pacfile\sample.pac)、Java 1.4.2_x では PAC URL を次のように入力します。
file:///c:/pacfile/sample.pac
個別のセッションで Portal Server サービスを追加する場合は、次の操作を行います。
管理コンソールの「ゲートウェイ」 > 「コア」の下に Portal Server を一覧表示する。
「ゲートウェイ」 > 「セキュリティー」の下にある「非認証 URL」に Portal Server の URL を一覧表示する。
ネットレットパケットはゲートウェイで解読され、宛先サーバーに送られます。ただし、ゲートウェイはすべてのネットレット接続先ホストにアクセスする場合、非武装ゾーン (DMZ) とイントラネット間のファイアウォールを経由する必要があります。このように設定するには、ファイアウォールで多くのポートを開かなければなりません。ネットレットプロキシを使用することで、ファイアウォールで開かれるポートの数を最小化することができます。
ネットレットプロキシは、ゲートウェイを経由してクライアントからのセキュリティー保護されたトンネルをイントラネット内のネットレットプロキシまで拡張することで、ゲートウェイとイントラネット間のセキュリティーを補強します。プロキシを使用すると、ネットレットパケットがネットレットプロキシにより解読され、送信先に送られます。
セキュリティーのレイヤーを補強します。
配備サイズが大きな環境で、ゲートウェイから内部ファイアウォールに必要以上の IP アドレスおよびポートを使用しないようにします。
ゲートウェイと Portal Server 間で開かれるポートの数を 1 つに制限します。このポート数はインストール時に設定できます。
「ネットレットプロキシの使用」の「ネットレットプロキシをインストールした場合」に示すように、クライアントとゲートウェイ間のセキュリティー保護されたチャネルを Portal Server まで延長します。ネットレットプロキシはデータの暗号化によってセキュリティーを改善しますが、システムリソースの使用を増やす場合があります。ネットレットプロキシのインストールについては、『Sun Java System インストールガイド』を参照してください。
次の作業を実行できます。
Portal Server ノードまたは別のノードでネットレットプロキシをインストールします。
複数のネットレットプロキシをインストールし、それらを管理コンソールで単一のゲートウェイに対して設定します。これは負荷分散に役立ちます。
単一のマシンでネットレットプロキシの複数のインスタンスを設定します。
ゲートウェイの複数のインスタンスに対して、ネットレットプロキシの単一のインストールを設定します。
Web プロキシを通じたネットレットトンネリング
ネットレットプロキシをインストールした場合とインストールしない場合のゲートウェイと Portal Server の 3 つの実装例を示します。クライアント、2 つのファイアウォール、2 つのファイアウォールの間にあるゲートウェイ、Portal Server、およびネットレット宛先サーバーから構成されます。
最初の例では、ネットレットプロキシをインストールしていないゲートウェイと Portal Server を示しています。データの暗号化はクライアントとゲートウェイの間だけで行われます。ネットレット接続の要求があるたびに、2 番目のファイアウォールでポートが開かれます。
2 番目の例では、ゲートウェイと、ネットレットプロキシがインストールされている Portal Server を示しています。データの暗号化はクライアントから Portal Server までのすべての区間に拡張されています。すべてのネットレットがネットレットプロキシを通じてルーティングされているため、ネットレット要求に対して 2 番目のファイアウォールで開く必要があるのは 1 つのポートのみです。
3 番目の例では、ネットレットプロキシが別のノードにインストールされている Portal Server とゲートウェイを示しています。別のノードにネットレットプロキシをインストールすると、Portal Server ノードの負荷が減少します。この場合も、2 番目のファイアウォールで開く必要があるのは 2 つのポートのみです。1 つのポートは Portal Server への要求を処理し、もう 1 つのポートはネットレットの要求をネットレットプロキシサーバーにルーティングします。
ネットレットプロキシは、Portal Server 管理コンソールを使用して、ゲートウェイサービスから有効にします。
プロキシが何らかの理由で強制終了した場合に再起動するように、ネットレットプロキシを設定することができます。ネットレットプロキシを監視し、ネットレットプロキシが停止したときに再起動するように ウォッチドッグプロセスをスケジューリングできます。
ネットレットプロキシは手動で再起動することもできます。手順については、「ネットレットプロキシを再起動する」を参照してください。
ウォッチドッグがネットレットプロキシの状態を監視する間隔を設定することができます。この間隔は、デフォルトでは 60 秒に設定されています。この間隔を変更するには、crontab ファイルに次の行を追加します。
0-59 * * * * netlet-install-dir/bin/checkgw /var/opt/SUNWportal/.gw 5 > /dev/null 2>&1
ウオッチドッグを開始または停止するには、次のコマンドを実行します。./psadmin sra-watchdog -u amadmin -f <password-file> -t <type> on|off
リライタプロキシは、イントラネット上にインストールされます。ゲートウェイは、コンテンツを直接取得せずにすべての要求をリライタプロキシに送信し、リライタプロキシはコンテンツを取得してゲートウェイに返します。
リライタプロキシを使用する利点を次に示します
ゲートウェイとサーバー間にファイアウォールが存在する場合、ファイアウォールが開放する必要があるのは 2 つのポートのみです。1 つはゲートウェイとリライタプロキシの間のポート、もう 1 つはゲートウェイと Portal Server の間のポートです。
宛先サーバーが HTTPS をサポートせず、HTTP しかサポートしていなくても、ゲートウェイとインターネットの間の HTTP トラフィックはセキュリティー保護されます。
リライタプロキシを指定しない場合、いずれかのイントラネットコンピュータにアクセスしようとすると、ゲートウェイコンポーネントによりイントラネットコンピュータに直接つながります。
リライタプロキシをロードバランサとして使用する場合は、リライタの platform.conf.instance_name がロードバランサ URL をポイントしている必要があります。また、ロードバランサのホストを Portal Servers リストに指定してください。
ゲートウェイインスタンスごとに (Portal Server ノード上でなくてもかまわない) リライタプロキシの複数インスタンスがある場合は、platform.conf ファイルに、リライタプロキシに対して 1 つのポートエントリを指定するのではなく、host-name:port の形式でリライタプロキシごとに詳細を指定します。
リライタプロキシの新しいインスタンスを Portal Server ノードに作成するときは、rwpmultiinstance スクリプトを使用します。このスクリプトは、ゲートウェイプロファイルが作成されたあとで実行します。
「リライタプロキシインスタンスを作成する」を参照してください。
リライタプロキシを有効化するときは、Access Manager 管理コンソールの「SRA 設定」の下にある「ゲートウェイ」サービスを使用します。
プロキシが何らかの理由で強制終了した場合に、リライタプロキシが再起動するように設定することができます。リライタプロキシを監視し、リライタプロキシが強制終了したときに再起動するように ウォッチドッグプロセスをスケジューリングできます。
リライタプロキシは手動で再起動することもできます。
「リライタプロキシを再起動する」を参照してください。
ウォッチドッグがリライタプロキシの状態を監視する間隔を設定することができます。この間隔は、デフォルトでは 60 秒に設定されています。この間隔を変更するには、crontab ファイルに次の行を追加します。
0-59 * * * * rewriter-proxy-install-root /bin/checkgw /var/opt/SUNWportal/.gw 5 > /dev/null 2>&1
ウオッチドッグを開始または停止するには、次のコマンドを実行します。./psadmin sra-watchdog -u amadmin -f <password-file> -t <type> on|off
プロキシサーバーがインターネットのコンテンツをイントラネットに配信するのに対して、逆プロキシサーバーはイントラネットのコンテンツをインターネットに配信します。逆プロキシを配備するときに、負荷分散およびキャッシングが行われるように設定できます。
ゲートウェイの前にサードパーティーの逆プロキシがある配備の場合、応答は、ゲートウェイの URL ではなく逆プロキシの URL で書き換えられる必要があります。このためには、逆プロキシを有効化する必要があります。
「逆プロキシを有効化する」を参照してください。
ゲートウェイがいずれかの内部サーバーにクライアント要求を転送するときに、HTTP 要求に HTTP ヘッダーが追加されます。それらのヘッダーを使用して追加のクライアント情報を取得し、ゲートウェイの存在を検出することができます。
HTTP 要求ヘッダーを表示するには、platform.conf ファイル内のエントリを gateway.error=message に設定します。次に、サーブレット API から request.getHeader() を使用します。次の表は、HTTP ヘッダー内の情報を示しています。
表 2–3 HTTP ヘッダーの情報
認証連鎖することにより、通常の認証メカニズムより高いレベルのセキュリティーがもたらされます。ユーザーを複数の認証メカニズムで認証することができます。
ここでは、PDC (Personal Digital Certificate) 認証によってゲートウェイで認証連鎖を有効化する手順だけを説明します。PDC 認証を使用しない場合のゲートウェイでの認証連鎖については、『Access Manager 管理ガイド』を参照してください。
たとえば、PDC と Radius 認証モジュールを連鎖させると、ユーザーは標準のポータルデスクトップにアクセスするために 3 つのモジュールすべてについて認証が必要になります。
手順については、「既存の PDC インスタンスに認証モジュールを追加する」を参照してください。
PDC が有効になっていると、PDC が常に最初の認証モジュールとしてユーザーに提示されます。
ワイルドカード証明書は、ホストの完全修飾 DNS 名にワイルドカード文字を含む単一の証明書を受け付けます。
この証明書によって、同じドメイン内の複数のホストがセキュリティーで保護されます。たとえば、*.domain.com の証明書は abc.domain.com と abc1.domain.com に使用できます。この証明書は domain.com ドメイン内のすべてのホストに有効です。
ゲートウェイコンポーネントは Web ブラウザのみを使用して任意の場所からバックエンド企業データへのセキュリティー保護されたアクセスを提供するため、クライアントが情報をローカルにキャッシュする必要はありません。
ゲートウェイを通じてリダイレクトされるページのキャッシングを無効にするには、そのゲートウェイの platform.conf ファイルの属性を修正します。
このオプションを無効にすると、ゲートウェイのパフォーマンスに影響する場合があります。標準のポータルデスクトップが再表示されるたびに、ブラウザがすでにキャッシュしているイメージを含めページが参照するすべてのデータをゲートウェイで取り出す必要があるためです。ただし、この機能を有効にしても、リモートアクセスされたセキュリティー保護されたコンテンツの足跡は、クライアントサイトでキャッシュとして残りません。この要因がパフォーマンスへの影響よりも重要な意味を持つのは、企業 IT の管理下にないインターネットカフェやその類のリモートロケーションから企業ネットワークにアクセスしている場合です。
「ブラウザキャッシングを無効にする」を参照してください。
ここでは、編集可能な各種のゲートウェイプロパティーファイルについて説明します。
このファイルは、次の目的のために編集できます。
ゲートウェイの実行時に表示されるエラーメッセージをカスタマイズします。
HTML-CharSets=ISO-8859-1 は、このファイルの作成に使用された文字セットを示しています。
中カッコで囲まれた番号 ({0} など) は、実行時に表示される値です。この番号に対応するラベルを変更できます。また、必要に応じてラベルを並べ替えることができます。番号とメッセージは関連付けられるため、表示されるメッセージにラベルが対応していることを確認してください。
ログ情報をカスタマイズします。
デフォルトでは、srapGateway.properties ファイルは portal-server-install-root/SUNWportal/locale ディレクトリ内にあります。ゲートウェイマシンに表示されるすべてのメッセージは、メッセージの言語にかかわりなく、このファイルに格納されます。
クライアントの標準のポータルデスクトップに表示されるメッセージの言語を変更するには、このファイルを portal-server-install-root/SUNWportal/srapGateway_<locale>.properties などの各ロケール用ファイルを変更します。
このファイルは、次の目的のために編集できます。
管理コンソールのゲートウェイサービスのボタンとして表示されるラベルをカスタマイズします。
ゲートウェイを設定しているときに表示される状況メッセージとエラーメッセージをカスタマイズします。
Portal Server と Access Manager サーバーの 2 つのインスタンスが同じ LDAP ディレクトリを共有している場合、それ以後のすべての Portal Server インスタンス、Access Manager インスタンス、およびゲートウェイインスタンスで LDAP ディレクトリが共有されます。「LDAP ディレクトリを共有する」を参照してください。
この章では、Web ページを解析せずにゲートウェイ経由でイントラネット Web ページにアクセスできるようにするプロキシレットについて説明します。
プロキシレットとは、それ自体でクライアントマシンのプロキシサーバーを設定する Java アプレットです。プロキシレットは、プロキシ設定がローカルのプロキシサーバー (プロキシレット) をポイントするように、クライアントマシンのプロキシ自動設定 (PAC) ファイルを読み取り、変更します。
プロキシレットはゲートウェイからのトランスポートモードを継承します。ゲートウェイが SSL に基づいて動作するように設定されている場合には、クライアントマシンとゲートウェイまたは宛先サーバーの間でチャネルのセキュリティーが確保されます。暗号化する場合、プロキシレットは、クライアントの JVM が 1.4 以降の場合または必要な jar ファイルがクライアントマシン上にある場合に JSSE API を使用します。それ以外の場合には、KSSL API が使用されます。復号化は、クライアントマシン上で行われます。
ゲートウェイにリダイレクトされる URL のドメインとサブドメインは、ゲートウェイプロファイルに指定されています。ゲートウェイプロファイルに指定されていないドメインが URL に含まれる場合、その要求はインターネットにリダイレクトされます。特定の URL ドメインがゲートウェイプロファイルに指定されている場合、プロキシレットはクライアントのプロキシ設定を、そのゲートウェイをポイントするように再設定します。
ゲートウェイで PDC (Personal Digital Certificate) が有効の場合、プロキシレットはクライアント側の認証をサポートします。PDC が有効化どうかを確認する方法については、「クライアント情報の取得」を参照してください。
プロキシレットは、クライアントの IP アドレスまたはプロキシのホスト名とポートが指定されている Portal Server 管理コンソールから有効にします。プロキシレットが有効になると、クライアントマシンが次の点を満たしているかどうかが確認されます。
ブラウザのアクセス権が適切かどうか
ブラウザが IE 6.0 SP2、IE 7、Firefox 2.0 であるかどうか
マシンまたはデバイスがサーバーアプリケーションを実行できるかどうか
これらの要件をすべて満たしている場合は、アプレットがダウンロードされ、クライアントマシン上で起動されます。クライアントに JRE 1.4.2 以降がインストールされていない場合、ユーザーがインターネット接続と管理者権限の両方を持っていれば、プロキシレットによって JRE が自動的にダウンロードされます。
プロキシレットが使用される場合、PAC (Proxy Auto Configuration) ファイルまたはプロキシ設定リストからプロキシ設定が取得されます。
プロキシレットアプレットを使用する場合は、ブラウザのポップアップブロッカを無効にするようにユーザーに通知してください。
プロキシレットによる HTTPS のサポートは、次のようになっています。
復号化は、クライアントマシンで行われます。
SSL モードで稼働している場合、接続先サーバーにアクセスできます。
クライアント証明書は、接続先サーバーに直接提示されます。
ゲートウェイでは、基本認証のシングルサインオン (SSO) はサポートされていません (ゲートウェイは SSO 情報を HTTP ヘッダーに挿入できない)。
URL ベースのアクセス制御はサポートされていないため、ホストベースのアクセス制御のみが可能です。
ゲートウェイの前にある外部アクセラレータと外部逆プロキシは、現時点ではサポートされていません。
このサポートは、Portal Server が HTTPS を使用する場合のプロキシレットに対するものではありません。
リライタと異なり、プロキシレットはインストール後の変更をほとんど、またはまったく必要としません。Microsoft Exchange Server などのサードパーティーソフトウェアとの統合も簡単に行うことができます。プロキシレットは Web コンテンツを扱わないので、ゲートウェイのパフォーマンスも向上します。プロキシレットはコンテンツまたはデータを変更しないので、ユーザーは tar および gzip ファイルなど任意のコンテンツをダウンロードできます。
プロキシレットの有効化と設定については、第 13 章「プロキシレットの設定」を参照してください。
プロキシレットを実行する適切な Java 仮想マシン (JVM) がない場合、ブラウザは Sun の Web サイトに接続して Java Runtime Environment (JRE) をダウンロードします。ユーザーのブラウザ設定に正しい値が設定されていない場合、またはユーザーがインターネットにアクセスしないで直接プロキシ設定を使用している場合、プロキシレットはダウンロードできません。
Secure Remote Access のリライタコンポーネントは、Web ページを解析して、ユーザーがゲートウェイ経由でイントラネット Web ページにアクセスできるようにします。
この章の内容は次のとおりです。
Secure Remote Access のリライタコンポーネントを使用すると、エンドユーザーは Web ページの URI (Uniform Resource Identifier) 参照をゲートウェイをポイントするように変更することによって、イントラネットをブラウズすることができます。URI は、登録されている名前空間にネームをカプセル化し、それに名前空間のラベルを付ける方法を定義します。もっとも一般的な URI は URL (Uniform Resource Locator) です。リライタは HTTP または HTTPS だけをサポートします。このサポートは、プロトコルでの大文字の使用に影響されません。リライタは、相対 URL の一部として使用される場合にだけバックスラッシュをサポートします。
http://abc.sesta.com\\index.html は書き換えられます。
書き換えられない URL は http:\\\\abc.sesta.com、http:/abc.com などです。
HTTP の規格では、HTTP ヘッダーまたは HTML メタタグに Web ページの文字セットを指定する必要があります。ただし、この情報が指定されていないこともあります。文字セットがわからない場合には、データのエンコーディングが設定されず、作成者が意図したようにデータが表示されません。
文字セットを検出するには、Java Enterprise System アクセサリ CD から SUNWjchdt パッケージをインストールします。この製品は、インストールするとリライタによって検出され、必要に応じて使用されます。
この製品を使用すると、パフォーマンスに影響することがあるため、必要な場合にだけインストールしてください。インストール、設定、および使用法については、jcharset_readme.txt を参照してください。
ユーザーがゲートウェイを通じてイントラネット Web ページにアクセスしようとするときに、Web ページはリライタによって使用可能となります。リライタは、URL スクレーパーとゲートウェイによって使用されます。
URL スクレーパープロバイダは、設定されている URI からコンテンツを取得します。それらの URI をブラウザに送信する前に、すべての相対 URI を絶対 URI に展開します。
たとえば、ユーザーが次のサイトにアクセスするとします。
<a href="../mypage.html">
リライタはこれを次のように変換します。
<a href="http://yahoo.com/mypage.html">
http://yahoo.com/test/ はページのベース URL です。
URL スクレーパープロバイダの詳細については、『Sun Java System Portal Server 管理ガイド』を参照してください。
ゲートウェイは、インターネットポータルからコンテンツを取得します。そのコンテンツをブラウザに送信する前に、既存の URI の前にゲートウェイ URI プレフィックスを追加します。これにより、そのブラウザからの以後の URI 要求はゲートウェイに向けられます。
たとえば、インターネット上のマシンにある次の HTML ページにユーザーがアクセスするとします。
<a href="http://mymachine.intranet.com/mypage.html>"
リライタは、次のようにゲートウェイを参照するプレフィックスを URL に追加します。
<a href="https://gateway.company.com/http://mymachine.intranet.com/ mypage.html>"
ユーザーがこのアンカーに関連するリンクをクリックすると、ブラウザはゲートウェイにアクセスします。ゲートウェイは、mymachine.intranet.com から mypage.html のコンテンツを取得します。
ゲートウェイはいくつかのルールを使用して、取得された Web ページの書き換える要素を判断します。
ルールセットの定義の詳細については、『Portal Server 管理ガイド』を参照してください。新しいルールセットを作成したら、必要なルールを定義する必要があります。
この節の内容は、次のとおりです。
ルールセット DTD の例を示します。
<?xml version="1.0" encoding="UTF-8"?> <!-- The following constraints are not represented in DTD, but taken care of programmatically 1. In a Rule, All Mandatory attributes cannot be "*". 2. Only one instance of the below elements is allowed, but in any order. 1)HTMLRules 2)JSRules 3)XMLRules 3. ID should always be in lower case. --> <!ENTITY % eURL ’URL’> <!ENTITY % eEXPRESSION ’EXPRESSION’> <!ENTITY % eDHTML ’DHTML’> <!ENTITY % eDJS ’DJS’> <!ENTITY % eSYSTEM ’SYSTEM’> <!ENTITY % ruleSetElements ’(HTMLRules | JSRules | XMLRules)?’> <!ENTITY % htmlElements ’(Form | Applet | Attribute)*’> <!ENTITY % jsElements ’(Variable | Function)*’> <!ENTITY % xmlElements ’(Attribute | TagText)*’> <!ELEMENT RuleSet (%ruleSetElements;,%ruleSetElements;,%ruleSetElements;)> <!ATTLIST RuleSet id ID #REQUIRED extends CDATA "none" > <!-- Rules for identifying rules in HTML content --> <!ELEMENT HTMLRules (%htmlElements;)> <!ELEMENT Form EMPTY> <!ATTLIST Form name CDATA #REQUIRED field CDATA #REQUIRED valuePatterns CDATA "" source CDATA "*" > <!ELEMENT Applet EMPTY> <!ATTLIST Applet code CDATA #REQUIRED param CDATA "*" valuePatterns CDATA "" source CDATA "*" > <!-- Rules for identifying rules in JS content --> <!ELEMENT JSRules (%jsElements;)> <!ELEMENT Variable EMPTY> <!ATTLIST Variable name CDATA #REQUIRED type (%eURL; | %eEXPRESSION; | %eDHTML; | %eDJS; | %eSYSTEM;) "EXPRESSION" source CDATA "*" > <!ELEMENT Function EMPTY> <!ATTLIST Function name CDATA #REQUIRED paramPatterns CDATA #REQUIRED type (%eURL; | %eEXPRESSION; | %eDHTML; | %eDJS;) "EXPRESSION" source CDATA "*" > <!-- Rules for identifying rules in XML content --> <!ELEMENT XMLRules (%xmlElements;)> <!ELEMENT TagText EMPTY> <!ATTLIST TagText tag CDATA #REQUIRED attributePatterns CDATA "" source CDATA "*" > <!ELEMENT Attribute EMPTY> <!ATTLIST Attribute name CDATA #REQUIRED tag CDATA "*" valuePatterns CDATA "" type (%eURL; | %eDHTML; | %eDJS; ) "URL" source CDATA "*" >
ルールの値の一部としてアスタリスク (*) を使用できます。ただし、必須属性の値を * だけにすることはできません。このようなルールは無視されますが、メッセージは RuleSetInfo ログファイルに記録されます。このログファイルについては、「デバッグファイル名」を参照してください。
ここでは、ルールセットの例を示します。リライタがこれらのルールをどのように解釈するかについては、135 ページの「ケーススタディー」を参照してください。
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- Rules for integrating a mail client with the gateway. --> <!DOCTYPE RuleSet SYSTEM "jar://rewriter.jar/resources/RuleSet.dtd"> <RuleSet type="GROUPED" id="owa"> <HTMLRules> <Attribute name="action" /> <Attribute name="background" /> <Attribute name="codebase" /> <Attribute name="href" /> <Attribute name="src" /> <Attribute name="lowsrc" /> <Attribute name="imagePath" /> <Attribute name="viewClass" /> <Attribute name="emptyURL" /> <Attribute name="draftsURL" /> <Attribute name="folderURL" /> <Attribute name="prevMonthImage" /> <Attribute name="nextMonthImage" /> <Attribute name="style" /> <Attribute name="content" tag="meta" /> </HTMLRules> <JSRules> <!-- Rules for Rewriting JavaScript variables in URLs --> <Variable name="URL"> _fr.location </Variable> <Variable name="URL"> g_szUserBase </Variable> <Variable name="URL"> g_szPublicFolderUrl </Variable> <Variable name="URL"> g_szExWebDir </Variable> <Variable name="URL"> g_szViewClassURL </Variable> <Variable name="URL"> g_szVirtualRoot </Variable> <Variable name="URL"> g_szBaseURL </Variable> <Variable name="URL"> g_szURL </Variable> <Function name="EXPRESSION" name="NavigateTo" paramPatterns="y"/> </JSRules> <XMLRules> <Attribute name="xmlns"/> <Attribute name="href" tag="a"/> <TagText tag="baseroot" /> <TagText tag="prop2" /> <TagText tag="prop1" /> <TagText tag="img" /> <TagText tag="xsl:attribute" attributePatterns="name=src" /> </XMLRules> </RuleSet>
次に、ルールを記述するための一般的な手順を示します。
コンテンツの書き換えが必要な HTML ページを含むディレクトリを特定します。
これらのディレクトリで、書き換えが必要なページを特定します。
各ページで書き換えが必要な URL を特定します。「http」および「/」を検索すると、ほとんどの URL を簡単に見つけることができます。
URL のコンテンツタイプ (HTML、JavaScript、または XML) を識別します。
これらの各 URL の書き換えに必要なルールを記述するには、Access Manager 管理コンソールの「Portal Server 設定」の「リライタ」で必要なルールセットを編集します。
これらのルールを結合し、そのドメインのルールセットにまとめます。
ルールセットを作成する場合は、次の点に注意してください。
特定のホストの優先順位は、URI の最長一致に基づいて決定されます。次のルールセットを例に示します。
mail1.central.abc.com|iplanet_mail_ruleset *.sfbay.abc.com|sfbay_ruleset *.abc.com|generic_ruleset
最長一致を含む sfbay_ruleset が使用されます。
ルールセットのルールは、ルールが特定の文と一致するまでページの各文に順に適用されます。
ルールを記述する場合、ルールの順序に注意してください。ルールはルールセットに現れる順番で、ページ内の文に適用されます。特定のルール、および「*」を含む一般的なルールを適用する場合は、特定のルールを最初に定義し、次に一般的なルールを定義してください。この方法で定義しないと、特定のルールを適用する前に、一般的なルールがすべての文に適用されてしまいます。
すべてのルールは <RuleSet> </RuleSet> タグで囲む必要があります。
ルールセットの <HTMLRules> </HTMLRules> セクションに、HTML コンテンツの書き換えに必要なすべてのルールを指定します。
ルールセットの <JSRules> </JSRules> セクションに、JavaScript コンテンツの書き換えに必要なすべてのルールを指定します。
ルールセットの <XMLRules> </XMLRules> セクションに、XML コンテンツの書き換えに必要なすべてのルールを指定します。
イントラネットページで、書き換えの必要のある URL を特定し、ルールセットの適切なセクション (HTML、JSRules、または XMLRules) に必要なルールを指定します。
必要なドメインにルールセットを割り当てます。
ゲートウェイを再起動して変更を適用します。
gateway-install-root/SUNWportal/bin/gateway -n gateway-profile-name start
ルールセットのルート要素には、次の 2 つの属性があります。
RuleSetName: たとえば、default_ruleset などがあります。この名前は、URI マッピングのためにルールセットで参照されます。
Extends: ルールセットの継承機能を参照する属性。この値は、ルールセットの取得元となるルールセットをポイントします。
新しい独立したルールセットがその他のルールセットに依存しないことを指定するには、none という値を指定します。ルールセットが別のルールセットに依存することを指定するには、RuleSetName を指定します。
リライタは、再帰機能を使用して、一致する文字列パターンの最後まで同じパターンを検索します。
たとえば、リライタが次の文字列を解析する場合を考えます。
<a href="src=abc.jpg,src=bcd.jpg,src=xyz.jpg>
次のルールがあるとします。
<Attribute name="href" valuePatterns="*src=**"/>
このルールは、最初に見つかったパターンだけを次のように書き換えます。
<a href="src=http://jane.sun.com/abc.jpg>
次のように再帰オプションを使用した場合を考えます。
<Attribute name="href" valuePatterns="REC:*src=**"/>;
リライタは再帰機能を使用して、一致する文字列パターンの最後まで同じパターンを検索します。この出力は次のようになります。
<a href="src=http://jane.sun.com/abc.jpg,src=http://jane.sun.com/bcd.jpg,src=http://jane.sun.com/xyz.jpg>
ルールは、次の言語に基づきます。
HTML
JavaScript
XML
Web ページの HTML コンテンツは、さらに属性、フォーム、およびアプレットに分類されます。これに従って、HTML コンテンツのルールは次のように分類されます。
このルールは値を書き換える必要のあるタグの属性を特定します。属性値には、簡易 URL、JavaScript、DHTML コンテンツがあります。次に例を示します。
画像の場所を示す「img」タグの src 属性 (簡易 URL)
リンクのクリックを処理する href 属性の onClick 属性 (DJS)
この節では、次の項目について説明します。
<Attribute name="attributeName" [tag="*" valuePatterns="" source="*" type="URL|DHTML|DJS"]/>
各表記の意味は次のとおりです。
attributeName は属性名です (必須)。
tag は、この属性が属するタグです (省略可能、デフォルト * は任意のタグを意味する)。
valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。
source は、この属性が定義されているページの URI を指定します (省略可能、デフォルト * は任意のページを意味する)。
type は関数のタイプを指定します (省略可能)。これには次の値があります。
URL : 簡易 URL (デフォルト値)
DHMTL : DHTML コンテンツ。この種類のコンテンツは、標準の HTML コンテンツに見られ、Microsoft の HTC 形式のファイルで使用されます。
DJS : JavaScript コンテンツ。onClick や onMouseover など、すべての HTML イベントハンドラには、HTML 属性に JavaScript が組み込まれています。
ページのベース URL が次の URL であると仮定します。
http://mymachine.intranet.com/mypage.html
ページコンテンツ:
<a href="http://mymachine.intranet.com/mypage.html">
ルール
<Attribute name="href"/> または <Attribute name="href" tag="a"/>
出力
<a href=gateway-URL/http://mymachine.intranet.com/myhome.html>
説明
書き換えられる URL はすでに絶対 URL であるため、ゲートウェイ URL だけがこの URL にプレフィックスとして追加されます。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/focus.html
ページコンテンツ:
<Form>
<input TYPE=TEXT SIZE=20 value=focus onClick="Check(\q/focus.html\q,\qfocus\q);return;">
</Form>
ルール
<Attribute name="onClick" type="DJS"/> <Function type="URL" name="Check" paramPatterns="y,"/>
出力
<Form>
<INPUT TYPE=TEXT SIZE=20 value=focus onClick="Check(\q gateway-URL /http://abc.sesta.com/focus.html\q,\qfocus\q);return;">
</Form>
説明
指定されたページコンテンツを書き換えるには、2 つのルールが必要です。最初のルールは onClick JavaScript トークンを特定します。2 番目のルールは、書き換えが必要な check 関数のパラメータを特定します。この場合、paramPatterns に値 y が指定されているため、最初のパラメータだけが書き換えられます。
ゲートウェイ URL と JavaScript トークンが表示されるベース URL が、必要なパラメータの前に指定されます。
ユーザーが参照する HTML ページにはフォームが含まれていることがあります。一部のフォーム要素は、値として URL をとることがあります。
この節は、次の項目から構成されています。
<Form name="form1" field="visit" [valuePatterns="" source="*"]/>
各表記の意味は次のとおりです。
name はフォーム名です (必須)。
field は値を書き換える必要があるフォームのフィールドです (必須)。
valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。
source は、このフォーム定義が存在するページの URL です (省略可能、デフォルト * は任意のページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://test.siroe.com/testcases/html/form.html
ページコンテンツ
ページ URI が form.html で、サーバーの root ディレクトリに格納されていると仮定します。
<form name=form1 method=POST action= "http://test.siroe.com/testcases/html/form.html"> <input type=hidden name=abc1 value="0|1234|/test.html"> </form>
form1 の一部である abc1 という隠しフィールドの値に含まれる /text.html を書き換えるとします。この場合、次のルールが必要です。
ルール
<Form source="*/form.html" name="form1" field="abc1" valuePatterns="0|1234|"/> <Attribute name="action"/>
出力
<FORM name="form1" method="POST" action="gateway-URL/ http://test.siroe.com/testcases/html/form.html"> <input type=hidden name=abc1 value="0|1234|gateway-URL/ http://test.siroe.com/test.html"> </FORM>
説明
action タグは定義済みのいくつかの HTML 属性ルールを使用して書き換えられます。
入力タグ属性値の value は、出力に示されるように書き換えられます。指定された valuePatterns が検索され、一致した valuePatterns に続くすべてのコンテンツは、先頭にゲートウェイ URL とページのベース URL を追加する方法で書き換えられます。「ルールでのパターンマッチングの使用」を参照してください。
単一の Web ページに複数のアプレットが含まれていたり、各アプレットに多くのパラメータが指定されていることがあります。リライタは、ルールに指定されている値とアプレットの HTML 定義を一致させ、アプレットのパラメータ定義の一部として含まれる URL の値を変更します。この置換はサーバーで実行され、ユーザーが特定の Web ページを参照しているときには行われません。このルールは、HTML コンテンツのアプレットタグとオブジェクトタグの両方のパラメータを識別し、それを書き換えます。
この節は、次の項目から構成されています。
<Applet code="ApplicationClassName/ObjectID " param="parametername" [valuePatterns="" source="*"] />
各表記の意味は次のとおりです。
code はアプレットクラスまたはオブジェクトクラスの名前です (必須)。
param は値を書き換える必要のあるパラメータの名前です (必須)。
valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。
source は、アプレット定義が存在するページの URL です (省略可能、デフォルト * は任意のページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.siroe.com/casestudy/test/HTML/applet/rule1.html
ページコンテンツ:
<applet codebase="appletcode" code=" RewriteURLinApplet.class" archive="/test.jar"> <param name=Test1 value="/index.html"> </applet>
ルール
<Applet source="*/rule1.html" code= "RewriteURLin*.class" param="Test*"/>
出力
<APPLET codebase="gateway-URL /http://abc.siroe.com/casestudy/test/HTML/ applet/appletcode" code="RewriteURLinApplet.class" archive="/test.jar"><param name="Test1" value=" gateway-URL/http: //abc.siroe.com/index.html"> </APPLET>
説明
default_gateway_ruleset に <Attribute name="codebase"/> が定義されているため、codebase attribute は書き換えられます。
名前が Test で始まるすべてのパラメータが書き換えられます。アプレットコードが表示されるページのベース URL、およびゲートウェイ URL が、param タグの value 属性の値の前に追加されます。
valuePatterns フィールドを使用してパターンマッチングを実行し、書き換えが必要な文の特定部分を識別することができます。
ルールの一部として valuePatterns を指定すると、一致したパターンに続くすべてのコンテンツが書き換えられます。
次のフォーム例のルールを考えます。
<Form source="*/source.html " name="form1" field="visit " [valuePatterns="0|1234|"]/>
各表記の意味は次のとおりです。
source は、フォームが表示される HTML ページの URL です。
name はフォーム名です。
field は値を書き換える必要があるフォームのフィールドです。
valuePatterns は、書き換えが必要な部分文字列を示します。valuePatterns のあとに表示されるすべてのコンテンツは書き換えられます (省略可能、デフォルト "" は値全体の書き換えが必要であることを示す)。
\ (円記号) でエスケープすることにより、特殊文字を指定できます。次に例を示します。
<Form source="*/source.html " name="form1" field=" visit" [valuePatterns="0|1234| \\;original text|changed text"]/>
ワイルドカードのアスタリスク (*) を使用して、書き換えのパターンマッチングを実行できます。
valuePatterns フィールドに * だけを指定することはできません。* はすべてのテキストとの一致を示すため、valuePattern に続くテキストがなくなります。したがって、リライタが書き換えるテキストもなくなります。* は *abc のように、ほかの文字列と組み合わせて使用する必要があります。この場合、*abc に続くすべてのコンテンツが書き換えられます。
アスタリスク (*) はルールのどのフィールドでも、ワイルドカードとして使用できます。ただし、ルールのすべてのフィールドに * を使用することはできません。すべてのフィールドに * が含まれている場合、ルールは無視されます。エラーメッセージは表示されません。
* や ** は、セミコロンやコンマなどの区切り文字と一緒に使用できます。区切り文字は、元の文に含まれる複数のフィールドを区切ります。1 個のアスタリスク (*) は書き換えられないフィールドと一致し、2 個のアスタリスク (**) は書き換えが必要なフィールドと一致します。
「valuePatterns でのワイルドカードの使用」は、* ワイルドカードの使用例を示しています。
表 4–1 * ワイルドカードの使用例
URL |
valuePatterns |
説明 |
---|---|---|
url1, url2, url3, url4 |
valuePatterns = "**, *, **, *" |
** が書き換えられる部分を表すため、url1 と url3 が書き換えられます。 |
XYZABChttp://host1.sesta.com/dir1.html |
valuePatterns = "*ABC" |
http://host1.sesta.com/dir1.html の部分だけが書き換えられます。*ABC のあとのすべてを書き換える必要があります。 |
"0|dir1|dir2|dir3|dir4|test|url1 |
valuePatterns = "*|*|**|*|**|*|" |
dir2、dir4、および url1 が書き換えられます。書き換えが必要な最後のフィールドは、** を使用して指定する必要はありません。 |
JavaScript はさまざまな場所に URL を含んでいます。リライタは JavaScript を直接解析できないため、URL 部分を特定できません。JavaScript プロセッサで URL を識別、解釈できるようにするために、特別なルールセットを記述する必要があります。
URL を含む JavaScript 要素は次のように分類されます。
<Variable name="variableName" [type="URL|EXPRESSION|DHTML|DJS|SYSTEM" source="*"]>
JavaScript の変数は、その値の種類に応じてさらに次の 5 つのカテゴリに分類されます。
この変数の値は、URL として扱うことができる単純文字列です。
この節は、次の項目から構成されています。
<Variable name="variableName" type="URL" [source="*"]>
各表記の意味は次のとおりです。
variableName は変数名です。variableName の値が書き換えられます (必須)。
type は URL 変数です (必須、値は URL でなければならない)。
source は、この JavaScript 変数が含まれるページの URI です (省略可能、デフォルト * は任意のページを意味する)。
ベース URL が次の URL であると仮定します。
http://abc.siroe.com/tmp/page.html
ページコンテンツ
<script LANGUAGE="Javascript"> <!-- //URL Variables var imgsrc1="/tmp/tmp.jpg"; var imgsrc2="http://srap.sesta.com/tmp/tmp.jpg"; var imgsrc3=imgsrc2; //--> </SCRIPT>
ルール
<Variable name="imgsrc*" type="URL"/>
出力
<script LANGUAGE="Javascript"> <!-- //URL Variables var imgsrc="gateway-URL/http://abc.siroe.com/tmp/tmp.jpg"; var imgsrc="gateway-URL/http://srap.sesta.com/tmp/tmp.jpg"; var imgsrc3=imgsrc2; //--> </SCRIPT>
説明
タイプが URL で、名前が imgsrc から始まるすべての変数が書き換えられます。出力の最初の行では、ゲートウェイ URL と変数が表示されるページのベース URL が先頭に指定されます。2 行目にはすでに絶対パスが指定されているため、ゲートウェイ URL のみがプレフィックスとして追加されます。3 番目の変数 imagsrc2 は、値が文字列ではなく別の JavaScript 値であるため書き換えられません。
EXPRESSION 変数の右側には式が指定されます。この式の結果は URL です。リライタは、このような式をサーバーで評価できないため、HTML ページに JavaScript 関数 (psSRAPRewriter_convert_expression) を追加します。この関数はパラメータとして式をとり、クライアントブラウザで要求される URL に対して式を評価します。
文に含まれる URL が単一の URL であるか EXPRESSION URL であるかが明らかでないときは、どちらの場合にも適用できる EXPRESSION ルールを使用してください。
この節は、次の項目から構成されています。
<Variable name="variableName" [type="EXPRESSION" source="*"]/>
各表記の意味は次のとおりです。
variableName は、値として式を持つ JavaScript 変数の名前です (必須)。
type は JavaScript 変数のタイプです (省略可能、デフォルト値は EXPRESSION)。
source はページの URI です (省略可能、デフォルト * は任意のソースを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.siroe.com/dir1/dir2/page.html
ページコンテンツ
<script LANGUAGE="Javascript"> <!-- //Expression variables var expvar= getURIPreFix() + "../../images/graphics"+".gif"; document.write("<A HREF="+expvar+">Link to XYZ content</A><P>") var expvar="../../images/graphics"+".gif"; //--> </SCRIPT>
ルール
<Variable name="expvar" type="EXPRESSION"/> または <Variable name="expvar"/>
出力
var expvar=psSRAPRewriter_convert_expression(getURIPreFix() + "../../images/graphics"+".gif");document.write("<a href="+expvar+">> Link to XYZ content</A><P>")var expvar="gateway-URL/http://abc.siroe.com/images/graphics"+".gif";
説明
関数 psSRAPRewriter_convert_expression が、式変数 expvar の最初の行の右側の部分に先行して指定されます。この関数は、実行時に式を処理し、コンテンツを書き換えます。3 行目では、値が簡易 URL に書き換えられます。
これは HTML コンテンツを含む JavaScript 変数です。
この節は、次の項目から構成されています。
<Variable name="variableName" type="DHTML" [source="*"]/>
各表記の意味は次のとおりです。
variableName は DHTML コンテンツを持つ JavaScript 変数の名前です (必須)。
type は変数のタイプです (必須、値は DHTML である必要がある)。
source はページの URL です (省略可能、デフォルト * は任意のページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/graphics/set1/ graphics/jsscript/JSVAR/page.html
ページコンテンツ
<script LANGUAGE="Javascript"> <!-- //DHTML Var var dhtmlVar="<a href=../../images/test.html>" var dhtmlVar="<a href=/images/test.html>" var dhtmlVar="<a href=images/test.html>" //--> </SCRIPT>
ルール
<Variable name="dhtmlVar" type="DHTML"/> <Attribute name="href"/> または <Attribute name="href" tag="a"/>
出力
<script LANGUAGE="Javascript"> <!-- //DHTML Var var dhtmlVar="<a href=gateway-URL /http://abc.sesta.com/graphics/ set1/graphics/images/test.html>" var dhtmlVar="<a href=gateway-URL/ http ://abc.sesta.com/images/test.html>" var dhtmlVar="<a href=gateway-URL/ http://abc.sesta.com/graphics/set1/ graphics/jscript/JSVAR/images/test.html>" //--></SCRIPT>
説明
JavaScript パーサーは dhtmlVar の値を HTML コンテンツとして読み取り、HTML パーサー経由でそのコンテンツを送信します。HTML パーサーは HTML ルールを適用するため、href 属性ルールとの一致によって URL が書き換えられます。
これは JavaScript コンテンツを含む JavaScript 変数です。
この節は、次の項目から構成されています。
<Variable name="variableName" type="DJS" [source="*"]/>
各表記の意味は次のとおりです。
variable は JavaScript を値として持つ JavaScript 変数の名前です。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/dir1/dir2/dir3/jscript/dir4/page.html
ページコンテンツ
//DJS Var var dJSVar="var dJSimgsrc=\q/tmp/tmp.jpg\q;" var dJSVar="var dJSimgsrc=\q../tmp/tmp.jpg\q;" var dJSVar="var dJSimgsrc= \qhttp://abc.sesta.com/tmp/tmp.jpg\q;"
ルール
<Variable name="DJS">dJSVar/> <Variable name="URL">dJSimgsrc/>
出力
//DJS Var - need 2 rules var dJSVar="var dJSimgsrc=\qgateway-URL /http://abc.sesta.com/tmp/tmp.jpg\q;"var dJSVar="var dJSimgsrc=\q gateway-URL/http ://abc.sesta.com/dir1/dir2/dir3/jscript/tmp/tmp.jpg\q;" var dJSVar="var dJSimgsrc=\qgateway-URL/ http://abc.sesta.com/tmp/tmp.jpg\q;"
説明
ここでは、2 つのルールが必要です。最初のルールはダイナミック JavaScript 変数 dJSVar を検索します。この変数の値は、同じくタイプが URL の JavaScript になります。次に 2 番目のルールが適用され、この JavaScript 変数の値が書き換えられます。
これらは、使用によって宣言されない変数であり、サポートは限定されます。これらの変数は JavaScript 標準の一部として利用可能です。たとえば、window.location.pathname などがあります。
この節は、次の項目から構成されています。
<Variable name="variableName" type="SYSTEM" [source="*"]/>
各表記の意味は次のとおりです。
variableName は、JavaScript のシステム変数です (必須)。値は document.URL、document.domain、location、doument.location、location.pathname、location.href、location.protocol、location.hostname、location.host、および location.port のいずれかのパターンと一致する必要があります。これは、すべて generic_ruleset に含まれます。これらのシステム var ルールを変更しないでください。
type には、システムタイプの値を指定します (必須、値は DJS)。
source はそのページの URL です (省略可能、デフォルト * は任意のページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.siroe.com/dir1/page.html
ページコンテンツ
<script LANGUAGE="Javascript"> <!-- //SYSTEM Var alert(window.location.pathname); //--> </SCRIPT>
ルール
<Variable name="window.location.pathname" type="SYSTEM"/>
出力
</SCRIPT> <SCRIPT LANGUAGE="Javascript"> <!-- //SYSTEM Var alert(psSRAPRewriter_convert_pathname(window.location.pathname)); //--> </SCRIPT>
説明
リライタは、ルールと一致するシステム変数を検索し、プレフィックスとして psSRAPRewriter_convert_system 関数を追加します。この関数は、実行時にシステム変数を処理し、処理後の URL を書き換えます。
値の書き換えが必要な関数パラメータは、次の 4 つのカテゴリに分類されます。
<Function name="functionName " paramPatterns="y,y," [type="URL|EXPRESSION|DHTML|DJS" source="*"]/>
各表記の意味は次のとおりです。
name は JavaScript 関数の名前です (必須)。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要なパラメータを示します。たとえば、構文の最初のパラメータは書き換えるが、2 番目のパラメータは書き換えない、という指定が可能です。
type はこのパラメータが必要とする値の種類を指定します (省略可能、デフォルトは EXPRESSION タイプ)。
source はページのソース URI です (省略可能、デフォルト * は任意のページを意味する)。
関数は、このパラメータを文字列としてとり、この文字列は URL として扱うことができます。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y,," type="URL" [source="*"]/>
各表記の意味は次のとおりです。
name は、パラメータのタイプが URL である関数の名前です (必須)。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要なパラメータを示します。たとえば、構文の最初のパラメータは書き換えるが、2 番目のパラメータは書き換えない、という指定が可能です。
type は関数のタイプです (必須、値は URL である必要がある)。
source は、この関数の呼び出しが含まれるページの URL です (省略可能、デフォルト * は任意の URL を意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/test/rewriter/test1/jscript/test2/page.html
ページコンテンツ
<script language="JavaScript"> <!-- function test(one,two,three){ alert(one + "##" + two + "##" +three); } test("/test.html","../test.html","123"); window.open("/index.html","gen",width=500,height=500); //--> </SCRIPT>
ルール
<Function name="URL" name="test" paramPatterns="y,y,"/> <Function name="URL" name="window.open" paramPatterns="y,,,"/>
出力
<SCRIPT language="JavaScript"> <!-- function test(one,two,three) { alert(one + "##" + two + "##" +three); } test("gateway-URL/http://abc.sesta.com/test.html"," gateway-URL/http://abc.sesta.com/test/rewriter/ test1/jscript/test.html","123");window.open("gateway-URL/ http://abc.sesta.com/index.html","gen",width=500,height=500); //--> </SCRIPT>
説明
最初のルールは、関数 test の最初の 2 つのパラメータを書き換える必要があることを示します。したがって、test 関数の最初の 2 つのパラメータが書き換えられます。2 番目のルールは、window.open 関数の最初のパラメータを書き換える必要があることを示します。window.open 関数内の URL の先頭に、ゲートウェイ URL と、関数パラメータが含まれるページのベース URL が追加されます。
このパラメータは、値として式をとり、この式の評価結果が URL となります。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y" [type="EXPRESSION" source="*"]/>
各表記の意味は次のとおりです。
name は関数名です (必須)。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。
type は、式の値のタイプを指定します (省略可能)。
source は、この関数を呼び出すページの URI です。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/dir1/dir2/page.html
ページコンテンツ
<script language="JavaScript"> <!-- function jstest2(){ return ".html"; } function jstest1(one){ return one; } var dir="/images/test" var test1=jstest1(dir+"/test"+jstest2()); document.write("<a HREF="+test1+">TEST</a>"); alert(test1); //--> </SCRIPT>
ルール
<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/> または <Function name="jstest1" paramPatterns="y"/>
出力
<script language="JavaScript"> <!-- function jstest2(){ return ".html"; } function jstest1(one){ return one; } var dir="/images/test" var test1=jstest1(psSRAPRewriter_convert_expression(dir+"/test"+jstest2())); document.write("<a HREF="+test1+">TEST</a>"); alert(test1); //--> </SCRIPT>
説明
このルールは、これが EXPRESSION 関数のパラメータであると見なすことによって、jstest1 関数の最初のパラメータを書き換える必要があることを示します。ページコンテンツの例では、最初のパラメータは実行時にだけ評価される式です。リライタはこの式の先頭に psSRAPRewriter_convert_expression 関数を追加します。式が評価され、psSRAPRewriter_convert_expression 関数は実行時に出力を書き換えます。
上の例では、JavaScript 変数ルールの一部として、変数 test1 は必要ありません。書き換えは、jstest1 の関数ルールによって行われます。
これは、値が HTML の関数パラメータです。
HTML ページをダイナミックに生成する document.write() などのネイティブ JavaScript メソッドは、このカテゴリに分類されます。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y" type="DHTML" [source="*"]/>
各表記の意味は次のとおりです。
name は関数名です。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。
ページのベース URL が次の URL であると仮定します。
http://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/page.html
ページコンテンツ
<script> <!-- document.write(\q<a href="/index.html">write</a><BR>\q) document.writeln(\q<a href="index.html">writeln</a><BR>\q) document.write("http://abc.sesta.com/index.html<BR>") document.writeln("http://abc.sesta.com/index.html<BR>") //--> </SCRIPT>
ルール
<Function name="DHTML" name="document.write" paramPatterns="y"/> <Function name="DHTML" name="document.writeln" paramPatterns="y"/> <Attribute name="href"/>
出力
<SCRIPT> <!-- document.write(\q<a href="gateway-URL/ http://xyz.siroe.com/index.html">write</a><BR>\q) document.writeln(\q<a href="gateway-URL/ http://xyz.siroe.com/test/rewriter/test1/ jscript/JSFUNC/index.html">writeln</a><BR>\q) document.write("http://abc.sesta.com/index.html<BR>") document.writeln("http://abc.sesta.com/index.html<BR>") //--> </SCRIPT>
説明
最初のルールは、関数 document.write の最初のパラメータを書き換える必要があることを示します。2 番目のルールは、関数 document.writeln の最初のパラメータを書き換える必要があることを指定します。3 番目のルールは、名前に href を含むすべての属性を書き換える必要があることを指定する簡単な HTML ルールです。この例では、DHTML パラメータルールは関数内の書き換えの必要があるパラメータを特定します。この場合、HTML 属性ルールが適用され、特定されたパラメータが実際に書き換えられます。
これは、値が JavaScript の関数パラメータです。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y" type="DJS" [source="*"]/>
各表記の意味は次のとおりです。
name は、1 つのパラメータが DJS である関数の名前です (必須)。
paramPatterns は、上の関数のどのパラメータが DJS であるかを指定します (必須)。
y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。
type は DJS です (必須)。
source はページの URI です (省略可能、デフォルト * は任意の URI を意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/page.html
ページコンテンツ
<script> menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location=\qhttp://abc.sesta.co m\q")); </script>
ルール
<Function name="DJS" name="NavBarMenuItem" paramPatterns=",y"/> <Variable name="URL">top.location</Variable>
出力
<script> menu.addItem(new NavBarMenuItem("All Available Information", "JavaScript:top.location=\qgateway-URL/ http://abc.sesta.com\q")); </script>
説明
最初のルールは、JavaScript を含む関数 NavBarMenuItem の 2 番目のパラメータを書き換える必要があることを指定します。JavaScript 内で、変数 top.location も書き換える必要があります。この変数は 2 番目のルールを使用して書き換えられます。
Web ページには、URL を含む XML コンテンツが含まれていることがあります。書き換えが必要な XML コンテンツは、2 つのカテゴリに分類されます。
このルールは、タグ要素の PCDATA または CDATA を書き換えるためのものです。
この節は、次の項目から構成されています。
<TagText tag="tagName" [attributePatterns="attribute_patterns_for_ this_tag" source="*"]/>
各表記の意味は次のとおりです。
tag はタグ名です。
attributePatterns はこのタグの属性と属性値パターンです (省略可能、省略した場合はこのタグは属性を一切持たない)。
source はこの XML ファイルの URI です (省略可能、デフォルト * は任意の XML ページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/test/rewriter/test1/xml/page.html
ページコンテンツ
<xml> <Attribute name="src">test.html</attribute> <attribute>abc.html</attribute> </xml>
ルール
<TagText tag="attribute" attributePatterns="name=src"/>
出力
<xml> <Attribute name="src">gateway-URL/ http://abc.sesta.com/test/rewriter/test1/ xml/test.html</attribute><attribute>abc.html</attribute> </xml>
説明
ページコンテンツの最初の行には 「属性の例」が含まれます。ページコンテンツの 2 行目には、名前が name で値が src の属性が含まれず、書き換えは行われません。これを書き換えるには、<TagText tag="attribute"/> も必要です。
XML 属性のルールは、HTML の属性ルールに似ています。違いは、XML の属性ルールでは大文字と小文字が区別され、HTML の属性ルールでは区別されないことです。これは、XML では大文字と小文字が区別され、HTML では区別されないためです。
リライタは、属性名に基づいて属性値を変換します。
この節は、次の項目から構成されています。
<Attribute name="attributeName " [tag="*" type="URL" valuePatterns="*" source="*"]/>
各表記の意味は次のとおりです。
attributeName は属性名です (必須)。
tag は、この属性が含まれるタグの名前です (省略可能、デフォルト * は任意のタグを意味する)。
valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。
source は XML ページの URI です (省略可能、デフォルト * は任意の XML ページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/test/rewriter/test1/xml/page.html
ページコンテンツ
<xml> <baseroot href="/root.html"/> <img href="image.html"/> <string href="1234|substring.html"/> <check href="1234|string.html"/> </xml>
ルール
<Attribute name="href"tag="check" valuePatterns="1234|"/>
出力
<xml> <baseroot href="/root.html"/><img href="image.html"/> <string href="1234|substring.html"/><check href="1234| gateway-URL /http://abc.sesta.com/test/rewriter/test1/xml/string.html"/></xml>
説明
前述した例では、4 行目だけがルールに指定されたすべての条件と一致するため、書き換えられます。「ルールでのパターンマッチングの使用」を参照してください。
HTML ページのカスケードスタイルシート (CSS2 も含まれる) も変換されます。この変換のために定義されるルールはありません。これは、URL が CSS の url() 関数とインポート構文にだけ表示されるためです。
WML は HTML に似ているため、WML コンテンツには HTML ルールが適用されま す。WML コンテンツの汎用ルールセットを使用してください。「HTML コンテンツのルール」を参照してください。
リライタは、再帰機能を使用して、一致する文字列パターンの最後まで同じパターンを検索します。
たとえば、リライタが次の文字列を解析する場合を考えます。
<a href="src=abc.jpg,src=bcd.jpg,src=xyz.jpg>
次のルールがあるとします。
<Attribute name="href" valuePatterns="*src=**"/>
このルールは、最初に見つかったパターンだけを次のように書き換えます。
<a href="src=http://jane.sun.com/abc.jpg>
一方、次のように再帰オプションを使用した場合を考えます。
<Attribute name="href" valuePatterns="REC:*src=**"/>;
リライタは再帰機能を使用して、一致する文字列パターンの最後まで同じパターンを検索します。この出力は次のようになります。
<a href="src=http://jane.sun.com/abc.jpg,src= http://jane.sun.com/bcd.jpg,src=http://jane.sun.com/xyz.jpg>
リライタに関する問題の原因を特定するには、デバッグログを有効にする必要があります。
デバッグメッセージは、次のように分類されます。
Error : リライタが修復できないエラー。
Warning : リライタの動作に重大な影響を及ぼさない警告。リライタはこのようなエラーを修復できますが、動作不良が生じる可能性もあります。一部の警告メッセージは情報提供用です。たとえば、警告メッセージとして「Not rewriting image content」がログに記録されたとします。リライタは画像を書き換えるという動作を想定していないので、これは問題ありません。
Message : リライタが提供する最上位レベルの情報。
ゲートウェイマシンに root としてログインし、次のファイルを編集します。
gateway-install-root/SUNWam/config/AMConfig-instance-name.properties |
デバッグレベルを設定します。
com.iplanet.services.debug.level= |
次のデバッグレベルがあります。
error : 重要なエラーだけがログとしてデバッグファイルに記録されます。このようなエラーが発生すると、通常、リライタは機能を停止します。
warning : 警告メッセージがログに記録されます。
message : すべてのデバッグメッセージがログに記録されます。
off : デバッグメッセージはログに記録されません。
AMConfig-instance-name.properties ファイルの次のプロパティーに、デバッグファイルのディレクトリを指定します。
com.iplanet.services.debug.directory=/var/opt/SUNWam/debug |
この /var/opt/SUNWam/debug は、デフォルトのデバッグディレクトリです。
端末ウィンドウからゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
デバッグレベルを「message」に設定すると、複数のファイルが生成されます。「デバッグファイル名」はリライタのデバッグファイルとその内容を示しています。
表 4–2 リライタのデバッグファイル
ファイル名 |
説明 |
---|---|
RuleSetInfo |
書き換えに使用されたすべてのルールは、このファイルに記録されます。 |
Original Pages |
ページの URI、解決された URI (ページ URI と異なる場合)、コンテンツの MIME、ページに適用されたルールセット、パーサー MIME、および元のコンテンツが記録されます。 このファイルには、解析に関連する具体的な error/warning/message も記録されます。 message モードでは、すべてのコンテンツが記録されます。warning モードと error モードでは、書き換え時に発生した例外だけが記録されます。 |
Rewritten Pages |
ページの URI、解決された URI (ページ URI と異なる場合)、コンテンツの MIME、ページに適用されたルールセット、パーサー MIME、および書き換えられたコンテンツが記録されます。 この情報は、デバッグモードを message に設定した場合にだけ記録されます。 |
Unaffected Pages |
このファイルには、変更されなかったページのリストが含まれます。 |
URIInfo Pages |
検出され、変換された URL が記録されます。コンテンツが元のデータと同じ状態で残された、すべてのページの詳細が記録されます。 記録される詳細情報はページの URI、MIME、符号化データ、書き換え時に適用されたルールセットの ID、およびパーサー MIME です。 |
これらのファイルのほかに、リライタはこれらのファイルに記録されないデバッグメッセージを記録するファイルを生成します。このファイルの名前は 2 つの部分から構成されます。最初の部分は pwRewriter または psSRARewriter で、2 番目の部分は portal または gateway-profile-name を使用した拡張子です。
デバッグファイルは、ポータルまたはゲートウェイに表示されます。これらのファイルは、AMConfig-instance-name.properties ファイルに指定されているディレクトリに格納されます。
リライタコンポーネントは、デバッグ用に次のファイルを生成します。
prefix_RuleSetInfo.extension
prefix_OrginalPages.extension
prefix_RewrittenPages.extension
prefix_UnaffectedPages.extension
prefix_URIInfo.extension
各表記の意味は次のとおりです。
prefix は、URL スクレーパーを使用した場合は psRewriter、ゲートウェイを使用した場合は psSRAPRewriter です。
extension は、URL スクレーパーを使用した場合は portal、ゲートウェイを使用した場合は gateway-profile-name です。
たとえば、ページの変換にゲートウェイ上のリライタとデフォルトのゲートウェイプロファイルを使用した場合は、次のデバッグファイルが生成されます。
psSRAPRewriter_RuleSetInfo.default
psSRAPRewriter_OriginalPages.default
psSRAPRewriter_RewrittenPages.default
psSRAPRewriter_UnaffectedPages.default
psSRAPRewriter_URIInfo.default
psSRAPRewriter.default
この節では、次の点を説明します。
書き換えが必要なコンテンツを含む簡単な HTML ページ
コンテンツの書き換えに必要なルール
書き換えられた HTML ページ
これらのサンプルページは、portal-server-URL/rewriter ディレクトリ内にあります。ルールを適用する前にページの内容を参照し、その後、書き換えられてゲートウェイを通じて出力されたファイルを参照することで、ルールがどのように機能しているかを理解することができます。一部のサンプルでは、ルールはすでに default_gateway_ruleset の一部として含まれています。一部のサンプルでは、ルールを default_gateway_ruleset に含めなければならない場合があります。これについては、該当箇所で説明します。
太字で表示されている文は、書き換えられたことを示します。
次のサンプルが用意されています。
HTML
JavaScript
関数
XML
XML 属性のサンプル
このサンプルには次の場所からアクセスできます。
portal-server-URL/rewriter/HTML/attrib/attribute.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com と host1.siroe.com が定義されていることを確認してください。
これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。
このサンプルに指定されているルールはすでに default_gateway_ruleset に定義されているので、追加の必要はありません。
<html> Rewriting starts <head> <title>TEST PAGE () </title> </head> ID-htmlattr.1 <br><br> 1.a href <a href="http://abc.sesta.com/images/logo.gif">http://..</a> <br><br> 2. href <a href="https://host1.siroe.com">https://..</a> <br><br> 3. href <a href="../images/logo.gif">../images/</a> <br><br> 4. href <a href="images/logo.gif">images/..</a> <br><br> 5. href <a href="../../images/logo.gif">../../images/</a> <br><br> Rewriting ends </html>
<Attribute name="href"/>
<html> Rewriting starts <head> <title>TEST PAGE () </title> </head> ID-htmlattr.1 <br><br> 1. a href <a href="gateway-URL/http://abc.sesta.com/images/logo.gif">http://..</a> <br>
default_gateway_ruleset に <Attrib name="href"/> ルールがすでに定義されているので、この URL は書き換えられます。URL はすでに絶対 URL であるため、ゲートウェイ URL だけがプレフィックスとして追加されます。ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。これが定義されていないと、直接接続が想定されるため、ゲートウェイ URL がプレフィックスとして追加されません。
2. href <a href="gateway-URL/https://host1.siroe.com">https://..</a>
// この場合も、ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに host1.siroe.com が定義されていることを確認してください。これが定義されていないと、直接接続が想定されるため、ゲートウェイ URL がプレフィックスとして追加されません。
<br><br> 3. href <a href="gateway-URL/portal-server-URL/rewriter/HTML/images/logo.gif">../images/</a>
// 相対パスが指定されているため、必要なサブディレクトリとともにゲートウェイ URL と portal-server-URL がプレフィックスとして追加されます。用意されたサンプル構造で、HTML ディレクトリの下の images という名前のディレクトリが指定されないため、このリンクは機能しません。
<br><br>
4 href <a href="gateway-URL/portal-server-URL/rewriter/HTML/attrib/images/ logo.gif">images/..</a> <br><br>
// 相対パスが指定されているため、必要なサブディレクトリとともにゲートウェイ URL と Portal Server URL がプレフィックスとして追加されます。
5. href <a href="gateway-URL/portal-server-URL/rewriter/images/logo.gif"> ../../images/</a> <br><br>
// 相対パスが指定されているため、必要なサブディレクトリとともにゲートウェイ URL と Portal Server URL がプレフィックスとして追加されます。用意されたサンプル構造で、Rewriter ディレクトリの下の images という名前のディレクトリが指定されないため、このリンクは機能しません。
Rewriting ends</html>
ここでは、HTML JavaScript トークンのサンプルの使用について説明します。
このサンプルには次の場所からアクセスできます。
portal-server-URL /rewriter/HTML/jstokens/JStokens.html
このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。
Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
端末ウィンドウからゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> <head> Rewriting starts <script language="javascript"> function Check(test,ind){ if (ind == \qblur\q) {alert("testing onBlur")} if (ind == \qfocus\q) {alert("testing onFocus")} } </SCRIPT> </head> <body> <form> <input TYPE=TEXT SIZE=20 value=blur onAbort="Check (\q/indexblur.html\q,\qblur\q);return;"> <input TYPE=TEXT SIZE=20 value=blur onBlur="Check (\q/indexblur.html\q,\qblur\q);return;"> <input TYPE=TEXT SIZE=20 value=focus onFocus="Check (\q/focus.html\q,\qfocus\q);return;"> <input TYPE=TEXT SIZE=20 value=focus onChange="Check (\q/focus.html\q,\qfocus\q);return;"> <input TYPE=TEXT SIZE=20 value=focus onClick="Check (\q/focus.html\q,\qblur\q);return;"> <br><br> </form> </body> Rewriting ends </html>
<Attribute name="onClick" type="DJS"/> <Function type="URL" name="Check" paramPatterns="y"/>
<Function name="URL" name="Check" paramPatterns="y"/> は JavaScript 関数ルールです。JavaScript 関数のサンプルで詳しく説明します。
<html> <head> Rewriting starts <script language="javascript"> function Check(test,ind){ if (ind == \qblur\q) {alert("testing onBlur")} if (ind == \qfocus\q) {alert("testing onFocus")} } </SCRIPT> </head> <body> <form> <input TYPE=TEXT SIZE=20 value=blur onAbort="Check (\qgateway URL/portal-server-URL/indexblur.html\q,\qblur\q);return;"> <input TYPE=TEXT SIZE=20 value=blur onBlur="Check (\qgateway URL/portal-server-URL/indexblur.html\q,\qblur\q);return;"> <input TYPE=TEXT SIZE=20 value=focus onFocus="Check (\qgateway URL/portal-server-URL/focus.html\q,\qfocus\q);return;"> <input TYPE=TEXT SIZE=20 value=focus onChange="Check (\qgateway URL/portal-server-URL/focus.html\q,\qfocus\q);return;"> <input TYPE=TEXT SIZE=20 value=focus onClick="Check (\qgateway URL/portal-server-URL/focus.html\q,\qblur\q);return;">
// このサンプルではすべての文が書き換えられます。それぞれ、ゲートウェイと Portal Server の URL が先頭に追加されます。これは、default_gateway_ruleset ファイルに onAbort、onBlur、onFocus、onChange、および onClick のルールが定義されているためです。リライタは JavaScript トークンを検出し、あとの処理のために JavaScript 関数ルールに渡します。サンプルの 2 番目のルールは、書き換えるパラメータをリライタに伝えます。
</body> <br>
Rewriting ends
</html>
次の場所にあるサンプルフォームにアクセスします。
portal-server-URL/rewriter/HTML/forms/formrule.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。
これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。
このサンプルで指定されているルールを、default_gateway_ruleset の「HTML 属性を書き換えるためのルール (Rules for Rewriting HTML Attributes)」セクションに追加します。
Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
端末ウィンドウからゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> RW_START <p> <form name="form1" method="Post" action= "http://abc.sesta.com/casestudy/html/form.html"> <input type="hidden" name="name1" value="0|1234|/test.html"> <input type="hidden" name="name3" value="../../html/test.html"> <form name="form2" method="Post" action=" http://abc.sesta.com/testcases/html/form.html"><br> <input type="hidden" name="name1" value="0|1234| ../../html/test.html"></form> RW_END </p> </body> </html>
<Form source="*" name="form1" field="name1" valuePatterns="0|1234|"/>
<HTML> <HEAD> RW_START </HEAD> <BODY> <P> <FORM name=form1 method=POST action="gateway-URL/http://abc.sesta.com/casestudy/html/form.html">
default_gateway_ruleset 内の HTML ルールの一部として <Attribute name="action"/> が定義されているため、この URL は書き換えられます。この URL はすでに絶対 URL であるため、ゲートウェイ URL だけをプレフィックスとして追加する必要があります。ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。これが定義されていないと、直接接続が想定されるため、ゲートウェイ URL がプレフィックスとして追加されません。
<input type=hidden name=name1 value= "0|1234|gateway URL/portal-server-URL/test.html">
// ここではフォーム名は form1、フィールド名は name1 です。これはルールに指定されたフォーム名とフィールド名に一致します。ルールはこの文の value に一致する valuePatterns を 0|1234| と宣言します。したがって、valuePattern のあとの URL が書き換えられます。Portal Server の URL とゲートウェイの URL が先頭に追加されます。valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。
<input type=hidden name=name3 value="../../html/test.html">
name はルールに指定される field 名と一致しないため、この URL は書き換えられません。
</FORM> <FORM name=form2 method=POST action= "gateway-URL/http://abc.sesta.com/casestudy/html/form.html"><BR>
<Attribute name="action"/> はデフォルトルールセットの HTML ルールの一部として定義されているため、この URL は書き換えられます。この URL はすでに絶対 URL であるため、ゲートウェイ URL だけをプレフィックスとして追加する必要があります。
<input type=hidden name=name1 value="0|1234|../../html/test.html">
// フォーム名がルールに指定される名前と一致しないため、この URL は書き換えられません。
</FORM> </BODY> RW_END </HTML>
アプレットの class ファイルを入手します。RewriteURLinApplet.class ファイルは、次の場所にあります。
portal-server-URL/rewriter/HTML/applet/appletcode
アプレットコードを参照するページのベース URL は次のとおりです。
portal-server-URL/rewriter/HTML/applet/rule1.html
このサンプルで指定されているルールを、default_gateway_ruleset の「HTML 属性を書き換えるためのルール (Rules for Rewriting HTML Attributes)」セクションに追加します。
Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
ゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> Rewriting starts <br> <applet codebase=appletcode code=RewriteURLinApplet.class archive=/test> <param name=Test1 value="/index.html"> <param name=Test2 value="../index.html"> <param name=Test3 value="../../index.html"> </applet> Rewriting ends </html>
<Applet source="*/rule1.html" code="RewriteURLinApplet.class" param="Test*" />
<HTML> Rewriting starts <BR> <APPLET codebase=gateway-URL/portal-server-URL /rewriter/HTML/applet/appletcode=RewriteURLinApplet.class archive=/test>
<Attribute name="codebase"/> ルールがすでに default_gateway_ruleset ファイルの一部として存在するため、この URL は書き換えられます。ゲートウェイと Portal Server の URL が appletcode ディレクトリのパスの前にプレフィックスとして追加されます。
<param name=Test1 value= "gateway-URL/portal-server-URL/index.html">
// ページのベース URL が rule1.html で、パラメータ名がルールに指定されたパラメータ Test* と一致するため、この URL は書き換えられます。index.html は root レベルに指定されているため、ゲートウェイと Portal Server の URL がプレフィックスとして直接追加されます。
<param name=Test2 value="gateway-URL /portal-server-URL/rewriter/HTML/index.html">
// ページのベース URL が rule1.html で、パラメータ名がルールに指定されたパラメータ Test* と一致するため、この URL は書き換えられます。必要に応じて、パスがプレフィックスとして追加されます。
<param name=Test3 value="gateway-URL /portal-server-URL/rewriter/index.html">
// ページのベース URL が rule1.html で、パラメータ名がルールに指定されたパラメータ Test* と一致するため、この URL は書き換えられます。必要に応じて、パスがプレフィックスとして追加されます。
</APPLET> Rewriting ends </HTML>
このサンプルには次の場所からアクセスできます。
portal-server-URL /rewriter/JavaScript/variables/url/js_urls.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。
これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。
このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します。
Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
ルールを追加した場合は、次のコマンドでゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> Rewriting starts <head> <title>JavaScript Variable test page</title> </head> <body> <script LANGUAGE="Javascript"> <!-- //URL Variables var imgsrc="/tmp/tmp.jpg"; var imgsrc="./tmp/tmp.jpg"; var imgsrc="../tmp/tmp.jpg"; var imgsrc="../../tmp/tmp.jpg"; var imgsrc="http://abc.sesta.com/tmp/tmp.jpg"; var imgsrc="../../../tmp/tmp.jpg"; var imgsrc="tmp/tmp.jpg"; //--> </SCRIPT> <br> Testing JavaScript variables! <br> <img src="images/logo.gif"> <br> Image </body> <br> Rewriting ends </html>
<Variable name="imgsrc" type="URL"/>
<html> Rewriting starts <head> <title>JavaScript Variable test page</title> </head> <body> <script LANGUAGE="Javascript"> <!-- //URL Variables var imgsrc="gateway-URL/portal-server-URL/tmp/tmp.jpg"; var imgsrc="gateway-URL/portal-server-URL /rewriter/JavaScript/variables/url/tmp/tmp.jpg"; var imgsrc="gateway-URL/portal-server-URL /rewriter/JavaScript/variables/tmp/tmp.jpg"; var imgsrc="gateway-URL/portal-server-URL /rewriter/JavaScript/tmp/tmp.jpg"; var imgsrc="gateway-URL/http://abc.sesta.com/tmp/tmp.jpg"; var imgsrc="gateway-URL/portal-server-URL/rewriter/tmp/tmp.jpg"; var imgsrc="gateway-URL/portal-server-URL /rewriter/JavaScript/variables/url/tmp/tmp.jpg";
// 上記のすべての URL は、タイプが URL で、ルールで指定された imgsrc という名前を持つ JavaScript 変数です。したがってこれらの URL の先頭に、ゲートウェイと Portal Server の URL がプレフィックスとして追加されます。必要に応じて、Portal Server URL のあとにパスが追加されます。
//--> </SCRIPT> <br> Testing JavaScript variables! <br> <img src="gateway URL/portal-server-URL/rewriter /JavaScript/variables/url/images/logo.gif">
default_gateway_ruleset に <Attribute name="src"/> ルールが定義されているので、この行は書き換えられます。
<br> Image </body> <br> Rewriting ends </html>
このサンプルには次の場所からアクセスできます。
portal-server-URL /rewriter/JavaScript/variables/expr/expr.html
このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。
Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
ルールを追加した場合は、次のコマンドでゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> <head> <title>JavaScript EXPRESSION Variables Test Page</title> </head> <body> <script LANGUAGE="Javascript"> <!-- //Expression 変数 var expvar1="images"; var expvar2="/logo.gif"; var expvar = expvar1 + expvar2; document.write("<A HREF="+expvar+">EXPRESSION</A><P>") var expvar="/images/logo"+".gif"; document.write("<A HREF="+expvar+">EXPRESSION</A><P>") //--> </SCRIPT> Testing JavaScript EXPRESSION variables </body> </html>
<Variable type="EXPRESSION" name="expvar"/>
<html> <head> <title>JavaScript EXPRESSION Variables Test Page</title> </head> <body> <SCRIPT> // リライタは、ラッパー関数 psSRAPRewriter_convert_expression をここに追加します。 </SCRIPT> <script LANGUAGE="Javascript"> <!-- //Expression 変数 var expvar1="images"; var expvar2="/logo.gif"; var expvar =psSRAPRewriter_convert_expression( expvar1 + expvar2);
// リライタはこの文の右側を JavaScript EXPRESSION 変数として認識します。リライタはサーバー側でこの式の値を解決することができません。したがって psSRAPRewriter_convert_expression 関数が式の前に追加されます。式はクライアント側で評価され、必要に応じて書き換えられます。
document.write("<A HREF="+expvar+">EXPRESSION</A><P>")
// 前の文の書き換え後の値 expvar は、この式の値に到達するために使用されます。結果は有効な URL (サンプルのこの位置にグラフィックが配置される) であるため、リンクが機能します。
var expvar="gateway URL/portal-server-URL/images/logo"+".gif";
// リライタは expvar の右側を文字列式として認識します。これはサーバー側で解決できるため、直接書き換えられます。
document.write("<A HREF="+expvar+">EXPRESSION</A><P>")
// 前の文の書き換え後の値 expvar は、この式の値に到達するために使用されます。結果が有効な URL ではない (最終的な位置にグラフィックが配置されない) ため、リンクは機能しません。
//--> </SCRIPT> Testing JavaScript EXPRESSION variables </body> </html>
このサンプルには次の場所からアクセスできます。
portal-server-URL /rewriter/JavaScript/variables/dhtml/dhtml.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。
このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
ルールを追加した場合は、次のコマンドでゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> <head> <title>JavaScript DHTML Variable Test Page</title> </head> <body> <script LANGUAGE="Javascript"> <!-- //DHTML Var var dhtmlVar="<a href=../../images/test.html>" var dhtmlVar="<a href=/../images/test.html>" var dhtmlVar="<a href=/images/test.html>" var dhtmlVar="<a href=images/test.html>" var dhtmlVar="<a href=http://abc.sesta.com/images/test.html>" var dhtmlVar="<img src=http://abc.sesta.com/images/test.html>" //--> </SCRIPT> <br><br> Testing DHTML Variables <br><br> <img src="images/logo.gif">IMAGE </body> </html>
<Variable name="DHTML">dhtmlVar</Variable>
<html> <head> <title>JavaScript DHTML Variable Test Page</title> </head> <body> <script LANGUAGE="Javascript"> <!-- //DHTML Var var dhtmlVar="<a href=gateway-URL/portal-server-URL /rewriter/JavaScript/images/test.html>"
// JavaScript DHTML ルールは dhtmlVar の右側をダイナミック HTML コンテンツとして識別します。このため、default_gateway_ruleset ファイル内の HTML ルールが適用されます。ダイナミック HTML には href 属性が含まれています。default_gateway_ruleset には、<Attribute name="href"/> ルールが定義されています。したがって、href 属性の値が書き換えられます。ただし、URL は絶対 URL ではありません。このため、相対 URL はページのベース URL、および必要なサブディレクトリに置き換えられます。次に、ゲートウェイ URL が URL のプレフィックスとして追加され、最終的な書き換え出力となります。
var dhtmlVar="<a href=gateway-URL /portal-server-URL/../images/test.html>"
// ページのベース URL が追加され、またゲートウェイ URL がプレフィックスとして追加されているため、最終的な URL は機能しません。これは最初の URL /../images/test.html が正確ではないためです。
var dhtmlVar="<a href=gateway-URL /portal-server-URL/images/test.html>"
// ここでも、JavaScript DHTML ルールは右側をダイナミック HTML コンテンツとして識別し、それを HTML ルールに渡します。default_gateway_ruleset の HTML ルール <Attribute name="href"/> が適用され、文は次のように書き換えられます。ゲートウェイの URL と Portal Server の URL が先頭に追加されます。
var dhtmlVar="<a href=gateway URL/portal-server-URL/ rewriter/JavaScript/variables/dhtml/images/test.html>" var dhtmlVar="<a href=gateway URL/http://abc.sesta.com/images/test.html>" var dhtmlVar="<img src=gateway-URL/ http://abc.sesta.com/images/test.html>"
// JavaScript DHTML ルールは右側のダイナミック HTML コンテンツを識別し、文を HTML ルールに渡します。default_gateway_ruleset 内の <Attribute name="src"/> ルールが適用されます。URL はすでに絶対 URL であるため、ゲートウェイ URL だけをプレフィックスとして追加する必要があります。ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義され、この URL が書き換えられることを確認してください。
//--> </SCRIPT> <br><br> Testing DHTML Variables <br><br> <img src="gateway-URL/portal-server-URL/ rewriter/JavaScript/variables/dhtml/images/logo.gif">
default_gateway_ruleset に <Attribute name="src"/> ルールが定義されているので、この行は書き換えられます。
<br><br> Image </body> </html>
このサンプルには次の場所からアクセスできます。
portal-server-URL /rewriter/JavaScript/variables/djs/djs.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。
このサンプルで指定される 2 つのルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
ゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> <head> <title>Dynamic JavaScript Variable Test Page</title> </head> <body> <script LANGUAGE="Javascript"> <!-- var dJSVar="var dJSimgsrc=\q/tmp/tmp/jpg\q;" var dJSVar="var dJSimgsrc=\q../../../tmp/tmp/jpg\q;" var dJSVar="var dJSimgsrc=\qhttp://abc.sesta.com/tmp/tmp/jpg\q;" //--> </SCRIPT> <br> Testing Dynamic JavaScript Variables <br> <img src="images/logo.gif"> <br> Image </body> </html>
<Variable name="dJSVar" type="DJS"/> <Variable name="dJSimgsrc“ type=URL"/>
<html> <head> <title>Dynamic JavaScript Variable Test Page</title> </head> <body> <script LANGUAGE="Javascript"> <!-- var dJSVar="var dJSimgsrc=\qgateway-URL /portal-server-URL/tmp/tmp/jpg\q;" var dJSVar="var dJSimgsrc=\qgateway-URL /portal-server-URL/rewriter/tmp/tmp/jpg\q;" var dJSVar="var dJSimgsrc=\qgateway-URL /http://abc.sesta.com/tmp/tmp/jpg\q;"
// 上のすべての文は、ゲートウェイ URL と Portal Server URL で書き換えられます。必要に応じて適切なパスがプレフィックスとして追加されます。最初のルールは、dJSVar の右側をダイナミック JavaScript 変数として識別します。これは 2 番目のルールに渡され、2 番目のルールは dJSimgsrc の右側をタイプ URL の JavaScript 変数として識別します。これにより、文は次のように書き換えられます。
//--> </SCRIPT> <br> Testing Dynamic JavaScript Variables <br> <img src="gateway-URL/portal-server-URL /rewriter/JavaScript/variables/djs/images/logo.gif">
default_gateway_ruleset に <Attribute name="src"/> ルールが定義されているので、この行は書き換えられます。
<br> Image </body> </html>
このサンプルには次の場所からアクセスできます。
portal-server-URL /rewriter/JavaScript/variables/system/system.html
このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。
Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
ゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> <head> <title>JavaScript SYSTEM Variables Test Page</title> </head> <body> <script LANGUAGE="Javascript"> <!-- //SYSTEM 変数 alert(window.location.pathname); //document.write ("<A HREF="+window.location.pathname+">SYSTEM</A><P>") //--> </SCRIPT> Testing JavaScript SYSTEM Variables <br> This page displays the path where the current page is located when loaded. </body> </html>
<Variable name="window.location.pathname" type="SYSTEM"/>
<html> <head> <title>JavaScript SYSTEM Variables Test Page</title> </head> <body> <SCRIPT> convertsystem function definition... </SCRIPT> <script LANGUAGE="Javascript"> <!-- //SYSTEM 変数 alert(psSRAPRewriter_convert_system (window.location, window.location.pathname,"window.location"));
// リライタは window.location.pathname を JavaScript の SYSTEM 変数として識別します。この変数の値はサーバー側で決定することができません。このため、リライタはこの変数の前に psSRAPRewriter_convert_pathname 関数を追加します。このラッパー関数は、クライアント側で変数の値を判断し、必要に応じて書き換えます。
//--> </SCRIPT> Testing JavaScript SYSTEM Variables <br> This page displays the path where the current page is located when loaded. </body> </html>
このサンプルには次の場所からアクセスできます。
portal-server-URL /rewriter/JavaScript/functions/url/url.html
このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
ゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> <body> JavaScript URL Function Test Page <br> <script language="JavaScript"> <!-- function test(one,two,three) { alert(one + "##" + two + "##" +three); } test("/test.html","../test.html","123"); window.open("/index.html","gen",width=500,height=500); //--> </SCRIPT> </body> </html>
<Function type="URL" name="test" paramPatterns="y,y"/> <Function type="URL" name="window.open" paramPatterns="y"/>
<html> <body> JavaScript URL Function Test Page <br> <script language="JavaScript"> <!-- function test(one,two,three) { alert(one + "##" + two + "##" +three); } test("/test.html","../test.html","123"); window.open("gateway-URL/portal-server-URL /index.html","gen",width=500,height=500); //--> </SCRIPT> </body> </html>
このサンプルには次の場所からアクセスできます。
<portal-install-location>/SUNWportal/samples/rewriter
このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。
Portal Server 管理コンソールを使用して、リライタサービスの default_gateway_ruleset を編集します。
ゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> <body> JavaScript EXPRESSION Function Test Page <br><br><br> <script language="JavaScript"> <!-- function jstest2() { return ".html"; } function jstest1(one) { return one; } var dir="/images/test" var test1=jstest1(dir+"/test"+jstest2()); document.write("<a HREF="+test1+">Test</a>"); alert(test1); //--> </SCRIPT> </body> </html>
<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/>
<html> <body> JavaScript EXPRESSION Function Test Page <br><br><br> <script> <!-- // ここには、psSRAPRewriter_convert_expression を含むさまざまな関数が表示されます。//--> </SCRIPT> <script language="JavaScript"> <!-- function jstest2() { return ".html"; } function jstest1(one) { return one; } var dir="/images/test" var test1=jstest1(psSRAPRewriter_convert_ expression(dir+"/test"+jstest2()));
// このルールは、関数 jstest1 のタイプ EXPRESSION の最初のパラメータを書き換える必要があることを指定します。この式の値は /test/images/test.html です。この値の前に、Portal Server URL とゲートウェイ URL がプレフィックスとして追加されます。
document.write("<a HREF="+test1+">Test</a>"); alert(test1); //--> </SCRIPT> </body> </html>
このサンプルには次の場所からアクセスできます。
portal-server-URL /rewriter/JavaScript/functions/dhtml/dhtml.html
このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。
Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
ゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> <head> Testing JavaScript DHTML Functions <br> <br> <script> <!-- document.write(\q<a href="/index.html">write</a><BR>\q) document.writeln(\q<a href="index.html">writeln</a><BR>\q) document.write("http://abc.sesta.com/index.html<BR>") document.writeln("http://abc.sesta.com/index.html<BR>") //--> </SCRIPT> </head> <body BGCOLOR=white> <br><br> Testing document.write and document.writeln </body> </html>
<Function type="DHTML" name=" document.write" paramPatterns="y"/> <Function type="DHTML" name=" document.writeln" paramPatterns="y"/>
<html> <head> Testing JavaScript DHTML Functions <br> <br> <script> <!-- document.write(\q<a href="gateway-URL /portal-server-URL/index.html">write</a><BR>\q)
// 最初のルールは、DHTML JavaScript 関数 document.write の最初のパラメータを書き換える必要があることを示します。リライタは、最初のパラメータが単純な HTML 文であることを識別します。default_gateway_ruleset の HTML ルールのセクションには <Attribute name="href" /> ルールが定義されており、書き換えが必要な文はこのルールによって決定されます。
document.writeln(\q<a href="gateway-URL /portal-server-URL/rewriter/JavaScript/functions/dhtml/index.html">writeln</a><BR>\q)
// 2 番目のルールは、DHTML JavaScript 関数 document.writeln の最初のパラメータを書き換える必要があることを示します。リライタは、最初のパラメータが単純な HTML 文であることを識別します。default_gateway_ruleset の HTML ルールのセクションには <Attribute name="href" /> ルールが定義されており、書き換えが必要な文はこのルールによって決定されます。
document.write("http://abc.sesta.com/index.html<BR>") document.writeln("http://abc.sesta.com/index.html<BR>")
// DHTML ルールは関数 document.write と document.writeln を検出しますが、上の文は書き換えられません。これは最初のパラメータが HTML ではないためです。パラメータは任意の文字列となり、リライタはこれをどのように書き換えるかを指示されていません。
//--> </SCRIPT> </head> <body BGCOLOR=white> <br><br> Testing document.write and document.writeln </body> </html>
このサンプルには次の場所からアクセスできます。
portal-server-URL /rewriter/JavaScript/functions/djs/djs.html
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストに abc.sesta.com が定義されていることを確認してください。
これが定義されていないと、直接の接続が想定され、ゲートウェイ URL がプレフィックスとして追加されません。
このサンプルで指定されているルールを、default_gateway_ruleset の「JavaScript ソースを書き換えるためのルール (Rules for Rewriting JavaScript Source)」セクションに追加します (まだ追加していない場合)。Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
ゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> Test for JavaScript DJS Functions <br> <script> menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location=\qhttp://abc.sesta.com\q")); //menu.addItem(new NavBarMenuItem("All Available Information","http://abc.sesta.com")); </script> </html>
<Function type="DJS" name="NavBarMenuItem" paramPatterns=",y"/> <Variable type="URL" name="top.location"/>
<html> Testing JavaScript DJS Functions <br> <script> menu.addItem(new NavBarMenuItem ("All Available Information","javaScript:top.location= \qgateway-URL/http://abc.sesta.com\q"));
abc.sesta.com はゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストのエントリです。したがって、リライタはこの URL を書き換える必要があります。ただし、これは絶対 URL であるため、Portal Server の URL をプレフィックスとして追加する必要はありません。DJS ルールは、DJS 関数 NavBarMenuItem の 2 番目のパラメータを書き換える必要があることを指定します。ただし、2 番目のパラメータは同じく JavaScript 変数です。2 番目のルールは、この変数の値を書き換える場合に必要となります。2 番目のルールは、JavaScript 変数 top.location の値を書き換える必要があることを指定します。これらのすべての条件に適合するため、URL が書き換えられます。
//menu.addItem(new NavBarMenuItem("All Available Information","http://abc.sesta.com"));
// DJS ルールは、関数 NavBarMenuItem の 2 番目のパラメータを書き換える必要があることを指定しますが、この文は書き換えられません。これはリライタが 2 番目のパラメータを HTML と認識しないためです。
</script> </html>
このサンプルには次の場所からアクセスできます。
portal-server-URL /rewriter/XML/attrib.html
このサンプルで指定されているルールを、default_gateway_ruleset の「XML ソースを書き換えるためのルール (Rules for Rewriting XML Source)」セクションに追加します (まだ追加していない場合)。
Portal Server 管理コンソールの「Portal Server 設定」のリライタサービスで default_gateway_ruleset を編集します。
ゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
<html> RW_START <body> <xml> <baseroot href="/root.html"/> </xml> <xml> <img href="image.html"/> </xml> <xml> <string href="1234|substring.html"/> </xml> <xml> <check href="1234|string.html"/> </xml> </body> RW_END </html>
<Attribute name="href" tag="check" valuePatterns="1234|"/>
<html> Rewriting starts <br> <br> <body> <xml><baseroot href="/root.html"/></xml> <xml><img href="image.html"/></xml> <xml><string href="1234|substring.html"/></xml> <xml><check href="1234|gateway-URL/portal-server-URL /rewriter/XML/string.html"/></xml>
// この文はルールで指定された条件と一致するため、書き換えられます。Attribute name は href、tag は check、valuePatterns は 1234 です。valuePatterns よりもあとの文字列は書き換えられます。valuePatterns の詳細については、「ルールでのパターンマッチングの使用」を参照してください。
</body> Rewriting ends </html>
ここでは、メールクライアントのソース HTML ページの例について説明します。このケーススタディーでは、考えられるすべての例やルールについて説明することはできません。これはあくまでも、イントラネットページにルールを適用するために使用するルールセットの例です。
このケーススタディーは、次のような前提で行います。
メールクライアントのベース URL は、abc.siroe.com とします。
ゲートウェイの URL は gateway.sesta.com とします。
ゲートウェイサービスの「ドメインとサブドメインのプロキシ」リストでエントリを関連付けます。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- saved from url=(0053)http://abc.siroe.com/mailclient/destin/?Cmd=navbar --> <HTML XMLNS:WM><HEAD> <META http-equiv=Content-Type content="text/html; CHARSET=utf-8"> <META http-equiv=Pragma content=no-cache> <META http-equiv=Expires content=0><!--Copyright (c) 2000 Microsoft Corporation. All rights reserved.--><!--CURRENT FILE== "IE5" "WIN32" navbar --> <STYLE>WM\\:DROPMENU { BEHAVIOR: url(http://abc.siroe.com/mailweb/controls/dropmenu.htc) } </STYLE> <LINK href="destin_files/navbar.css" type=text/css rel=stylesheet> <SCRIPT language=javascript> var g_szUserBase= "http://abc.siroe.com/mailclient/destin"+"/"; var g_szFolder= "."; var g_szVirtualRoot= "http://abc.siroe.com/mailweb"; var g_szImagePath= g_szVirtualRoot + "/img/"; </SCRIPT> <SCRIPT src="/destin_files/navbar.js"></SCRIPT> <META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD> <BODY oncontextmenu=return(event.ctrlKey); onselectstart=return(false); id=outbar_mainbody style="BACKGROUND-COLOR: appworkspace" leftMargin=0 topMargin=0 scroll=no> <TABLE class=nbTableMain id=nbTableMain style="HEIGHT: 100%" cellSpacing=0 cols=1 cellPadding=0 rows="2"> <TBODY> <TR> <TD class=treeBrand> <DIV class=treeOFLOW><IMG style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px" src="/destin_files/logo-ie5.gif" border=0></DIV></TD></TR> <TR height="100%"> <TD> <TABLE class=nbTable cellSpacing=0 cols=1 cellPadding=0 rows="4"> <TBODY> <TR> <TD class=nbFlybar id=show_navbar onkeydown=flybar_keydown() onclick=ToggleTab(this.id) tabIndex=0 noWrap> <DIV class=treeOFLOW>Shortcuts</DIV></TD></TR> <TR style="HEIGHT: 100%"> <TD id=idOutbarpane style="TEXT-ALIGN: center" vAlign=top><A id=inbox href="http://abc.siroe.com/mailclient/destin/Inbox/?Cmd=contents&Page=1" target=viewer alt="Go to inbox"><IMG class=nbImage alt="Go to inbox" src="destin_files/navbar-inbox.gif"></A> <DIV class=nbLabel>Inbox</DIV><BR><A id=calendar href="http://abc.siroe.com/mailclient/destin/Calendar/?Cmd=contents" target=viewer alt="Go to calendar"><IMG class=nbImage alt="Go to calendar" src="destin_files/navbar-calendar.gif"></A> <DIV class=nbLabel>Calendar</DIV><BR><A id=contacts href="http://abc.siroe.com/mailclient/destin/Contacts/?Cmd=contents" target=viewer alt="Go to contacts"><IMG class=nbImage alt="Go to contacts" src="destin_files/navbar-contacts.gif"></A> <DIV class=nbLabel>Contacts</DIV><BR><A id=options href="http://abc.siroe.com/mailclient/destin/?Cmd=options" target=viewer alt="Go to options"><IMG class=nbImage alt="Go to options" src="destin_files/navbar-options.gif"></A> <DIV class=nbLabel>Options</DIV></TD></TR> <TR style="HEIGHT: 1.5em"> <TD class=nbFlybar id=show_folders onkeydown=flybar_keydown() onclick=ToggleTab(this.id) tabIndex=0 noWrap> <DIV class=treeOFLOW>Folders</DIV></TD></TR> <TR> <TD class=nbTreeProgress id=treeProgress style="DISPLAY: none" vAlign=top noWrap><SPAN id=idLoading style="OVERFLOW: hidden">Loading...</SPAN> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE> </BODY></HTML>
「説明」は、サンプルルールセットとケーススタディーの間のマッピングを示しています。
表 4–3 サンプルルールセットとケーススタディーのマッピング
ルールセットを適用する優先順位は、ホスト名 - サブドメイン - ドメインです。
たとえば、「ドメインベースのルールセット」リストに次のエントリを指定していると仮定します。
sesta.com|ruleset1 eng.sesta.com|ruleset2 host1.eng.sesta.com|ruleset3
ruleset3 は host1 のすべてのページに適用されます。
ruleset2 は、host1 から取得されたページを除く eng サブドメインのすべてのページに適用されます。
ruleset1 は、eng サブドメインおよび host1 から取得されたページを除く、sesta.com ドメインのすべてのページに適用されます。
「保存」をクリックして終了します。
端末ウィンドウからゲートウェイを再起動します。
./psadmin start-sra-instance –u amadmin – f <password file> –N <profile name>– t <gateway> |
Secure Remote Access サーバーでは、Sun Java System Web Server および IBM アプリケーションサーバー上で、Outlook Web Access (OWA) から MS Exchange 2000 SP3 インストールおよび MS Exchange 2003 にアクセスする機能がサポートされます。
Portal Server 管理コンソールに管理者としてログインします。
「Secure Remote Access」タブを選択し、属性を設定するゲートウェイプロファイルを選択します。
「URI をルールセットにマップ」フィールドで、Exchange 2000 がインストールされているサーバー名を入力し、それに続けて Exchange 2000 Service Pack 4 OWA ルールセットを入力します。
次に例を示します。
exchange.domain.com|exchange_2000sp3_owa_ruleset. |
Exchange 側では、パブリックフォルダは NTLM 認証を使用するように設定されています。これは、HTTP 基本認証を使用するように変更する必要があります。
この変更を行うには、Exchange サーバーで「コントロールパネル」 > 「管理ツール」の順に選択し、「インターネットインフォメーションサービス」を開きます。
「既定の Web サイト」の下に、パブリックフォルダに関する「パブリック」というタブがあります。タブを右クリックし、プロパティーを選択します。「ディレクトリセキュリティー」タブをクリックします。「匿名アクセスと認証」コントロールパネルで「編集」を選択します。「基本認証」チェックボックスのみを選択し、ほかのすべてのチェックボックスの選択を解除します。
次の表は、Secure Remote Access サーバーのリライタルールと従来のリリースの Portal Server 製品とのマッピングを示しています。
表 4–4 SP3 のルールのマッピング
リライタ 6.0 の DTD 要素 |
リライタ 3.0 リストボックス名 |
---|---|
HTML コンテンツのルール | |
Attribute: URL |
HTML 属性の書き換え |
Attribute: DJS |
JavaScript を含む HTML 属性の書き換え |
Form |
フォーム入力タグリストの書き換え |
アプレット |
アプレット/オブジェクトパラメータ値リストの書き換え |
JavaScript コンテンツのルール | |
Variable: URL |
URL タイプの JavaScript 変数の書き換え |
Variable: EXPRESSION |
JavaScript 変数関数の書き換え |
Variable: DHTML |
HTML タイプの JavaScript 変数の書き換え |
Variable: DJS |
JavaScript タイプの JavaScript 変数の書き換え |
Variable: SYSTEM |
JavaScript システム変数の書き換え |
Function: URL |
JavaScript 関数パラメータの書き換え |
Function: EXPRESSION |
JavaScript 関数パラメータ関数の書き換え |
Function: DHTML |
HTML タイプの JavaScript 関数パラメータの書き換え |
Function: DJS |
JavaScript タイプの JavaScript 関数パラメータの書き換え |
XML コンテンツのルール | |
Attribute: URL |
XML ドキュメントの属性値の書き換え |
TagText |
XM1 ドキュメントのテキストデータの書き換え |
CSS コンテンツのルール | |
ルールは不要です。デフォルトでは、すべての URL が変換されます。 | |
WML コンテンツのルール | |
ルールは定義されていません。WML は HTML として処理され、HTML ルールが適用されます。 | |
WMLScript コンテンツのルール | |
WML スクリプトはサポートされていません。 |
この章では、ネットファイルおよびその操作について説明します。ネットファイルの設定については、第 14 章「ネットファイルの設定」を参照してください。
ネットファイルは、ユーザーがリモートのファイルシステムとディレクトリにアクセスして操作できるようにするファイルマネージャーアプリケーションです。
Secure Remote Access のネットファイルコンポーネントは、Java2 アプレットとして使用できます。Java2 アプレットのインタフェースは改善され、より使いやすくなっています。
ネットファイルの主な機能は次のとおりです。
共有ファイルやフォルダの追加または削除
ファイルのアップロードとダウンロード
ファイルとフォルダの検索
GZIP と ZIP によるファイル圧縮
ネットファイル環境内でのメール機能
現在のネットファイルセッション情報の保存
ファイルのドラッグ&ドロップ
ネットファイルでは FTP、NFS、および jCIFS (Microsoft Windows) の各プロトコルを使用してリモートシステムにアクセスできます。ネットファイルには、次のファイルアクセスプロトコル機能が含まれています。
サーバーが標準以外のポートで稼動していると、接続に失敗します。
ネットファイルでは、使用するファイルサーバーおよびプロトコルをユーザーが選択できます。
次に、それぞれのプロトコルについて、サポートされるプラットフォームを示します。
ファイルシステム/プロトコル |
プラットフォーム |
---|---|
FTP |
Novell Netware の Novell FTP 5.1 サーバー Windows NT 4.0 の MS FTP サーバー 4.0 Windows 2000 の MS FTP サーバー 5.0 Solaris FTP サーバー WU_FTP 2.6.1 ProFTPD 1.2.8 vsFTPd 1.2.0 |
NFS |
Solaris 2.6 以降 |
jCIFS |
Windows 95/98/NT/2000/ME/XP |
ネットファイルを使用して ProFTPD サーバーにファイルをアップロードするには、ProFTPD サーバーが稼動するホストの proftpd.conf ファイルで「AllowStoreRestart」を「on」に設定する必要があります。
Novell Netware は FTP サーバーを通じてのみサポートされ、ネイティブアクセスを通じてはサポートされません。
Microsoft Windows (SMB/CIFS) ファイルシステムにアクセスするには、Portal Server 上に jCIFS がインストールされている必要があります。jCIFS は、CIFS/SMB ネットワーキングプロトコルを実装するオープンソースのクライアントライブラリです。
Portal Server 管理コンソールに管理者としてログインします。
「Secure Remote Access」タブを選択し、「ネットファイル」タブを選択します。
「DN を選択」ドロップダウンボックスで、「組織」、「ロール」、または「ユーザー」を選択します。
ホストおよびサービスへのアクセスや拒否に関する権限を設定します。
「保存」をクリックします。
ゲートウェイを再起動します。
この章では、ユーザーのリモートデスクトップとイントラネット上のアプリケーションを実行しているサーバーとの間で、ネットレットを使用してアプリケーションを安全に実行する方法について説明します。ネットレットの設定については、第 11 章「ネットレットの設定」を参照してください。
この章で説明する内容は次のとおりです。
Sun Java System Portal Server のユーザーが、一般的なアプリケーションや企業専用のアプリケーションをリモートデスクトップで安全に実行できると便利な場合があります。プラットフォームにネットレットを設定すると、このようなアプリケーションに安全にアクセスできるようになります。
ネットレットを使用することで、インターネットなどのセキュリティーの弱いネットワークで一般的な TCP/IP サービスを安全に実行できます。TCP/IP アプリケーション (Telnet や SMTP など)、HTTP アプリケーション、同じポートを使用するすべてのアプリケーションを実行できます。
アプリケーションが TCP/IP ベースであるか同じポートを使用する場合、ネットレットを介してアプリケーションを実行できます。
ダイナミックポートは、FTP を使用する場合にだけサポートされます。Microsoft Exchange を使用する場合は、OWA (Outlook Web Access) を使用します。
ネットレットアプレットを使用する場合は、ブラウザのポップアップブロッカを無効にするようにユーザーに通知してください。
「ネットレットのコンポーネント」は、ネットレットで使用される各種コンポーネントを示しています。
これはネットレットアプレットが待機するクライアントマシン上のポートです。クライアントマシンは localhost です。
ネットレットアプレットは、リモートクライアントマシンと、Telnet、Graphon、Citrix などのイントラネットアプリケーションの間で、暗号化された TCP/IP トンネルの設定を担当します。アプレットはパケットを暗号化してゲートウェイに送信し、ゲートウェイからの応答パケットを解読してローカルアプリケーションに送信します。
スタティックルールの場合、ネットレットアプレットは、ユーザーがポータルにログインすると自動的にダウンロードされます。ダイナミックルールの場合、ダイナミックルールに対応するリンクをユーザーがクリックしたときにアプレットがダウンロードされます。スタティックルールとダイナミックルールの詳細については、「ルールのタイプ」を参照してください。
Sun Ray 環境でのネットレットの実行については、「Sun Ray 環境でのネットレットの実行」を参照してください。
ネットレットルールでは、クライアントマシンで実行する必要のあるアプリケーションが、対応する接続先ホストにマッピングされます。つまりネットレットは、ネットレットルールに定義されたポートに送信されたパケットに対してだけ動作します。これにより、セキュリティーが向上します。
管理者はネットレットの機能に対して特定のルールを設定する必要があります。これらのルールによって、使用される暗号化方式や、呼び出す URL、ダウンロードするアプレット、接続先ポート、接続先ホストなどの詳細が指定されます。クライアントマシン上のユーザーがネットレットを通じて要求を行う場合、これらのルールに基づいて接続の確立方法がすみやかに決定されます。詳細については、「ネットレットルールの定義」を参照してください。
これはネットレットの UI コンポーネントです。プロバイダを使用することで、Portal Server のデスクトップから必要なアプリケーションを設定できます。プロバイダにリンクが作成され、ユーザーはこのリンクをクリックして必要なアプリケーションを実行します。また、デスクトップネットレットプロバイダで、ダイナミックルールの接続先ホストを指定できます。「ネットレットルールの定義」を参照してください。
ゲートウェイは、リモートクライアントマシンとゲートウェイ間のセキュリティー保護されたトンネルを保証します。ネットレットプロキシの使用は任意です。インストール時にこのプロキシをインストールしない選択も可能です。ネットレットプロキシについては、「ネットレットプロキシの使用」を参照してください。
ネットレット使用時には、次の一連のイベントが行われます。
リモートユーザーが Portal Server デスクトップにログインします。
ユーザー、ロール、または組織にスタティックネットレットルールが定義されている場合は、リモートクライアントにネットレットアプレットが自動的にダウンロードされます。
ユーザー、ロール、または組織にダイナミックルールが定義されている場合は、ネットレットプロバイダに必要なアプリケーションを手動で設定する必要があります。ネットレットアプレットは、ユーザーがネットレットプロバイダのアプリケーションリンクをクリックしたときにダウンロードされます。スタティックルールとダイナミックルールの詳細については、「ネットレットルールの定義」を参照してください。
ネットレットはネットレットルールで定義されたローカルポートで待機します。
ネットレットはリモートクライアントとホストの間で、ネットレットルールで指定されたポートを使用するチャネルを確立します。
ネットレットが異なる組織間のさまざまなユーザーの要求に合わせて機能するには、次の手順を実行する必要があります。
ユーザー要件に基づいて、スタティックルールとダイナミックルールのどちらを作成するかを決定します。「ルールのタイプ」を参照してください。
Portal Server 管理コンソールから、ネットレットサービスのオプションを設定します。ネットレットの設定については、第 11 章「ネットレットの設定」を参照してください。
ルールの基準を組織、ロール、ユーザーから選択し、各レベルで必要に応じて修正します。組織、ロール、およびユーザーの詳細については、『Portal Server 管理ガイド』を参照してください。
srapNetletServlet.properties ファイルのフレームセットパラメータの値に、英語以外の言語は使用しないでください。
URL から返されたページに、リモートマシンから取得する必要があるアプレットが埋め込まれていることがあります。ただし、Java のセキュリティーによって、アプレットがそのアプレットのダウンロード元以外のホストと通信することは許可されていません。アプレットがローカルネットワークポートを使用してゲートウェイと通信できるようにするには、Access Manager 管理コンソールの「アプレットのダウンロード」フィールドを確認し、次の構文を指定する必要があります。
local-port:server-host:server-port
各表記の意味は次のとおりです。
local-port はローカルポートです。ネットレットは、アプレットから送信されるトラフィックをここで待機します。
server-host は、アプレットのダウンロード元です。
server-port は、アプレットのダウンロードに使用されるポートです。
ネットレットの設定はネットレットルールによって定義されます。このルールは、Portal Server 管理コンソールの「Secure Remote Access」設定タブを使用して設定されます。ネットレットルールは組織、ロール、またはユーザーのいずれかに対して設定できます。ネットレットルールをロールまたはユーザーに対して定義したときは、組織を選択してから目的のロールまたはユーザーを選択します。
ネットレットルールはマルチバイトエントリをサポートしません。ネットレットルールのどのフィールドにもマルチバイト文字を指定しないでください。
ネットレットルールには 64000 を超えるポート番号を指定できません。
「ネットレットルールの定義」は、ネットレットルールのフィールドを示しています。
表 6–1 ネットレットルールのフィールド
パラメータ |
説明 |
値 |
---|---|---|
ルール名 |
このネットレットルールの名前を指定します。各ルールに一意の名前を指定する必要があります。これは、特定のルールへのアクセスを定義する場合に便利です。 | |
暗号化方式 |
暗号化方式を定義するか、ユーザーが選択できる方式のリストを指定します。 |
選択した暗号化方式は、ネットレットプロバイダにリスト表示されます。ユーザーは必要な暗号化方式をリストから選択できます。 デフォルト: ネットレット管理コンソールで指定するデフォルト VM ネイティブ暗号化方式と、デフォルト Java プラグイン暗号化方式。 |
リモートアプリケーションの URL |
URL ユーザーがネットレットプロバイダのリンクをクリックしたときにブラウザで開かれる URL を指定します。ブラウザにはアプリケーションのウィンドウが表示され、ルールによって指定されたローカルポート番号で localhost に接続します。 相対 URL を指定する必要があります。 |
ネットレットルールによって呼び出されるアプリケーションへの URL。たとえば、telnet://localhost:30000 などです。 アプリケーションの呼び出しにアプレットが必要な場合は、その URL を指定します。 null : 指定した URL によってアプリケーションが起動されない、またはデスクトップで制御されない場合に設定する値。通常は Web ベース以外のアプリケーションで使用されます。 |
ダウンロードアプレットの有効化 |
このルールでアプレットのダウンロードが必要であるかどうかを指定します。 |
|
拡張セッションを有効 |
ネットレットがアクティブの場合、Portal Server セッションのアイドル時間のタイムアウトを制御します。 |
ネットレットだけがアクティブで、ほかのポータルアプリケーションがアイドル状態の場合にポータルセッションを持続する場合は、このチェックボックスにチェックマークを付けます。デフォルトでは、このオプションは選択されていません。 |
ローカルポートと宛先サーバーポートのマップ |
ローカルポート |
ネットレットが待機するクライアントのポート。 local-port の値は一意である必要があります。特定のポート番号を複数のルールに指定することはできません。 複数のローカルポートを指定するのは、複数の接続に複数のホストを指定している場合です。構文については、「複数ホスト接続のスタティックルール」を参照してください。 FTP ルールでは、ローカルポートは 30021 である必要があります。 |
接続先ホスト |
ネットレットが待機するクライアントのポート。 ネットレット接続の受信者。 host : ネットレット接続を受信するホスト名。これはスタティックルールで使用されます。siroe などの簡易ホスト名、または siroe.mycompany.com などの完全修飾 DNS 形式のホスト名を指定します。次の場合に複数のホストを指定します。 local-port の値は一意である必要があります。特定のポート番号を複数のルールに指定することはできません。 複数のローカルポートを指定するのは、複数の接続に複数のホストを指定している場合です。構文については、「複数ホスト接続のスタティックルール」を参照してください。 FTP ルールでは、ローカルポートは 30021 である必要があります。 指定された各ホストとの接続を確立する場合。指定された各ホストに対して、対応するクライアントと接続先ポートを指定する必要があります。構文については、「複数ホスト接続のスタティックルール」を参照してください。 指定されたホストのリストから、使用可能なホストへの接続を試みる場合。構文については、「複数ホストを選択するスタティックルール」を参照してください。 TARGET : 構文で TARGET を指定するルールはダイナミックルールです。TARGET は、デスクトップのネットレットプロバイダで、必要な接続先ホストをユーザーが 1 つ以上指定できることを示します。 1 つのルールでスタティックホストと TARGET を組み合わせることはできません。 |
|
接続先ポート |
接続先ホスト上のポート。 ホストと接続先ホストのほかに、接続先ポートを指定する必要があります。 複数の接続先ホストがある場合は、複数の接続先ポートを指定できます。複数のポートは、port1+port2+port3-port4+port5 のように指定します。 ポート番号間のプラス (+) 記号は、単一の接続先ホストに対する代替ポートを表します。 異なる接続先ホストのポート番号を区切るときは、区切り文字としてポート番号間にマイナス (-) 記号を挿入します。 この例では、ネットレットは port1、port2、および port3 を順番に使用して、指定された最初の接続先ホストへの接続を試みます。これに失敗した場合、ネットレットは port4 と port5 をこの順序で使用して 2 番目のホストへの接続を試みます。 複数のポートは、スタティックルールでのみ設定できます。 |
ゲートウェイが Portal Server からセッション通知を受け取るようにするには、次の情報を
com.iplanet.am.jassproxy.trustAllServerCerts=true
Portal Server 上の次のプロパティーファイルに追加します。
/etc/opt/SUNWam/config/AMConfig.instance-name .properties
ルールで接続先ホストがどのように指定されているかにより、ネットレットルールは 2 つのタイプに分かれます。
スタティックルールは、ルールの一部として接続先ホストを指定します。スタティックルールを作成する場合、ユーザーは必要な接続先ホストを指定することができません。次の例では、sesta は接続先ホストです。
ルール名 |
暗号化方式 |
URL |
ダウンロードアプレットの有効化 |
拡張セッションを有効 |
ローカルポートと宛先サーバーポートのマップ |
---|---|---|---|---|---|
ftpstatic |
SSL_RSA_WITH_RC 4_128_MD5 |
null |
false |
true |
|
複数の接続先ホストおよびポートを設定できるのは、スタティックルールだけです。設定例については、「複数ホスト接続のスタティックルール」を参照してください。
ダイナミックルールでは、接続先ホストはルールの一部として指定されません。ユーザーはネットレットプロバイダで必要な接続先ホストを指定できます。次の例では、TARGET は接続先ホストの可変部分です。
暗号化方式に基づいて、ネットレットルールはさらに次のように分類されます。
ユーザー設定可能な暗号化ルール: このルールでは、ユーザーが選択できる暗号化方式のリストを指定できます。これらのオプション暗号化方式は、ネットレットプロバイダにリスト表示されます。ユーザーは必要な暗号化方式をリストから選択できます。次の例では、ユーザーは複数の暗号化方式を選択できます。
Portal Server ではさまざまな暗号化方式が有効になっている場合がありますが、ユーザーが選択できる暗号化方式は、ネットレットルールの一部として設定されている方式だけです。
ネットレットでサポートされる暗号化方式のリストについては、「サポートされる暗号化方式」を参照してください。
管理者設定暗号化方式ルール: このルールでは、暗号化方式は ネットレットルールの一部として定義されます。ユーザーは必要な暗号化方式を選択できません。次の例では、暗号化方式は SSL_RSA_WITH_RC4_128_MD5 に設定されています。
ルール名 |
暗号化方式 |
リモートアプリケーションの URL |
ダウンロードアプレットの有効化 |
拡張セッションを有効 |
ローカルポートと宛先サーバーポートのマップ |
---|---|---|---|---|---|
Telnet |
SSL_RSA_WITH_RC4_128_MD5 |
null |
チェックボックスにチェックマークを付ける |
チェックボックスにチェックマークを付ける |
|
ネットレットでサポートされる暗号化方式のリストについては、「サポートされる暗号化方式」を参照してください。
「サポートされる暗号化方式」は、ネットレットでサポートされる暗号化方式のリストを示しています。
表 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 プラグイン暗号化方式 |
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 は、ネットレットルールの一部として暗号化方式をサポートしていません。暗号化方式を使用せずに既存のルールと下位互換を行うには、ルールでデフォルトの暗号化方式を指定します。暗号化方式を使用しない既存のルールは、次のとおりです。
ルール名 |
暗号化方式 |
リモートアプリケーションの URL |
ダウンロードアプレットの有効化 |
拡張セッションを有効 |
ローカルポートと宛先サーバーポートのマップ |
---|---|---|---|---|---|
Telnet |
telnet://localhost:30000 |
チェックボックスにチェックマークを付けない |
チェックボックスにチェックマークを付ける |
|
これは次のように解釈されます。
これは、管理者設定ルールでデフォルトとして選択した「暗号化方式」フィールドと同じです。
ネットレットルールには 64000 を超えるポート番号を指定できません。
ここでは、ネットレットルールの例をいくつか示し、ネットレット構文がどのように機能するかについて説明します。
このルールは、クライアントマシンから sesta への Telnet 接続をサポートします。
ルール名 |
暗号化方式 |
リモートアプリケーションの URL |
アプレットのダウンロード |
拡張セッション |
ローカルポートと宛先サーバーポートのマップ |
---|---|---|---|---|---|
myrule |
SSL_RSA_WITH_RC4_128_MD5 |
null |
チェックボックスにチェックマークを付けない |
true |
|
各表記の意味は次のとおりです。
myrule はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
null は、このアプリケーションが URL で呼び出されない、またはデスクトップから実行できないことを示します。
false は、クライアントがこのアプリケーションを実行するためにアプレットをダウンロードしないことを示します。
true は、ネットレット接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
1111 は、ネットレットが接続先ホストからの接続要求を待機するクライアント側のポートです。
sesta は Telnet 接続の受信側ホストの名前です。
23 は接続先ホストの接続用ポート番号です。この例では、既知の Telnet ポートです。
デスクトップネットレットプロバイダにはリンクが表示されませんが、ネットレットは指定されたポート (1111) で自動的に起動して待機します。クライアントソフトウェア、この場合はポート 1111 で localhost に接続した Telnet セッションを開始するようにユーザーに指示してください。
たとえば、Telnet セッションを開始するには、クライアントは端末の UNIX コマンド行で次のコマンドを入力する必要があります。
telnet localhost 1111 |
このルールは、クライアントマシンから 2 台のマシン sesta および siroe への Telnet 接続をサポートします。
各表記の意味は次のとおりです。
23 は接続先ホストの接続用ポート番号、つまり、Telnet の予約ポートです。
1111 は、ネットレットが最初の接続先ホスト siroe からの接続要求を待機するクライアント側のポートです。
1234 は、ネットレットが 2 番目の接続先ホスト siroe からの接続要求を待機するクライアント側のポートです。
このルールの最初の 6 つのフィールドは、「基本的なスタティックルール」と同じです。2 番目の接続先ホストを識別するためのフィールドが 3 つ追加されている点が異なります。
ルールにターゲットを追加するときは、新しい接続先ホストごとに、local port、destination host、destination port の 3 つのフィールドを追加する必要があります。
各接続先ホストへの接続を、3 つのフィールドのセットを使って記述することができます。2048 未満の待機ポート番号は、UNIX ベースのリモートクライアントでは使用できません。UNIX は下位数値のポートに制約され、root でリスナーを開始する必要があるためです。
このルールは前述のルールと同様に機能します。ネットレットプロバイダはリンクを表示しませんが、ネットレットは指定された 2 つのポート (1111 と 1234) で自動的に起動して待機します。ユーザーはクライアントソフトウェア、この場合は、ホストに接続するために localhost のポート 1111 に対して Telnet セッションを、2 番目のホストに接続するには、localhost のポート 1234 に対して Telnet セッションを開始する必要があります。
このルールは、複数の代替ホストを指定する場合に使用します。ルールの最初のホストへの接続に失敗した場合、ネットレットは 2 番目に指定されたホストへの接続を試み、成功するまで指定の順に代替ホストへの接続を試みます。
各表記の意味は次のとおりです。
10491 は、ネットレットが接続先ホストからの接続要求を待機するクライアント側のポートです。
ネットレットはポート 35、ポート 26、ポート 491 の順に使用可能なポートにアクセスし、siroe との接続を確立しようと試みます。
siroe との接続が確立できない場合、ネットレットはポート 35、491 の順序で sesta への接続を試みます。
ホスト間のプラス (+) 記号は代替ホストを表します。
ポート番号間のプラス (+) 記号は、単一の接続先ホストに対する代替ポートを表します。
異なる接続先ホストのポート番号を区切るときは、区切り文字としてポート番号間にマイナス (-) 記号を挿入します。
指定された一連のホストへの接続が順次に試行されます。たとえば、siroe+sesta が指定されたルールの場合、最初に siroe への接続が試行されます。この接続に失敗すると、次に sesta への接続が試行されます。ルール内で最初にリストされたホストがアクティブネットワーク内で物理的に使用できない場合、ルール内の使用不能ホストの数が多いほど、次の使用可能ホストへの接続にかかる時間が長くなります。
このルールを使用することで、目的の接続先ホストを設定できるため、ネットレットを使用してさまざまなホストへの Telnet 接続を確立できます。
各表記の意味は次のとおりです。
myrule はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
telnet://localhost:30000 はルールで呼び出される URL です。
false はアプレットがダウンロードされないことを示します。
true は、ネットレット接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
30000 は、ネットレットがこのルールの接続要求を待機するクライアント上のポートです。
TARGET は、ユーザーがネットレットプロバイダを使用して接続先ホストを設定する必要があることを示します。
23 はネットレットで開かれる接続先ホストのポートです。この例では、既知の Telnet ポートです。
このルールを追加したあとに、ユーザーはネットレットを目的どおりに稼動させるためにいくつかの手順を実行しなければなりません。ユーザーはクライアント側で次の操作を実行する必要があります。
標準の Portal Server デスクトップのネットレットプロバイダセクションで、「編集」をクリックします。
新しいネットレットルールが、「新しいターゲットの追加」セクションの「ルール名」に表示されます。
ルール名を選択し、接続先ホスト名を入力します。
変更を保存します。
デスクトップに戻ります。デスクトップのネットレットプロバイダセクションに新しいリンクが表示されます。
新しいリンクをクリックします。
新しいブラウザが起動し、ネットレットルールで指定した URL が表示されます。
同じルールに複数の接続先ホストを追加する場合は、この手順を繰り返します。選択された最後のリンクのみがアクティブです。
このルールは、ダイナミックに割り当てられたホストとクライアント間の接続を定義します。このルールにより、アプレットのあるサーバーからクライアントに GO-Joe アプレットがダウンロードされます。
各表記の意味は次のとおりです。
gojoe はルール名です。
SSL_RSA_WITH_RC4_128_MD5 は、適用される暗号化方式を示します。
/gojoe.html は、たとえば、アプレットを含む HTML ページのパスや、ポータルが配備されている Web コンテナのドキュメントルートへの相対パスです。
8000:gojoeserver:8080 は、クライアントでアプレットを受け取る接続先ポートがポート 8000 であることを示します。gojoeserve はアプレットを送るサーバー名、8080 はアプレットのダウンロード元のサーバー上のポートです。
Extended Session (true) は、ネットレット接続がアクティブになっても、Portal Server がタイムアウトにならないことを示します。
3399 は、ネットレットがこのタイプの接続要求を待機するクライアント上のポートです。
TARGET は、ユーザーがネットレットプロバイダを使用して接続先ホストを設定する必要があることを示します。
58 はネットレットで開かれる接続先サーバーのポートです。この例では、GoJoe のポートです。ポート 58 は接続先ホストが自分のトラフィックを待機するポートです。ネットレットは新しいアプレットの情報をこのポートに渡します。
「ネットレットルールの例」は、いくつかの一般的なアプリケーションのネットレットルールの例を示しています。
この表には、ネットレットルールごとに 7 項目あり、それぞれ、「ルール名」、「リモートアプリケーションの URL」、「ダウンロードアプレットの有効化」、「ローカルポート」、「接続先ホスト」、「接続先ポート」の各フィールドに対応しています。最後の列は、ルールの説明を示します。
「ネットレットルールの例」には、ネットレットルールの暗号化方式および拡張セッションのフィールドは示されていません。それぞれが「SSL_RSA_WITH_RC4_128_MD5」および「true」に設定されていることを前提としています。
ネットレットアプレットまたは jws のクライアント側ログは、クライアントの Java コンソールに表示されます。
ネットレットのサーバー側ログは、/var/opt/SUNWportal/portals/<portal_ID>/logs/<INSTANCE_ID> ディレクトリの下にある portal.0.0.log ファイルに表示されます。
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++; } // クエリー文字列に最後の keypairs[] データとして残されている内容を格納します。 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); // 英数字以外のエスケープを解除します。 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>