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>