Sun logo      이전      목차      색인      다음     

Sun ONE Portal Server, Secure Remote Access 6.2 관리자 설명서

3 장
Rewriter

이 장에서는 Rewriter 규칙을 정의하는 방법과 Sun™ ONE Portal Server 관리 콘솔에서 이를 구성하는 방법에 대해 설명합니다.

다음 주제를 다룹니다.


Rewriter 개요

Secure Remote Access의 Rewriter 구성 요소를 통해 최종 사용자가 게이트웨이를 가리키도록 웹 페이지의 URI (Uniform Resource Identifier)를 수정하여 인트라넷을 찾아볼 수 있습니다. URI는 등록된 이름 공간에서 이름을 캡슐화하여 여기에 이름 공간으로 이름을 붙이는 방법을 정의합니다. 가장 일반적인 URI 형태는 URL (Uniform Resource Locator)입니다. URL은 http, ftp, mailto, file 및 news와 같은 다양한 프로토콜을 가질 수 있습니다.

RFC-1738에 규정되어 있으며 HTTP 또는 HTTPS의 프로토콜을 갖는 모든 표준 URL은 Rewriter에 의해 인식되거나 다시 작성됩니다. 프로토콜은 대소문자를 구별하지 않습니다. 예를 들어 hTtP, HTtp 및 httP 모두 올바른 표현입니다. 다음은 URL의 몇 가지 예입니다.

http://www.my.work.com/

http://www.w3.org:8000/imaginary/test

http://www.myu.edu/org/admin/people#andy

http://info.my.org/AboutUs/Index/Phonebook?dobbins

http://www.w3.org/RDB/EMP?where%20name%3Ddobbins

http://info.my.org/AboutUs/Phonebook

http://user:password@abc.com

Rewriter는 Internet Explore와 Netscape에서 지원하는 일부 기본적인 표준 이외 URL의 재작성도 지원합니다. 표준 이외 URL을 표준 형식으로 변환할 때 필요한 정보는 URL이 표시되는 페이지의 기본 URL에서 가져옵니다. 이 정보에는 다음이 포함됩니다.

Rewriter는 상대 URL의 일부일 때만 백슬래시를 지원합니다.

예:

http://abc.sesta.com\index.html은 다시 작성됩니다.

다음 URL은 다시 작성되지 않습니다.

http:\\abc.sesta.com.

http:/abc.com


Rewriter 사용 시나리오

사용자가 게이트웨이를 통해 인트라넷 웹 페이지에 액세스하려고 할 때 Rewriter가 웹 페이지를 사용할 수 있도록 해줍니다. 다음 구성 요소가 Rewriter를 사용합니다.

URLScraper

URL Scraper 제공자는 구성된 URI에서 컨텐트를 가져와 브라우저로 보내기 전에 모든 상대 URI를 절대 URI로 확장합니다.

예를 들어, 사용자가 다음과 같은 컨텐트를 가진 사이트에 액세스하려고 하는 경우

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

Rewriter는 이를 다음과 같이 변환합니다.

<a href="http://yahoo.com/mypage.html">

여기서 http://yahoo.com/test/는 페이지의 기본 URL입니다.

URLScraper 제공자에 대한 자세한 내용은 Sun ONE Portal Server Administrator’s Guide를 참조하십시오.

게이트웨이

게이트웨이는 인터넷 포털에서 컨텐트를 가져와 이를 브라우저로 보내기 전에 브라우저로부터의 이후 URI 요청이 게이트웨이로 올 수 있도록 기존 URI 앞에 게이트웨이 URI 부분을 덧붙입니다.

예를 들어, 다음과 같은 컨텐트를 갖는 인터넷 컴퓨터의 HTML 페이지에 액세스하려고 하는 사용자에 대해

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

Rewriter는 이 URL에 다음과 같이 게이트웨이에 대한 참조를 갖는 URL 이름을 앞에 붙입니다.

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

사용자가 이 앵커와 관련된 링크를 클릭하면 브라우저가 게이트웨이에 접속합니다. 게이트웨이는 mymachine.intranet.com으로부터 mypage.html의 컨텐트를 가져옵니다.

게이트웨이는 가져온 웹 페이지에서 다시 작성할 요소를 결정하기 위해 몇 가지 규칙을 사용합니다.


규칙 집합 작성

[서비스 구성] 탭의 [Portal Server 구성] 부분에서 규칙 집합을 정의합니다.

규칙 집합에 대한 자세한 내용은 Sun ONE Portal Server Administrator’s Guide를 참조하십시오. 새 규칙 집합을 만든 후 필요한 규칙을 정의해야 합니다.

이 부분에서는 다음 주제를 다룹니다.

공용 인터페이스(규칙 집합 DTD)

<?xml version="1.0" encoding="UTF-8"?>

<!--

다음 제한은 DTD에서 표시되지 않지만 프로그래밍에서 고려됩니다.

1. 규칙에서 모든 필수 속성은 "*"일 수 없습니다.

2. 아래 요소의 한 인스턴스만 허용되며 순서는 상관 없습니다.

  1)HTMLRules

  2)JSRules

  3)XMLRules

3. 아이디는 항상 소문자여야 합니다.

-->

<!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 로그 파일에 메시지가 기록됩니다. 이 로그 파일에 대한 내용은 "디버깅 파일 이름"을 참조하십시오.


예제 XML DTD

이 부분에는 예제 규칙 집합이 들어 있습니다. 140 페이지의 "사례 연구"를 통해 Rewriter에서 이러한 규칙을 어떻게 해석하는지 살펴보십시오.

<?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 컨텐트에 대한 규칙

웹 페이지의 HTML 컨텐트는 속성, 폼 및 애플릿으로 더욱 세분할 수 있습니다. 이에 따라 HTML 컨텐트에 대한 규칙은 다음과 같이 분류됩니다.

HTML 컨텐트에 대한 속성 규칙

이 규칙은 값을 다시 써야 하는 대상 태그의 속성을 확인합니다. 속성 값은 단순한 URL, JavaScript 또는 DHTML 컨텐트일 수 있습니다. 예:

이 부분은 다음으로 세분됩니다.

속성 규칙 구문

<Attribute name="attributeName" [tag="*" valuePatterns="" source="*" type="URL|DHTML|DJS"]/>

여기서

attributeName은 속성의 이름입니다(필수).

tag는 속성이 속하는 태그입니다(옵션, 기본값 * , 모든 태그를 의미).

valuePatterns "규칙에서 패턴 매칭 사용"을 참조하십시오.

source는 이 속성이 정의되는 페이지의 URI를 지정합니다(옵션, 기본값 * , 모든 페이지를 의미)

type은 값의 유형을 지정합니다(옵션). 다음이 가능합니다.

속성 규칙 예제

페이지의 기본 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 앞에 덧붙여집니다.

DJS 속성 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/focus.html

페이지 컨텐트

<폼>

<input TYPE=TEXT SIZE=20 value=focus onClick="Check('/focus.html','focus');return;">

</Form>

규칙

<Attribute name="onClick" type="DJS"/>

<Function type="URL" name="Check" paramPatterns="y,"/>

결과

<폼>

<INPUT TYPE=TEXT SIZE=20 value=focus onClick="Check('gateway-URL/http://abc.sesta.com/focus.html','focus');return;">

</Form>

설명

지정된 페이지 컨텐트를 다시 쓰기 위해 두 가지 규칙이 필요합니다. 첫 번째 규칙은 onClick JavaScript 토큰을 확인합니다. 두 번째 규칙은 다시 작성되어야 하는 check 함수의 매개 변수를 확인합니다. 이 경우에, paramPatterns가 첫 번째 매개 변수 자리에 y 값을 갖기 때문에 첫 번째 매개 변수만 다시 쓰여집니다.

게이트웨이 URL과 JavaScript 토큰이 나타나는 페이지의 기본 URL이 필요한 매개 변수 앞에 덧붙여집니다.

HTML 컨텐트에 대한 폼 규칙

사용자가 찾아보는 HTML 페이지에는 폼이 있을 수 있습니다. 일부 폼 요소는 URL을 값으로 취할 수 있습니다.

이 부분은 다음으로 세분됩니다.

폼 규칙 구문

<Form name="form1" field="visit" [valuePatterns="" source="*"]/>

여기서

name은 폼의 이름입니다(필수).

field는 값을 다시 작성해야 하는 폼의 필드입니다(필수).

valuePatterns "규칙에서 패턴 매칭 사용"을 참조하십시오.

source는 이 폼 정의가 있는 html 페이지의 URL입니다(옵션, 기본값 *, 모든 페이지를 의미).

폼 규칙 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://test.siroe.com/testcases/html/form.html

페이지 컨텐트

페이지 URI가 form.html이고 서버의 루트 디렉토리에 있다고 가정합니다.

<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을 앞에 덧붙여 다시 작성됩니다. "규칙에서 패턴 매칭 사용"을 참조하십시오.

HTML 컨텐트에 대한 애플릿 규칙

단일 웹 페이지에 많은 애플릿이 있을 수 있고 각 애플릿에는 많은 매개 변수가 있을 수 있습니다. Rewriter는 규칙에 지정된 값을 애플릿의 HTML 정의와 매칭시키고 애플릿 매개 변수 정의의 일부로 존재하는 URL 값을 수정합니다. 이러한 교체는 사용자가 특정 웹 페이지를 찾아볼 때가 아니라 서버에서 이루어집니다. 이 규칙은 HTML 컨텐트의 개체 태그 및 애플릿 모두에서 매개 변수를 찾아 다시 작성합니다.

이 부분은 다음으로 세분됩니다.

애플릿 규칙 구문

<Applet code="ApplicationClassName/ObjectID" param="parametername" [valuePatterns="" source="*"] />

여기서

code는 애플릿 또는 개체 클래스의 이름입니다(필수).

param은 값을 다시 작성해야 하는 매개 변수의 이름입니다(필수).

valuePatterns "규칙에서 패턴 매칭 사용"을 참조하십시오.

source는 애플릿 정의가 있는 페이지의 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>

설명

<Attribute name="codebase"/>가 default_gateway_ruleset에서 정의된 규칙이기 때문에 codebase attribute는 다시 작성됩니다.

이름이 Test로 시작되는 모든 매개 변수는 다시 작성됩니다. 애플릿 코드가 표시되는 페이지의 기본 URL과 게이트웨이 URL이 값 params 태그, value 속성 앞에 덧붙습니다.

규칙에서 패턴 매칭 사용

valuePatterns 필드를 사용하여 패턴 매칭을 수행하고 다시 써야 하는 구문의 특정 부분을 확인할 수 있습니다.

규칙의 일부로 valuePatterns를 지정했다면 매칭된 패턴 이후의 모든 컨텐트는 다시 작성됩니다.

아래 예제 폼 규칙을 생각해봅시다.

<Form source="*/source.html" name="form1" field="visit" [valuePatterns="0|1234|"]/>

여기서

source는 폼이 표시되는 html 페이지의 URL입니다.

name은 폼의 이름입니다.

field는 값을 다시 써야 하는 폼의 필드입니다.

valuePatterns는 다시 써야 하는 문자열 부분을 나타냅니다. valuePatterns 이후에 나타나는 모든 컨텐트는 다시 작성됩니다(옵션, 기본값 ""는 전체 값을 다시 써야 함을 나타냄). "규칙에서 패턴 매칭 사용"을 참조하십시오.

valuePatterns에서 와일드카드 사용

* 문자를 사용하여 다시 쓰기를 위한 패턴 매칭을 수행할 수 있습니다.

valuePatterns 필드에 단순히 *만 지정할 수는 없습니다. *는 모든 요소와의 일치를 나타내기 때문에 valuePattern 이후에 아무 것도 없으며 따라서 Rewriter가 다시 작성할 것이 없습니다. *를 *abc와 같이 또 다른 문자열과 연결하여 사용할 수 있습니다. 이 경우에 *abc 이후의 모든 컨텐트가 다시 작성됩니다.


참고

별표(*)는 규칙의 어떤 필드에서나 와일드카드로 사용할 수 있습니다. 그러나 규칙의 모든 필드에 *를 포함시킬 수는 없습니다. 모든 필드에 *가 있으면 규칙이 무시됩니다. 오류 메시지는 표시되지 않습니다.


원본 구문에서 여러 필드를 구별하기 위해 표시되는 구분 문자와 함께 * 또는 **를 사용할 수 있습니다. 하나의 와일드카드(*)는 다시 작성되지 않을 모든 필드와 매칭되며 두 개의 와일드카드(**)는 다시 작성해야 하는 모든 필드와 매칭됩니다.

표 3-1 에 * 와일드카드 사용의 몇 가지 실례를 나타내었습니다. 이 표에는 3개의 열이 있습니다. 첫 번째 열에는 다시 작성해야 하는 예제 구문이 있습니다. 두 번째 열에는 예제 valuePatterns 값이 있습니다. 세 번째 열은 다시 쓰기를 설정합니다.

표 3-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 컨텐트에 대한 규칙

JavaScript에는 다양한 위치에 URL이 있을 수 있습니다. Rewriter는 JavaScript를 직접 구문 분석하여 URL 부분을 확인할 수 없습니다. 특별한 규칙 집합을 작성하여 JavaScript 처리기가 URL을 확인하여 변환하도록 합니다.

URL 유형을 가진 JavaScript 요소는 다음으로 분류됩니다.

변수

일반 구문

<Variable name="variableName" [type="URL|EXPRESSION|DHTML|DJS|SYSTEM" source="*"]>

JavaScript 변수는 가지고 있는 값의 유형에 따라 5가지 범주로 더욱 세분할 수 있습니다.

URL 변수

변수 값이 URL로 취급할 수 있는 단순한 문자열입니다.

이 부분은 다음으로 세분됩니다.

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 imgsrc2=imgsrc1;

//-->

</SCRIPT>

설명

유형이 URL이고 이름이 imgsrc로 시작되는 모든 변수가 다시 작성됩니다. 결과의 첫 라인에서 게이트웨이 URL과 변수가 표시되는 페이지의 기본 URL이 앞에 덧붙습니다. 두 번째 라인에는 이미 절대 경로가 있기 때문에 게이트웨이 URL만 덧붙습니다. 세 번째 var imagsrc2는 그 값이 문자열이 아니라 또 다른 JavaScript 값이기 때문에 다시 작성되지 않습니다.

EXPRESSION 변수

Expression 변수에는 오른쪽에 표현식이 있습니다. 이 표현식의 결과는 URL입니다. Rewriter는 서버에서 이러한 표현식을 평가할 수 없기 때문에 HTML 페이지에 JavaScript 함수(psSRAPRewriter_convert_expression)를 추가합니다. 이 함수는 표현식을 하나의 매개 변수로 받아들여 클라이언트 브라우저에서 필요한 URL로 평가합니다.

구문에 단순 URL이 있는지 EXPRESSION URL이 있는지 잘 모르는 경우 EXPRESSION 규칙이 두 경우를 모두 처리하므로 이를 사용하는 것이 좋습니다.

이 부분은 다음으로 세분됩니다.

EXPRESSION 변수 구문

<Variable name="variableName" [type="EXPRESSION" source="*"]/>

여기서

variableName은 그 값이 표현식인 JavaScript 변수의 이름입니다(필수).

type은 JavaScript 변수의 유형입니다(옵션, 기본값은 EXPRESSION).

source는 페이지의 URI입니다(옵션, 기본값 *, 모든 소스를 의미)

EXPRESSION 변수 예제

페이지의 기본 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 표현식 변수의 오른쪽에 덧붙여집니다. 이 함수는 표현식을 처리하고 런타임 때 컨텐트를 다시 씁니다. 세 번째 라인에서 값이 단순 URL로 다시 작성됩니다.

DHTML (Dynamic HTML) 변수

이것은 HTML 컨텐트를 포함한 JavaScript 변수입니다.

이 부분은 다음으로 세분됩니다.

DHTML 구문

<Variable name="variableName" type="DHTML" [source="*"]/>

여기서

variableName은 DHTML 컨텐트가 있는 JavaScript 변수의 이름입니다(필수).

type은 변수의 유형입니다(필수, 이 값은 DHTML이어야 함).

source는 페이지의 URL입니다(옵션, 기본값은 *, 모든 페이지를 의미).

DHTML 예제

페이지의 기본 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 구문 분석기가 href 속성 규칙이 매칭된 HTML 규칙을 적용하므로 이 값은 다시 작성됩니다.

DJS (Dynamic JavaScript) 변수

이것은 JavaScript 컨텐트를 포함한 JavaScript 변수입니다.

이 부분은 다음으로 세분됩니다.

DJS 구문

<Variable name="variableName" type="DJS" [source="*"]/>

여기서

variable은 그 값이 자바스크립트인 JavaScript 변수입니다.

DJS 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/dir1/dir2/dir3/jscript/dir4/page.html

페이지 컨텐트

//DJS Var

var dJSVar="var dJSimgsrc='/tmp/tmp.jpg';"

var dJSVar="var dJSimgsrc='../tmp/tmp.jpg';"

var dJSVar="var dJSimgsrc='http://abc.sesta.com/tmp/tmp.jpg';"

규칙

<Variable name="DJS">dJSVar/>

<Variable name="URL">dJSimgsrc/>

결과

//DJS Var - need 2 rules

var dJSVar="var dJSimgsrc='gateway-URL/http://abc.sesta.com/tmp/tmp.jpg';"

var dJSVar="var dJSimgsrc='gateway-URL/http://abc.sesta.com/dir1/dir2/dir3/jscript/tmp/tmp.jpg';"

var dJSVar="var dJSimgsrc='gateway-URL/http://abc.sesta.com/tmp/tmp.jpg';"

설명

여기에 두 가지 규칙이 필요합니다. 첫 번째 규칙은 동적 JavaScript 변수 dJSVar를 찾습니다. 이 변수의 값은 다시 URL 유형의 JavaScript입니다. 이 JavaScript 변수의 값을 다시 쓰기 위해 두 번째 규칙이 적용됩니다.

SYSTEM 변수

이 변수는 사용자가 선언하는 것이 아니라 JavaScript 표준의 일부로 사용할 수 있는 것입니다. 예: window.location.pathname. 이 변수는 제한적으로 지원됩니다.

이 부분은 다음으로 세분됩니다.

SYSTEM 변수 구문

<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에 있습니다. 이러한 시스템 변수 규칙을 수정하지 마십시오.

type의 값은 시스템 유형입니다(필수 항목이며 값은 DJS).

source는 이 페이지의 URI입니다(옵션, 기본값은 *, 모든 페이지를 의미).  

SYSTEM 변수 예제

페이지의 기본 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>

설명

Rewriter가 규칙과 매칭되는 시스템 변수를 찾으면 psSRAPRewriter_convert_system 함수가 앞에 덧붙여집니다. 이 함수는 런타임 때 시스템 변수를 처리하고 그에 따라 얻어지는 URL을 다시 씁니다.

함수의 인수

그 값을 다시 작성해야 하는 함수 매개 변수는 4가지 범주로 분류됩니다.

일반 구문

<Function name="functionName" paramPatterns="y,y," [type="URL|EXPRESSION|DHTML|DJS" source="*"]/>

여기서

name은 JavaScript 함수의 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 예를 들어 구문에서 첫 번째 매개 변수는 다시 써야 하지만 두 번째 매개 변수는 다시 쓰지 않아야 합니다.

type은 이 매개 변수에 필요한 값의 종류를 지정합니다(옵션, 기본값은 EXPRESSION 유형).

source 페이지 소스 URI(옵션, 기본값은 *, 모든 페이지를 의미).

URL 매개 변수

함수는 이 매개 변수를 문자열로 취하며 이 문자열은 URL로 취급할 수 있습니다.

이 부분은 다음으로 세분됩니다.

URL 매개 변수 구문

<Function name="functionName" paramPatterns="y,," type="URL" [source="*"]/>

여기서

name은 URL 유형의 매개 변수를 갖는 함수 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y의 위치는 다시 작성해야 하는 매개 변수를 나타냅니다. 예를 들어 구문에서 첫 번째 매개 변수는 다시 써야 하지만 두 번째 매개 변수는 다시 쓰지 않아야 합니다.

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 이름의 함수에 있는 처음 두 매개 변수를 다시 작성해야 한다고 지정합니다. 따라서 test 함수의 처음 두 매개 변수는 다시 작성됩니다. 두 번째 규칙은 window.open 함수의 처음 매개 변수를 다시 작성해야 한다고 지정합니다. window.open 함수 내의 URL에는 이 함수 매개 변수를 포함한 페이지의 기본 URL과 게이트웨이 URL이 앞에 덧붙여집니다.

EXPRESSION 매개 변수

이 매개 변수는 표현식 값을 취하며 이 값은 평가 결과 URL이 됩니다.

이 부분은 다음으로 세분됩니다.

EXPRESSION 매개 변수 구문

<Function name="functionName" paramPatterns="y" [type="EXPRESSION" source="*"]/>

여기서

name은 함수의 이름입니다(필수).

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y의 위치는 다시 작성해야 하는 함수 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

type은 값 EXPRESSION을 지정합니다(옵션).

source는 이 함수가 호출되는 페이지의 URI입니다.

EXPRESSION 매개 변수 예제

페이지의 기본 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>

설명

이 규칙은 jstest1 함수의 첫 번째 매개 변수를 EXPRESSION 함수 매개 변수로 취급하여 다시 써야 한다는 것을 지정합니다. 예제 페이지 컨텐트에서 첫 번째 매개 변수는 런타임 때만 평가되는 표현식입니다. Rewriter는 이 표현식 앞에 psSRAPRewriter_convert_expression 함수를 덧붙입니다. 이 표현식이 평가되고 psSRAPRewriter_convert_expression 함수가 런타임 때 결과를 다시 씁니다.


참고

위의 예제에서 JavaScript 변수 규칙의 일부로 test1이 있을 필요는 없습니다. jstest1에 대한 함수 규칙이 다시 쓰기를 처리합니다.


DHTML 매개 변수

그 값이 HTML인 함수 매개 변수입니다.

HTML 페이지를 동적으로 생성하는 document.write() 같은 원시 JavaScript 메서드가 이 범주에 속합니다.

이 부분은 다음으로 세분됩니다.

DHTML 매개 변수 구문

<Function name="functionName" paramPatterns="y" type="DHTML" [source="*"]/>

여기서

name은 함수의 이름입니다.

paramPatterns는 다시 작성해야 하는 매개 변수를 지정합니다(필수).

y의 위치는 다시 작성해야 하는 함수 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

DHTML 매개 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/page.html

페이지 컨텐트

<script>

<!--

document.write('<a href="/index.html">write</a><BR>')

document.writeln('<a href="index.html">writeln</a><BR>')

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('<a href="gateway-URL/http://xyz.siroe.com/index.html">write</a><BR>')

document.writeln('<a href="gateway-URL/http://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/index.html">writeln</a><BR>')

document.write("http://abc.sesta.com/index.html<BR>")

document.writeln("http://abc.sesta.com/index.html<BR>")

//-->

</SCRIPT>

설명

첫 번째 규칙은 document.write 함수의 첫 매개 변수를 다시 작성해야 한다고 지정합니다. 두 번째 규칙은 document.writeln 함수의 첫 매개 변수를 다시 작성해야 한다고 지정합니다. 세 번째 규칙은 href 이름의 모든 속성을 다시 작성해야 한다고 지정하는 단순 HTML 규칙입니다. 이 예에서, DHTML 매개 변수 규칙이 함수에서 다시 작성해야 하는 매개 변수를 확인합니다. 그런 다음 HTML 속성 규칙이 적용되어 실제로 확인된 매개 변수가 다시 작성됩니다.

DJS 매개 변수

그 값이 JavaScript인 함수 매개 변수입니다.

이 부분은 다음으로 세분됩니다.

DJS 매개 변수 구문

<Function name="functionName" paramPatterns="y" type="DJS" [source="*"]/>

여기서

name은 하나의 매개 변수가 DJS인 함수의 이름입니다(필수).

paramPatterns는 위 함수에서 어떤 매개 변수가 DJS인지를 지정합니다(필수).

y의 위치는 다시 작성해야 하는 함수 매개 변수를 나타냅니다. 위의 구문에서 첫 번째 매개 변수만 다시 작성됩니다.

type은 DJS입니다(필수).

source는 페이지의 URI입니다(옵션, 기본값은 *, 모든 URI를 의미).

DJS 매개 변수 예제

페이지의 기본 URL이 다음과 같다고 가정합니다.

http://abc.sesta.com/page.html

페이지 컨텐트

<script>

menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location='http://abc.sesta.com'"));

</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='gateway-URL/http://abc.sesta.com'"));

</script>

설명

첫 번째 규칙은 JavaScript를 포함한 NavBarMenuItem 함수의 두 번째 매개 변수를 다시 작성해야 한다고 지정합니다. JavaScript 내에서, top.location 변수도 다시 작성해야 합니다. 이 변수는 두 번째 규칙을 사용하여 다시 작성됩니다.

XML 컨텐트에 대한 규칙

웹 페이지에 XML 컨텐트가 있을 수 있으며 여기에는 다시 URL이 있을 수 있습니다. 다시 작성해야 하는 XML 컨텐트는 두 범주로 구분됩니다.

태그 텍스트

이 규칙은 태그 요소의 PCDATA 또는 CDATA를 다시 작성하기 위한 것입니다.

이 부분은 다음으로 세분됩니다.

태그 텍스트 구문

<TagText tag="tagName" [attributePatterns="attribute_patterns_for_ this_tag" source="*"]/>

여기서

tagName은 태그의 이름입니다.

attributePatterns는 이 태그에 대한 속성 및 그 값의 패턴입니다(옵션, 이 태그에 속성이 전혀 없다는 것을 의미).

source는 이 xml 파일의 URI입니다(옵션, 기본값은 *, 모든 xml 페이지를 의미).

태그 텍스트 예제

페이지의 기본 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>

설명

페이지 컨텐트의 첫 번째 라인에는 속성 예제이 있습니다. 페이지 컨텐트의 두 번째 라인에는 name이라고 하는 속성과 속성 name의 값이 src가 될 속성이 들어있지 않으므로 재작성이 수행되지 않습니다. 이것도 다시 작성하려면 <TagText tag="attribute"/>가 있어야 합니다.

속성

XML 속성의 규칙은 HTML에 대한 속성 규칙과 유사합니다. 118 페이지의 "HTML 컨텐트에 대한 속성 규칙"을 참조하십시오. XML의 속성 규칙이 대소문자를 구분하는 반면 HTML 속성은 그렇지 않다는 차이점이 있습니다. 이는 근본적으로 HTML에는 없지만 XML에는 대소문자를 구분하는 특성이 내재되어 있기 때문입니다.

Rewriter는 속성 이름을 바탕으로 속성 값을 변환합니다.

이 부분은 다음으로 세분됩니다.

속성 구문

<Attribute name="attributeName" [tag="*" type="URL" valuePatterns="*" source="*"]/>

여기서

attributeName은 속성의 이름입니다(필수).

tag는 이 속성이 있는 태그의 이름입니다(옵션, 기본값은 *, 모든 태그를 의미).

valuePatterns "규칙에서 패턴 매칭 사용"을 참조하십시오.

source는 이 XML 페이지의 URI입니다(옵션, 기본값은 *, 모든 XML 페이지를 의미).

속성 예제

페이지의 기본 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번째 라인만 규칙에 지정된 모든 조건을 만족하기 때문에 이 라인만 다시 작성됩니다. 116 페이지의 "규칙에서 패턴 매칭 사용"을 참조하십시오.

CCS (Cascading Style Sheet)에 대한 규칙

HTML 페이지에서 CCS (CCS2 포함)가 변환됩니다. URL이 CSS의 가져오기 구문과 url() 함수에만 있기 때문에 이 변환에 대해 정의된 규칙은 없습니다.

WML에 대한 규칙

WML은 HTML과 유사하며 따라서 WML 컨텐트에는 HTML 규칙이 적용됩니다. WML 컨텐트에 일반 규칙 집합을 사용하십시오. "HTML 컨텐트에 대한 규칙"을 참조하십시오.


게이트웨이 서비스에서 Rewriter 구성

[Rewriter] 탭 아래에서 게이트웨이 서비스를 사용하여 기본 및 고급의 두 범주 내에서 다음 작업을 수행할 수 있습니다.

기본 작업

모든 URL 다시 쓰기 사용

게이트웨이 서비스에서 [모든 URL 다시 쓰기 사용] 옵션을 설정하면 [도메인 및 부속 도메인의 프락시] 목록에 있는 항목을 확인하지 않고 Rewriter가 모든 URL을 다시 씁니다. [도메인 및 부속 도메인의 프락시] 목록에 있는 항목은 무시됩니다.

    게이트웨이가 모든 URL을 다시 쓰도록 하려면
  1. Sun™ ONE Identity Server 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 선택합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필 옆에 대한 [편집…]을 클릭합니다.
  6. 게이트웨이 프로필 편집 페이지가 표시됩니다.

  7. [Rewriter] 탭을 클릭합니다.
  8. [모든 URL 다시 쓰기 사용] 확인란을 선택하여 게이트웨이가 모든 URL을 다시 쓸 수 있게 합니다.
  9. 페이지 맨 위 또는 맨 아래의 [저장]을 눌러 변경 사항을 저장합니다.
  10. 단말기 창에서 게이트웨이를 다시 시작합니다.
  11. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

RuleSet과 URI의 매핑 목록 만들기

규칙 집합은 Identity Server 관리 콘솔의 Portal Server 구성 아래의 Rewriter 서비스에서 만들어집니다. 자세한 내용은 Sun ONE Portal Server Administrator’s Guide를 참조하십시오.

규칙 집합을 만든 후 [RuleSet과 URI의 매핑] 목록을 사용하여 도메인을 규칙 집합과 연관시킵니다. 기본적으로 다음 두 항목이 [RuleSet과 URI의 매핑] 목록에 추가됩니다.

즉, 도메인 sun.com을 가진 포털 디렉토리의 모든 페이지에 default_gateway_ruleset이 적용됩니다. 기타 모든 페이지에는 일반 규칙 집합이 적용됩니다. default_gateway_ruleset 및 generic_ruleset은 사전 구성된 규칙 집합입니다.


참고

포털 데스크탑에 나타나는 모든 컨텐트에 대해 컨텐트를 어디서 가져왔는지에 상관 없이 default_gateway_ruleset의 규칙 집합이 사용됩니다.

예를 들어, 포털 데스크탑이 URL yahoo.com에서 컨텐트를 스크랩하도록 구성되었다고 가정합시다. Portal Server는 sesta.com에 있습니다. sesta.com에 대한 규칙 집합이 불려온 컨텐트에 적용됩니다.



참고

규칙 집합을 지정하는 도메인은 [도메인 및 부속 도메인의 프락시] 목록에 있어야 합니다.


구문 내에서 와일드카드 사용

규칙 집합에서 별표를 사용하여 완전한 정규 URI 또는 부분적 URI를 매핑할 수 있습니다.

예를 들어, 다음과 같이 java_index_page_ruleset을 index.html 페이지에 적용할 수 있습니다.

또는 다음과 같이 java 디렉토리에 있는 모든 페이지를 java_directory_ruleset에 적용할 수 있습니다.

www.sun.com/java/* /java_directory_ruleset

    URI를 규칙 집합에 매핑하려면
  1. Identity Server 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 선택합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필을 클릭합니다.
  6. 게이트웨이 - gateway-profile-name 페이지가 나타납니다.

  7. [Rewriter] 탭을 클릭합니다.
  8. [RuleSet과 URI의 매핑] 필드로 스크롤합니다.
  9. 필요한 도메인이나 호스트 이름 그리고 규칙 집합을 [RuleSet과 URI의 매핑] 필드에 입력하고 [추가]를 클릭합니다.
  10. 항목이 [RuleSet과 URI의 매핑] 목록에 추가됩니다.

    도메인이나 호스트 이름 그리고 규칙 집합을 지정하는 형식은 다음과 같습니다.

    domain name|ruleset name

    예:

    eng.sesta.com|default

구문 분석기와 MIME의 매핑 목록 만들기

Rewriter에는 컨텐트 유형(HTML, JAVASCRIPT, CSS 및 XML)에 따라 웹 페이지의 구문을 분석하기 위한 4가지 구문 분석기가 있습니다. 기본적으로 공통 MIME 유형이 이러한 구문 분석기와 연결되어 있습니다. 게이트웨이 서비스의 [구문 분석기와 MIME의 매핑] 필드에서 새로운 MIME 유형을 이러한 구문 분석기와 연결시킬 수 있습니다. 그러면 Rewriter의 기능이 다른 MIME 유형까지 확장됩니다.

여러 항목을 입력할 때는 세미콜론이나 콤마로 구분합니다(";" 또는 ",").

예:

HTML=text/html;text/htm;text/x-component;text/wml; text/vnl/wap.wml

이것은 이러한 MIME을 가진 모든 컨텐트가 HTML Rewriter로 보내지고 URL을 다시 쓰도록 HTML 규칙이 적용된다는 의미입니다.


팁

MIME 매핑에서 불필요한 구문 분석기를 제거하면 작동 속도를 높일 수 있습니다. 예를 들어, 특정 인트라넷의 컨텐트에 JavaScript가 없다는 것이 확실하면 MIME 매핑 목록에서 JAVASCRIPT 항목을 제거할 수 있습니다.


    MIME 매핑을 지정하려면
  1. Identity 서버 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 선택합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필을 클릭합니다.
  6. 게이트웨이 - gateway-profile-name 페이지가 나타납니다.

  7. [Rewriter] 탭을 클릭합니다.
  8. [구문 분석기와 MIME의 매핑] 필드로 스크롤하여 편집 상자에 필요한 MIME 유형을 추가합니다. 여러 항목을 구분할 때는 세미콜론이나 콤마를 사용합니다.
  9. 항목을 HTML=text/html;text/htm 형식으로 지정합니다.

  10. [추가]를 클릭하여 목록에 필요한 항목을 추가합니다.
  11. 페이지 맨 위 또는 맨 아래의 [저장]을 눌러 변경 사항을 저장합니다.
  12. 단말기 창에서 게이트웨이를 다시 시작합니다.
  13. portal-server-install-root/SUNWps/bin/gateway -n gateway-profile-name start

기본 도메인 및 부속 도메인 지정

기본 도메인 및 부속 도메인은 URL에 도메인과 부속 도메인 없이 호스트 이름만 있을 때 유용합니다. 이 경우에 게이트웨이는 호스트 이름이 기본 도메인 및 부속 도메인에 있다고 가정하고 그에 따라 진행합니다.

예를 들어, URL의 호스트 이름이 host1이고 기본 도메인과 부속 도메인이 red.sesta.com으로 지정된 경우, 호스트 이름은 host1.red.sesta.com으로 확인됩니다.

    기본 도메인 및 부속 도메인을 지정하려면
  1. Identity 서버 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 클릭합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 오른쪽 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필 옆에 대한 [편집…]을 클릭합니다.
  6. 게이트웨이 프로필 편집 페이지가 표시됩니다.

  7. [기본 도메인 및 하위 도메인] 필드로 스크롤하여 subdomain.domain name 형식으로 필요한 기본값을 입력합니다.
  8. 게이트웨이 프로필 편집 페이지 맨 위 또는 맨 아래의 [저장]을 클릭하여 변경 사항을 저장합니다.
  9. 단말기 창에서 게이트웨이를 다시 시작합니다.
  10. portal-server-install-root/SUNWps/bin/gateway -n gateway-profile-name start

고급 작업

다시 쓰지 않을 URI 목록 만들기

    기본 도메인 및 부속 도메인을 지정하려면
  1. Identity Server 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 선택합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필을 클릭합니다.
  6. 게이트웨이 - gateway-profile-name 페이지가 나타납니다.

  7. [Rewriter] 탭 아래의 [고급] 부분을 클릭합니다.
  8. [URI 목록 다시 쓰지 않음] 필드로 스크롤하여 편집 상자에 URI를 추가합니다.
  9. 참고: 이 목록에 #*를 추가하면 href 규칙이 규칙 집합의 일부라 하더라도 URI를 다시 쓸 수 있습니다.

  10. 페이지 맨 위 또는 맨 아래의 [저장]을 눌러 변경 사항을 저장합니다.
  11. 단말기 창에서 게이트웨이를 다시 시작합니다.
  12. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

MIME 추측 사용

Rewriter는 페이지의 MIME 유형에 따라 구문 분석기를 선택합니다. WebLogic 및 Oracle같은 일부 웹 서버는 MIME 유형을 보내지 않습니다. 이 문제를 해결하기 위해 [구문 분석기와 URI 매핑] 목록 상자에 데이터를 추가하여 MIME 추측 기능을 사용할 수 있습니다.

    MIME 추측을 사용하려면
  1. Identity Server 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 선택합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필을 클릭합니다.
  6. 게이트웨이 - gateway-profile-name 페이지가 나타납니다.

  7. [Rewriter] 탭 아래의 [고급] 부분을 클릭합니다.
  8. [MIME 추측 사용] 확인란을 선택하여 MIME 추측의 사용을 설정합니다.
  9. 페이지 맨 위 또는 맨 아래의 [저장]을 눌러 변경 사항을 저장합니다.
  10. 단말기 창에서 게이트웨이를 다시 시작합니다.
  11. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

구문 분석기와 URI의 매핑 목록 만들기

[MIME 추측] 확인란이 선택된 상태에서 서버가 MIME 유형을 보내지 않으면 구문 이 상자를 사용하여 분석기를 URI에 매핑합니다.

각 URI는 세미콜론으로 구분합니다.

예: HTML=*.html; *.htm;*Servlet

이 것은 html, htm 또는 Servlet 확장을 가진 모든 페이지에 대한 컨텐트를 다시 쓰기 위해 HTML Rewriter가 사용된다는 것을 의미합니다.

    URI 매핑을 구문 분석하려면
  1. Identity Server 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 선택합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필을 클릭합니다.
  6. 게이트웨이 - gateway-profile-name 페이지가 나타납니다.

  7. [Rewriter] 탭 아래의 [고급] 부분을 클릭합니다.
  8. [구문 분석기와 MIME의 매핑] 필드로 스크롤하여 편집 상자에 데이터를 추가합니다.
  9. 페이지 맨 위 또는 맨 아래의 [저장]을 눌러 변경 사항을 저장합니다.
  10. 단말기 창에서 게이트웨이를 다시 시작합니다.
  11. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

옵퍼스케이션 사용

옵퍼스케이션을 통해 Rewriter는 페이지의 인트라넷 URL이 보이지 않도록 URI를 다시 쓸 수 있습니다.

    옵퍼스케이션을 사용하려면
  1. Identity Server 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 선택합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필을 클릭합니다.
  6. 게이트웨이 - gateway-profile-name 페이지가 나타납니다.

  7. [Rewriter] 탭 아래의 [고급] 부분을 클릭합니다.
  8. [옵퍼스케이션 사용] 확인란을 선택하여 옵퍼스케이션의 사용을 설정합니다.
  9. 페이지 맨 위 또는 맨 아래의 [저장]을 눌러 변경 사항을 저장합니다.
  10. 단말기 창에서 게이트웨이를 다시 시작합니다.
  11. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

옵퍼스케이터 씨드 문자열 지정

씨드 문자열은 URI의 옵퍼스케이션에 사용됩니다. 이것은 옵퍼스케이션 알고리즘에 의해 생성되는 임의 문자열입니다.


참고

이 씨드 문자열이 변경되거나 게이트웨이가 다시 시작되는 경우 옵퍼스케이션된 URI를 책갈피에 추가하지 못할 수 있습니다.


    옵퍼스케이션 씨드 문자열을 지정하려면
  1. Identity Server 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 선택합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필을 클릭합니다.
  6. 게이트웨이 - gateway-profile-name 페이지가 나타납니다.

  7. [Rewriter] 탭 아래의 [고급] 부분을 클릭합니다.
  8. [옵퍼스케이션 씨드 문자열] 필드로 스크롤하여 편집 상자에 문자열을 추가합니다.
  9. 페이지 맨 위 또는 맨 아래의 [저장]을 눌러 변경 사항을 저장합니다.
  10. 단말기 창에서 게이트웨이를 다시 시작합니다.
  11. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

애매하지 않은 URI 목록 만들기

일부 응용프로그램(애플릿 등)에는 인터넷 URI가 필요하기 때문에 애매하게 할 수 없습니다. 이러한 응용프로그램을 지정하려면 URI를 목록 상자에 추가합니다.

예를 들어 다음을 목록 상자에 추가하면

*/Applet/Param*

컨텐트 URI http://abc.com/Applet/Param1.html이 규칙 집합의 규칙에서 매칭되는 경우 URL이 옵퍼스케이션되지 않습니다.

    URI 목록을 애매하지 않게 지정하려면
  1. Identity Server 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 선택합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필을 클릭합니다.
  6. 게이트웨이 - gateway-profile-name 페이지가 나타납니다.

  7. [Rewriter] 탭 아래의 [고급] 부분을 클릭합니다.
  8. [URI 목록을 애매하게 하지 않음] 필드로 스크롤하여 편집 상자에 URI를 추가합니다.
  9. 페이지 맨 위 또는 맨 아래의 [저장]을 눌러 변경 사항을 저장합니다.
  10. 단말기 창에서 게이트웨이를 다시 시작합니다.
  11. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

게이트웨이 프로토콜을 원본 URI 프로토콜과 같게 표시하기

게이트웨이가 http와 https 모드 모두에서 실행되는 경우 Rewriter가 일관된 프로토콜을 사용하여 HTML 컨텐트의 참조 리소스에 액세스하게 할 수 있습니다.

예를 들어 원본 URL이 http://intranet.com/Public.html이라면 HTTP 게이트웨이가 추가됩니다. 원본 URL이 https://intranet.com/Public.html이라면 HTTPS 게이트웨이가 추가됩니다.


참고

이는 Javascript로 생성된 동적 URI가 아닌 정적 URI에만 적용됩니다.


    게이트웨이 프로토콜을 원본 URI 프로토콜과 같게 하려면
  1. Identity Server 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 선택합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필을 클릭합니다.
  6. 게이트웨이 - gateway-profile-name 페이지가 나타납니다.

  7. [Rewriter] 탭 아래의 [고급] 부분을 클릭합니다.
  8. [게이트웨이 프로토콜을 원본 URI 프로토콜과 같게 표시] 확인란을 선택합니다.
  9. 페이지 맨 위 또는 맨 아래의 [저장]을 눌러 변경 사항을 저장합니다.
  10. 단말기 창에서 게이트웨이를 다시 시작합니다.
  11. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start


디버깅 로그 사용의 문제 해결

Rewriter 문제를 해결하려면 디버깅 로그를 사용해야 합니다.

디버깅 메시지는 다음과 같이 분류됩니다.

Rewriter 디버깅 수준 설정

    Rewriter 디버깅 수준을 설정하려면
  1. 게이트웨이 컴퓨터에 루트로 로그인하여 다음 파일을 편집합니다.
  2. gateway-install-root/SUNWam/lib/AMConfig.properties

  3. 디버깅 수준을 설정합니다.
  4. com.iplanet.services.debug.level=

    디버깅 수준은 다음과 같습니다.

    error - 심각한 오류만 디버깅 파일에 기록됩니다. 일반적으로 Rewriter는 이러한 오류가 발생할 때 작동을 멈춥니다.

    warning - 경고 메시지가 기록됩니다.

    message - 모든 디버깅 메시지가 기록됩니다.

    off - 디버깅 메시지가 기록되지 않습니다.

  5. AMConfig.properties 파일의 다음 속성에서 디버깅 파일의 디렉토리를 지정합니다.
  6. com.iplanet.services.debug.directory=/var/opt/SUNWam/debug

    여기서 /var/opt/SUNWam/debug는 기본 디버깅 디렉토리입니다.

  7. 단말기 창에서 게이트웨이를 다시 시작합니다.
  8. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

디버깅 파일 이름

디버깅 수준이 메시지로 설정되면 디버깅이 일단의 파일을 생성합니다. 표 3-2 에 Rewriter 파일과 여기에 포함된 정보를 나타내었습니다. 첫 번째 열은 디버깅 파일의 이름이고 두 번째 열은 파일의 내용을 설명합니다.

표 3-2  Rewriter 디버깅 파일

파일 이름

정보

RuleSetInfo

재작성에 사용된 모든 규칙 집합이 이 파일에 기록됩니다.

Original Pages

페이지 URI, resolveURI (페이지 URI와 다른 경우), 컨텐트 MIME, 페이지에 적용된 규칙 집합, 구문 분석기 MIMIE 및 원본 컨텐트가 들어 있습니다.

구문 분석과 관련된 특정 오류/경고/메시지도 이 파일에 들어 있습니다.

메시지 모드에서는 전체 컨텐트가 기록되고 경고와 오류 모드에서는 재작성 중에 발생한 예외만 기록됩니다.

Rewritten Pages

페이지 URI, resolveURI (페이지 URI와 다른 경우), 컨텐트 MIME, 페이지에 적용된 규칙 집합, 구문 분석기 MIMIE 및 재작성된 컨텐트가 들어 있습니다.

이 파일은 디버그 모드가 메시지로 설정되었을 때 채워집니다.

Unaffected Pages

수정되지 않은 페이지 목록을 포함합니다.

URIInfo Pages

이 파일에는 발견되어 변환된 URL이 들어 있습니다. 컨텐트가 원본 데이터와 동일하게 유지되는 모든 페이지의 세부 사항이 이 파일에 기록됩니다.

세부적으로 기록되는 내용: 페이지 URI, MIME 및 인코딩 데이터, 재작성에 사용된 rulesetID 그리고 구문 분석기 MIME.

위의 파일 이외에 Rewriter는 위의 파일에서 포착하지 않은 디버깅 메시지를 위한 파일도 생성합니다. 이 파일 이름은 두 부분으로 구성됩니다. 첫 번째 부분은 pwRewriter 또는 psSRARewriter이고 두 번째 부분은 portal 또는 gateway profile name을 사용한 확장자입니다.

디버깅 파일은 포털 또는 게이트웨이에 표시됩니다. 이러한 파일은 AMConfig.properties 파일에 표시된 디렉토리에 있습니다.

Rewriter 구성 요소는 디버깅을 지원하기 위해 다음 파일 집합을 생성합니다.

prefix_RuleSetInfo.extension

prefix_OrginalPages.extension

prefix_RewrittenPages.extension

prefix_UnaffectedPages.extension

prefix_URIInfo.extension

여기서

prefix는 URLScraper 사용 로그의 경우 psRewriter이거나 게이트웨이 사용 로그의 경우 psSRAPRewriter입니다.

extension은 URLScaper 사용의 경우 portal이거나 게이트웨이 사용의 경우 gateway-profile-name입니다.

예를 들어, 게이트웨이에서 Rewriter가 페이지를 변환하는데 사용되고 기본 게이트웨이 프로필이 사용되는 경우 디버깅이 다음 파일을 만듭니다.

psSRAPRewriter_RuleSetInfo.default

psSRAPRewriter_OriginalPages.default

psSRAPRewriter_RewrittenPages.default

psSRAPRewriter_UnaffectedPages.default

psSRAPRewriter_URIInfo.default

psSRAPRewriter.default


작업 예제

이 부분은 다음으로 이루어져 있습니다.

이러한 예제 페이지는 portal-server-URL/rewriter 디렉토리에 있습니다. 규칙을 적용하기 전에 페이지를 둘러본 다음 게이트웨이를 통해 재작성된 결과 파일을 검토하여 규칙의 작용에 대해 알아봅니다. 규칙이 이미 default_gateway_ruleset의 일부인 경우도 있습니다. 어떤 예제에서는 default_gateway_ruleset에 규칙을 포함시켜야 할 수 있습니다. 해당 위치에서 이에 대해 언급합니다.


참고

굵게 표시된 부분은 다시 작성된 내용입니다.


다음 예제를 이용할 수 있습니다.

HTML 컨텐트 예제

HTML 속성 예제

    HTML 속성 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/HTML/attrib/attribrule.html

  3. 게이트웨이 서비스에서 [도메인 및 부속 도메인의 프락시] 목록에 abc.sesta.com과 host1.siroe.com이 정의되어 있어야 합니다.
  4. 정의되어 있지 않으면 직접 연결이 가정되고 게이트웨이 URL이 앞에 덧붙지 않습니다.

이 예제에서 지정된 규칙은 이미 정의되었기 때문에 default_gateway_ruleset에 추가하지 않아도 됩니다.

재작성 전의 HTML

<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

<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>

// <Attrib name="href"/> 규칙이 default_gateway_ruleset에 이미 정의되었기 때문에 이 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 토큰 예제
    HTML JavaScript 토큰 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/HTML/jstokens/JStokens.html

  3. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오.
  4. Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  5. 단말기 창에서 게이트웨이를 다시 시작합니다.
  6. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML

<html>

<head>

Rewriting starts

<script language="javascript">

function Check(test,ind){

if (ind == 'blur')

{alert("testing onBlur")}

if (ind == 'focus')

{alert("testing onFocus")}

}

</SCRIPT>

</head>

<body>

<form>

<input TYPE=TEXT SIZE=20 value=blur onAbort="Check('/indexblur.html','blur');return;">

<input TYPE=TEXT SIZE=20 value=blur onBlur="Check('/indexblur.html','blur');return;">

<input TYPE=TEXT SIZE=20 value=focus onFocus="Check('/focus.html','focus');return;">

<input TYPE=TEXT SIZE=20 value=focus onChange="Check('/focus.html','focus');return;">

<input TYPE=TEXT SIZE=20 value=focus onClick="Check('/focus.html','blur');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

<html>

<head>

Rewriting starts

<script language="javascript">

function Check(test,ind){

if (ind == 'blur')

{alert("testing onBlur")}

if (ind == 'focus')

{alert("testing onFocus")}

}

</SCRIPT>

</head>

<body>

<form>

<input TYPE=TEXT SIZE=20 value=blur onAbort="Check('gateway URL/portal-server-URL/indexblur.html','blur');return;">

<input TYPE=TEXT SIZE=20 value=blur onBlur="Check('gateway URL/portal-server-URL/indexblur.html','blur');return;">

<input TYPE=TEXT SIZE=20 value=focus onFocus="Check('gateway URL/portal-server-URL/focus.html','focus');return;">

<input TYPE=TEXT SIZE=20 value=focus onChange="Check('gateway URL/portal-server-URL/focus.html','focus');return;">

<input TYPE=TEXT SIZE=20 value=focus onClick="Check('gateway URL/portal-server-URL/focus.html','blur');return;">

// 이 예제에서 모든 구문은 다시 작성됩니다. 각 경우에 게이트웨이와 Portal Server URL이 앞에 덧붙습니다. onAbort, onBlur, onFocus, onChange 및 onClick에 대한 규칙이 default_gateway_ruleset 파일에 정의되었기 때문입니다. Rewriter는 JavaScript 토큰을 감지한 다음 추가 처리를 위해 이를 JavaScript 함수 규칙으로 전달합니다. 예제에 나타낸 두 번째 규칙은 Rewriter에 다시 작성할 매개 변수를 지시해줍니다.

</body>

<br>

Rewriting ends

</html>

HTML 폼 예제

    폼 예제를 사용하려면
  1. 다음 위치에서 예제에 액세스합니다.
  2. portal-server-URL/rewriter/HTML/forms/formrule.html

  3. 게이트웨이 서비스에서 [도메인 및 부속 도메인의 프락시] 목록에 abc.sesta.com이 정의되어 있어야 합니다.
  4. 정의되어 있지 않으면 직접 연결이 가정되고 게이트웨이 URL이 앞에 덧붙지 않습니다.

  5. 이 예제에 지정된 규칙을 "HTML 속성 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오.
  6. Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  7. 단말기 창에서 게이트웨이를 다시 시작합니다.
  8. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML 페이지

<!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 페이지

<HTML>

<HEAD>

RW_START

</HEAD>

<BODY>

<P>

<FORM name=form1 method=POST action="gateway-URL/http://abc.sesta.com/casestudy/html/form.html">

// <Attribute name="action"/>이 default_gateway_rulesetdefault_gateway_ruleset에서 HTML 규칙의 일부로 정의되었기 때문에 이 URL은 다시 작성됩니다. URL이 이미 절대 경로이기 때문에 게이트웨이 URL만 앞에 덧붙이면 됩니다. 게이트웨이 서비스에서 [도메인 및 부속 도메인의 프락시] 목록에 abc.sesta.com이 정의되어 있어야 합니다. 그렇지 않으면 직접 연결이 가정되기 때문에 게이트웨이 URL이 앞에 덧붙지 않습니다.

<input type=hidden name=name1 value="0|1234|gateway URL/portal-server-URL/test.html">

// 여기서 폼 이름은 form1이고 필드 이름은 name1입니다. 이것은 규칙에서 지정된 폼 이름 및 필드 이름과 일치합니다. 규칙에 valuePatterns가 0|1234|로 나와있으며 여기 구문의 value와 일치합니다. 따라서 valuePattern 이후에 나오는 URL은 다시 작성됩니다. Portal Server URL과 게이트웨이 URL이 앞에 덧붙습니다. valuePatterns에 대한 자세한 내용은 116 페이지의 "규칙에서 패턴 매칭 사용"을 참조하십시오.

<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만 앞에 덧붙이면 됩니다.

<input type=hidden name=name1 value="0|1234|../../html/test.html">

// 폼 이름이 규칙에서 지정된 이름과 일치하지 않기 때문에 이 URL은 다시 작성되지 않습니다.

</FORM>

</BODY>

RW_END

</HTML>

HTML 애플릿 예제

    애플릿 예제를 사용하려면
  1. 애플릿 클래스 파일을 얻습니다. RewriteURLinApplet.class 파일은 다음 위치에 있습니다.
  2. portal-server-URL/rewriter/HTML/applet/appletcode

    애플릿 코드가 있는 페이지의 기본 URL은 다음과 같습니다.

    portal-server-URL/rewriter/HTML/applet/rule1.html

  3. 이 예제에 지정된 규칙을 "HTML 속성 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오.
  4. Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  5. 게이트웨이를 다시 시작합니다.
  6. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML

<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

<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은 다시 작성됩니다. appletcode 디렉토리까지의 경로와 함께 게이트웨이와 Portal Server URL이 앞서 덧붙습니다.

<param name=Test1 value="gateway-URL/portal-server-URL/index.html">

// 페이지의 기본 URL이 rule1.html이고 매개 변수 이름이 규칙에 지정된 매개 변수 Test*와 일치하기 때문에 URL은 다시 작성됩니다. index.html이 루트 수준에 있도록 지정되었기 때문에 게이트웨이 및 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>

JavaScript 컨텐트 예제

JavaScript URL 변수 예제

    JavaScript URL 변수 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/JavaScript/variables/url/js_urls.html

  3. 게이트웨이 서비스에서 [도메인 및 부속 도메인의 프락시] 목록에 abc.sesta.com이 정의되어 있어야 합니다.
  4. 정의되어 있지 않으면 직접 연결이 가정되고 게이트웨이 URL이 앞에 덧붙지 않습니다.

  5. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오.
  6. Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  7. 규칙을 추가한 경우 게이트웨이를 다시 시작합니다.
  8. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML 페이지

<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 페이지

<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 변수입니다. 따라서 게이트웨이 및 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">

// <Attribute name="src"/> 규칙이 default_gateway_ruleset에 정의되었기 때문에 이 라인은 다시 작성됩니다.

<br>

Image

</body>

<br>

Rewriting ends

</html>

JavaScript EXPRESSION 변수 예제

    JavaScript Expression 변수 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/JavaScript/variables/expr/expr.html

  3. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우).
  4. Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  5. 규칙을 추가한 경우 게이트웨이를 다시 시작합니다.
  6. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML 페이지

<html>

<head>

<title>JavaScript EXPRESSION Variables Test Page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

//Expression variables

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 페이지

<html>

<head>

<title>JavaScript EXPRESSION Variables Test Page</title>

</head>

<body>

<SCRIPT>

// Rewriter는 래퍼 함수 psSRAPRewriter_convert_expression을 여기에 추가합니다.

</SCRIPT>

<script LANGUAGE="Javascript">

<!--

//Expression variables

var expvar1="images";

var expvar2="/logo.gif";

var expvar =psSRAPRewriter_convert_expression( expvar1 + expvar2);

// Rewriter는 이 구문의 오른쪽을 JavaScript EXPRESSION 변수인 것으로 인식합니다. Rewriter는 서버 쪽에서 이 표현식의 값을 결정할 수 없습니다. 따라서, psSRAPRewriter_convert_expression 함수가 표현식 앞에 덧붙습니다. 이 표현식은 클라이언트 쪽에서 평가되어 필요에 따라 다시 작성됩니다.

document.write("<A HREF="+expvar+">EXPRESSION</A><P>")

// 이전 구문에서 다시 작성된 expvar 값이 이 표현식의 값에 도달하기 위해 사용됩니다. 결과가 유효한 URL이기 때문에(예제의 이 위치에 그래픽이 위치) 링크가 제대로 걸립니다.

var expvar="gateway URL/portal-server-URL/images/logo"+".gif";

// Rewriter는 expvar의 오른쪽을 문자열 표현식인 것으로 인식합니다. 이것은 서버 쪽에서 결정할 수 있기 때문에 직접 다시 작성됩니다.

document.write("<A HREF="+expvar+">EXPRESSION</A><P>")

// 이전 구문에서 다시 작성된 expvar 값이 이 표현식의 값에 도달하기 위해 사용됩니다. 결과가 유효한 URL이 아니기 때문에(예제의 이 위치에 그래픽이 없음) 링크가 제대로 걸리지 않습니다.

//-->

</SCRIPT>

Testing JavaScript EXPRESSION variables

</body>

</html>

JavaScript DHTML 변수 예제

    JavaScript DHTML 변수 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/JavaScript/variables/dhtml/dhtml.html

  3. 게이트웨이 서비스에서 [도메인 및 부속 도메인의 프락시] 목록에 abc.sesta.com이 정의되어 있어야 합니다. 정의되어 있지 않으면 직접 연결이 가정되고 게이트웨이 URL이 앞에 덧붙지 않습니다.
  4. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우). Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  5. 규칙을 추가한 경우 게이트웨이를 다시 시작합니다.
  6. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML 페이지

<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 페이지

<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이 앞에 덧붙여져 최종적으로 다시 작성된 결과가 유도됩니다.

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의 <Attribute name="href"/> HTML 규칙이 적용되며 나타낸 것처럼 구문이 다시 작성됩니다. 게이트웨이 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이 정의되어 있어야 합니다.

//-->

</SCRIPT>

<br><br>

Testing DHTML Variables

<br><br>

<img src="gateway-URL/portal-server-URL/rewriter/JavaScript/variables/dhtml/images/logo.gif">

// <Attribute name="src"/> 규칙이 default_gateway_ruleset에 정의되었기 때문에 이 라인은 다시 작성됩니다.

<br><br>

Image

</body>

</html>

JavaScript DJS 변수 예제

    JavaScript DJS 변수 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/JavaScript/variables/djs/djs.html

  3. 게이트웨이 서비스에서 [도메인 및 부속 도메인의 프락시] 목록에 abc.sesta.com이 정의되어 있어야 합니다. 정의되어 있지 않으면 직접 연결이 가정되고 게이트웨이 URL이 앞에 덧붙지 않습니다.
  4. 이 예제에 지정된 두 개의 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우). Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  5. 게이트웨이를 다시 시작합니다.
  6. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML 페이지

<html>

<head>

<title>Dynamic JavaScript Variable Test Page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

var dJSVar="var dJSimgsrc='/tmp/tmp/jpg';"

var dJSVar="var dJSimgsrc='../../../tmp/tmp/jpg';"

var dJSVar="var dJSimgsrc='http://abc.sesta.com/tmp/tmp/jpg';"

//-->

</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 페이지

<html>

<head>

<title>Dynamic JavaScript Variable Test Page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

var dJSVar="var dJSimgsrc='gateway-URL/portal-server-URL/tmp/tmp/jpg';"

var dJSVar="var dJSimgsrc='gateway-URL/portal-server-URL/rewriter/tmp/tmp/jpg';"

var dJSVar="var dJSimgsrc='gateway-URL/http://abc.sesta.com/tmp/tmp/jpg';"

// 위의 모든 구문은 게이트웨이 및 Portal Server URL로 다시 작성됩니다. 필요한 경로가 적합하게 앞에 덧붙여집니다. 첫 번째 규칙은 dJSVar의 오른쪽을 동적 JavaScript 변수로 확인합니다. 그 다음에 dJSimgsrc의 오른쪽을 URL 유형의 JavaScript 변수로 확인하는 두 번째 규칙으로 전달됩니다. 규칙에 따라 다시 작성됩니다.

//-->

</SCRIPT>

<br>

Testing Dynamic JavaScript Variables

<br>

<img src="gateway-URL/portal-server-URL/rewriter/JavaScript/variables/djs/images/logo.gif">

// <Attribute name="src"/> 규칙이 default_gateway_ruleset에 정의되었기 때문에 이 라인은 다시 작성됩니다.

<br>

Image

</body>

</html>

JavaScript SYSTEM 변수 예제

    JavaScript System 변수 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/JavaScript/variables/system/system.html

  3. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우).
  4. Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  5. 게이트웨이를 다시 시작합니다.
  6. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML 페이지

<html>

<head>

<title>JavaScript SYSTEM Variables Test Page</title>

</head>

<body>

<script LANGUAGE="Javascript">

<!--

//SYSTEM Var

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 it is loaded.

</body>

</html>

규칙

<Variable name="window.location.pathname" type="SYSTEM"/>

재작성 후의 HTML

<html>

<head>

<title>JavaScript SYSTEM Variables Test Page</title>

</head>

<body>

<SCRIPT>

convertsystem function definition...

</SCRIPT>

<script LANGUAGE="Javascript">

<!--

//SYSTEM Var

alert(psSRAPRewriter_convert_system(window.location, window.location.pathname,"window.location"));

// Rewriter는 window.location.pathname을 JavaScript SYSTEM 변수로 식별합니다. 이 변수의 값은 서버 쪽에서 결정할 수 없습니다. 따라서 Rewriter는 변수 앞에 psSRAPRewriter_convert_pathname 함수를 덧붙입니다. 이 래퍼 함수는 클라이언트 쪽에서 변수의 값을 결정하고 필요에 따라 다시 작성합니다.

//-->

</SCRIPT>

Testing JavaScript SYSTEM Variables

<br>

This page displays the path where the current page is located when it is loaded.

</body>

</html>

JavaScript URL 함수 예제

    JavaScript URL 함수 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/JavaScript/functions/url/url.html

  3. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우). Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  4. 게이트웨이를 다시 시작합니다.
  5. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML 페이지

<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 페이지

<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>

JavaScript EXPRESSION 함수 예제

    JavaScript Expressions 함수 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/JavaScript/functions/expr/expr.html

  3. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우).
  4. Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  5. 게이트웨이를 다시 시작합니다.
  6. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML 페이지

<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 페이지

<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()));

// 규칙이 EXPRESSION 유형인 jstest1 함수의 첫 번째 매개 변수를 다시 써야 한다고 규정합니다. 이 표현식의 값은 /test/images/test.html입니다. 이 앞에 게이트웨이 및 Portal Server URL이 덧붙습니다.

document.write("<a HREF="+test1+">Test</a>");

alert(test1);

//-->

</SCRIPT>

</body>

</html>

JavaScript DHTML 함수 예제

    JavaScript DHTML 함수 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/JavaScript/functions/dhtml/dhtml.html

  3. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우).
  4. Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  5. 게이트웨이를 다시 시작합니다.
  6. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML 페이지

<html>

<head>

Testing JavaScript DHTML Functions

<br>

<br>

<script>

<!--

document.write('<a href="/index.html">write</a><BR>')

document.writeln('<a href="index.html">writeln</a><BR>')

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 페이지

<html>

<head>

Testing JavaScript DHTML Functions

<br>

<br>

<script>

<!--

document.write('<a href="gateway-URL/portal-server-URL/index.html">write</a><BR>')

// 첫 번째 규칙은 DHTML JavaScript 함수 document.write의 첫 번째 매개 변수를 다시 작성해야 한다고 지정합니다. Rewriter는 첫 번째 매개 변수를 단순 HTML 구문으로 식별합니다. default_gateway_ruleset의 HTML 규칙 부분에는 구문을 다시 써야 한다고 지시하는 <Attribute name="href" /> 규칙이 있습니다.

document.writeln('<a href="gateway-URL/portal-server-URL/rewriter/JavaScript/functions/dhtml/index.html">writeln</a><BR>')

// 두 번째 규칙은 DHTML JavaScript 함수 document.writeln의 첫 번째 매개 변수를 다시 작성해야 한다고 지정합니다. Rewriter는 첫 번째 매개 변수를 단순 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이 아니기 때문입니다. 이것은 어떤 문자열도 될 수 있으며 Rewriter는 이를 다시 작성하는 방법에 대해 알지 못합니다.

//-->

</SCRIPT>

</head>

<body BGCOLOR=white>

<br><br>

Testing document.write and document.writeln

</body>

</html>

JavaScript DJS 함수 예제

    JavaScript DJS 함수 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/JavaScript/functions/djs/djs.html

  3. 게이트웨이 서비스에서 [도메인 및 부속 도메인의 프락시] 목록에 abc.sesta.com이 정의되어 있어야 합니다.
  4. 정의되어 있지 않으면 직접 연결이 가정되고 게이트웨이 URL이 앞에 덧붙지 않습니다.

  5. 이 예제에 지정된 규칙을 "JavaScript 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우). Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  6. 게이트웨이를 다시 시작합니다.
  7. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 HTML 페이지

<html>

Test for JavaScript DJS Functions

<br>

<script>

menu.addItem(new NavBarMenuItem("All Available

Information","JavaScript:top.location='http://abc.sesta.com'"));

//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 페이지

<html>

Testing JavaScript DJS Functions

<br>

<script>

menu.addItem(new NavBarMenuItem("All Available Information","javaScript:top.location='gateway-URL/http://abc.sesta.com'"));

// abc.sesta.com은 게이트웨이 서비스에서 [도메인 및 부속 도메인의 프락시] 목록에 있는 항목입니다. 따라서 Rewriter는 이 URL을 다시 써야 합니다. 그러나 이것이 절대 URL이기 때문에 Portal Server URL은 앞에 덧붙이지 않아도 됩니다. DJS 규칙은 DJS 함수 NavBarMenuItem의 두 번째 매개 변수를 다시 작성해야 한다고 지정합니다. 단, 이 함수도 역시 JavaScript 변수인 경우 두 번째 매개 변수. 이 변수의 값을 다시 쓰기 위해 두 번째 규칙이 필요합니다. 두 번째 규칙은 JavaScript 변수 top.location의 값을 다시 써야 한다고 지정합니다. 이러한 모든 조건이 만족되는 경우 URL이 다시 작성됩니다.

//menu.addItem(new NavBarMenuItem("All Available Information","http://abc.sesta.com"));

// DJS 규칙에서 함수 NavBarMenuItem의 두 번째 매개 변수를 다시 써야 한다고 지정하고 있지만 이 구문에서는 일어나지 않습니다. Rewriter가 두 번째 매개 변수를 단순 HTML로 인식하지 않기 때문입니다.

</script>

</html>

XML 속성 예제

    XML 속성 예제를 사용하려면
  1. 이 예제는 다음에서 액세스할 수 있습니다.
  2. portal-server-URL/rewriter/XML/attrib.html

  3. 이 예제에 지정된 규칙을 "XML 소스 재작성을 위한 규칙" 부분의 default_gateway_ruleset에 추가하십시오(아직 없는 경우).
  4. Identity Server 관리 콘솔 Portal Server 구성의 Rewriter 서비스에서 default_gateway_ruleset을 편집합니다.
  5. 게이트웨이를 다시 시작합니다.
  6. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

재작성 전의 XML

<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

<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에 대한 자세한 내용은 116 페이지의 "규칙에서 패턴 매칭 사용"을 참조하십시오.

</body>

Rewriting ends

</html>


사례 연구

여기에는 예제 메일 클라이언트에 대한 소스 HTML 페이지가 포함되어 있습니다. 이 사례 연구에서는 가능한 모든 경우와 규칙을 다루지 않습니다. 실제 인트라넷 페이지의 규칙을 쉽게 구성하도록 돕기 위한 예제 규칙 집합입니다.

가정

이 사례 연구에서는 다음을 가정합니다.

예제 페이지 1

<!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&amp;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>

설명

표 3-3 은 예제 규칙 집합과 사례 연구 사이의 매핑을 보여줍니다. 첫 번째 열은 페이지 컨텐트, 두 번째 열은 적용되는 규칙, 세 번째 열은 Rewriter 결과 그리고 네 번째 열은 규칙의 적용 방식에 대한 설명입니다.

표 3-3  예제 규칙 집합과 사례 연구 사이의 매핑

페이지 컨텐트

적용 규칙

Rewriter 결과

설명

var g_szVirtualRoot="http://abc.siroe.com/mailweb";

<Variable name="URL"> g_szVirtualRoot </Variable>

var g_szVirtualRoot= "http://gateway.sesta.com/http://abc.siroe.com/mailweb";

g_szVirtualRoot는 그 값이 단순 URL인 변수입니다.

이 규칙은 URL 유형의 변수 g_szVirtualRoot를 검색하라고 Rewriter에 지시합니다. 웹 페이지에 이러한 변수가 있으면 Rewriter가 이를 절대 URL로 변환하고 그 앞에 게이트웨이 URL을 덧붙입니다.

src="/destin_files/logo-ie5.gif"

<Attribute name="src" />

src="http://gateway.sesta.com/http://abc.siroe.com/destin_files/logo-ie5.gif

src는 속성 이름이며 태그나 valuePattern이 따라붙지 않습니다.

이 규칙은 src 이름의 모든 속성을 검색하고 그 속성 값을 다시 쓰라고 Rewriter에 지시합니다.

href="http://abc.siroe.com/mailclient/destin/Inbox/?Cmd=contents&amp;Page=1"

<Attribute name="href"/>

href="http://gateway.sesta.com/http://abc.siroe.com/mailclient/destin/Inbox/?Cmd=contents&amp;Page=1"

href는 속성 이름이며 태그나 valuePattern이 따라붙지 않습니다.

이 규칙은 href 이름의 모든 속성을 검색하고 그 속성 값을 다시 쓰라고 Rewriter에 지시합니다.


참고

규칙 집합을 적용하는 우선 순위는 hostname-subdomain-domain입니다.

예를 들어, 도메인 기반 규칙 집합 목록에 다음 항목이 있다고 가정합니다.

sesta.com|ruleset1

eng.sesta.com|ruleset2

host1.eng.sesta.com|ruleset3

ruleset3은 host1의 모든 페이지에 적용됩니다.

ruleset2는 host1에서 가져온 페이지를 제외하고 eng 부속 도메인의 모든 페이지에 적용됩니다.

ruleset1은 eng 부속 도메인과 host1에서 가져온 페이지를 제외하고 sesta.com 도메인의 모든 페이지에 적용됩니다.


  1. 페이지 맨 위 또는 맨 아래의 [저장]을 눌러 변경 사항을 저장합니다.
  2. 단말기 창에서 게이트웨이를 다시 시작합니다.
  3. gateway-install-root/SUNWps/bin/gateway -n gateway-profile-name start

Outlook Web Access의 규칙 집합

Secure Remote Access는 Sun ONE 웹 서버와 IBM 응용프로그램 서버에서 Outlook Web Access 2000 sp3를 지원합니다.

    OWA 규칙 집합을 구성하려면
  1. Identity Server 관리 콘솔에 관리자로 로그인합니다.
  2. [서비스 구성] 탭을 선택합니다.
  3. SRA 구성 아래에서 게이트웨이 옆에 있는 화살표를 클릭합니다.
  4. 게이트웨이 프로필 페이지가 표시됩니다.

  5. 속성을 설정할 게이트웨이 프로필을 클릭합니다.
  6. 게이트웨이 - gateway-profile-name 페이지가 나타납니다.

  7. [RuleSet과 URI의 매핑] 필드에서 Exchange 2000이 설치된 서버 이름에 이어 Exchange 2000 서비스 팩3 OWA 규칙 집합의 이름을 입력합니다.
  8. 예:

    exchange.domain.com|exchange_2000sp3_owa_ruleset.


6.x 규칙 집합을 3.0과 매핑

다음 표에는 Sun ONE Portal Server, Secure Remote Access Rewriter 규칙을 이전 Sun™ ONE Portal Server 릴리스와 매핑했습니다.

표 3-4  SP4와 규칙 매핑 

Rewriter 6.0 DTD 요소

Rewriter 3.0 목록 상자 이름

HTML 컨텐트에 대한 규칙

속성 - URL

Rewrite HTML 속성

속성 - DJS

JavaScript를 포함한 Rewrite HTML 속성

폼

Rewrite 폼 입력 태그 목록

애플릿

Rewrite 애플릿/개체 매개 변수 값 목록

JavaScript 컨텐트에 대한 규칙

변수 - URL

URL의 Rewrite JavaScript 변수

변수 - EXPRESSION

Rewrite JavaScript 변수 함수

변수 - DHTML

HTML의 Rewrite JavaScript 변수

변수 - DJS

JavaScript의 Rewrite JavaScript 변수

변수 - SYSTEM

Rewrite JavaScript 시스템 변수

함수 - URL

Rewrite JavaScript 함수 매개 변수

함수 - EXPRESSION

Rewrite JavaScript 함수 매개 변수 함수

함수 - DHTML

HTML의 Rewrite JavaScript 함수 매개 변수

함수 - DJS

JavaScript의 Rewrite JavaScript 함수 매개 변수

XML 컨텐트에 대한 규칙

속성 - URL

XML 문서의 Rewrite 속성

TagText

XML 문서의 Rewrite 텍스트 데이터

CSS 컨텐트에 대한 규칙

규칙이 필요 없습니다. 기본적으로 모든 URL이 변환됩니다.

WML 컨텐트에 대한 규칙

정의된 규칙이 없습니다. WML은 HTML로 취급되며 HTML 규칙이 적용됩니다.

WMLScript 컨텐트에 대한 규칙

WML 스크립트에 대한 지원 없음



이전      목차      색인      다음     


Copyright 2003 Sun Microsystems, Inc. 모든 권리는 저작권자의 소유입니다.