Sun Java System Portal Server Secure Remote Access 7.2 관리 설명서

Rewriter 소개

SRA(Secure Remote Access)의 Rewriter 구성 요소를 통해 최종 사용자가 게이트웨이를 가리키도록 웹 페이지의 URI(Uniform Resource Identifier)를 수정하여 인트라넷을 찾아볼 수 있습니다. URI는 등록된 이름 공간에서 이름을 캡슐화하고 여기에 이름 공간으로 레이블을 설정하는 방법을 정의합니다. URI의 가장 일반적인 유형으로는 URL(Uniform Resource Locator)이 있습니다. Rewriter는 HTTP 또는 HTTPS만 지원합니다. 이러한 지원은 프로토콜에서 대소문자를 구분하지 않고 이루어집니다. Rewriter는 상대 URL의 일부인 경우에만 백슬래시를 지원합니다.


예 4–1 URL 다시 쓰기

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

다시 작성되지 않는 URL: http:\\\\abc.sesta.com. http:/abc.com


문자 집합 암호화

HTTP 표준에 따르면 HTTP 헤더 또는 HTML 메타 태그에서 웹 페이지에 사용할 문자 집합을 지정해야 합니다. 하지만 이 정보를 사용할 수 없는 경우도 있습니다. 데이터의 암호화를 설정하고 만든 사람의 의도에 맞게 데이터를 표시하려면 문자 집합을 알아야 합니다.

문자 집합을 검색하려면 SUNWjchdt 패키지를 Java Enterprise System Accessory CD에서 설치하십시오. 이 제품이 설치되면 Rewriter에서 필요한 경우 이를 검색하여 사용합니다.


주 –

이 제품을 사용하면 성능이 저하될 수 있기 때문에 필요한 경우에만 설치해야 합니다. 설치, 구성 및 사용에 관한 자세한 내용은 jcharset_readme.txt를 참조하십시오.


Rewriter 사용 시나리오

사용자가 게이트웨이를 통해 인트라넷 웹 페이지에 액세스하려고 할 때 Rewriter가 웹 페이지를 사용할 수 있도록 해줍니다. Rewriter는 URLScraper 및 게이트웨이에서 사용됩니다.

URLScraper

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

예를 들어 다음과 같이 사이트에 액세스하는 경우

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

Rewriter는 이것을 다음으로 변환합니다.

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

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

URLScraper 공급자에 대한 자세한 내용은 Sun Java System Portal Server 관리 설명서를 참조하십시오.

게이트웨이

게이트웨이는 인터넷 포털에서 컨텐트를 가져옵니다. 게이트웨이에서 컨텐트를 브라우저로 보내기 전에 게이트웨이 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 관리 설명서를 참조하십시오. 새 규칙 집합을 만든 후 필수 규칙을 정의해야 합니다.

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

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

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


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

규칙 작성을 위한 절차

규칙을 작성하는 일반적인 절차는 다음과 같습니다.

규칙 집합 관련 지침

규칙 집합을 작성하는 경우 다음 사항을 주의하십시오.

규칙 집합의 루트 요소 정의

규칙 집합의 루트 요소에는 두 가지 속성이 있습니다.

재귀적 기능 사용

Rewriter에서는 재귀적 기능을 사용하여 대응되는 문자열 패턴의 끝까지에서 같은 패턴을 검색합니다.

예를 들어 Rewriter에서 다음 문자열을 구문 분석하는 경우

<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=**"/>;

Rewriter는 대응되는 문자열 패턴에서 끝까지 같은 패턴을 찾기 때문에 다음과 같은 출력을 얻게 됩니다.

<a href="src=http://jane.sun.com/abc.jpg,src=http://jane.sun.com/bcd.jpg,src=http://jane.sun.com/xyz.jpg>