4


配置访问

部署 Content Delivery Server 后,应配置对系统的访问权限。您可能需要在防火墙后面运行某些组件,或者阻止外部系统进行访问。您还可能需要支持容易记住的 URL。

本节包括以下主题:


4.1 针对防火墙配置 Content Delivery Server

Content Delivery Server 将会生成 URL,以便从外部实体(如订户设备)访问其组件。如果在防火墙后面运行 Content Delivery Server,则必须能够从防火墙外部访问这些 URL。使用的初始值是在部署配置文件中为 prefix.external.uri 属性设置的值,其中 prefix 是用于标识组件的字符串。如果在部署前未设置这些属性,请在 $CDS_HOME/deployment/deployment-name/conf 目录下的 CDS.properties 文件中设置以下属性。

         

此外,还必须将 Vending Manager Server 帐户的网络 ID 设置为运行 Web 服务器的主机的内部 IP 地址。使用 Catalog Manager 管理控制台可以更新 Vending Manager Server 帐户。有关详细信息,请参见联机帮助中的“添加 Vending Manager Server 帐户”主题。



提示 - 要验证 Catalog Manager 是否可以访问 Vending Manager,请在运行 Catalog Manager 的主机上启动浏览器。将浏览器指向 http://vending-manager-ip。如果无法显示页面,则必须更正为 Vending Manager Server 帐户(与要访问的 Vending Manager 相关联)指定的域名。




4.2 控制外部系统的访问

通过由内部和外部 URL 属性(在部署配置文件中设置)生成的 URL,可以访问 Content Delivery Server 组件(请参见 A)。要禁止未经授权的访问,请在访问控制文件中设置规则,以定义允许什么样的访问权限。默认访问控制文件允许所有请求者进行访问。



注 - 无需停止服务器即可更新访问控制文件。如果在 Content Delivery Server 运行时更改了该文件,将在下一次向服务器发出请求时强制重新装入该文件。新的规则将立即生效。



4.2.1 访问控制文件

$CDS_HOME/deployment/deployment-name/conf 目录中的 access_control.config 文件用于确定何时允许访问 Content Delivery Server 组件。此文件包含以下类型的语句:

访问控制列表是由关键字 acl 和唯一标识列表的名称标识的。该列表包含一个或多个地址模式。语句的格式为 acl acl-name {address-patterns}

acl-name 是由数字和字母组成的字符串(包括下划线),并且不能与任何语句中使用的任何关键字相匹配。address-patterns 是一个或多个主机名、IP 版本 4 (IPv4) 地址掩码或 IP 版本 6 (IPv6) 地址掩码。有关对 Backus Naur Form (BNF) 表示法中此语句的完整描述,请参见 B

URI 组是由关键字 uri_group 和唯一标识该组的名称标识的。该组包含一个或多个相对路径。语句的格式为 uri_group group-name {paths}

group-name 是由数字和字母组成的字符串(包括下划线),并且不能与任何语句中使用的任何关键字相匹配。paths 是包含 Servlet 上下文名称的一个或多个绝对 URI,这些 URI 表示为正则表达式。有关对 BNF 表示法中此语句的完整描述,请参见 B

规则是由关键字 access 标识的,并且包含以下信息:

引用 URI 组的规则的格式为:
access group group-name protocol protocol method method {control-list}group-name 是为文件中的某个 URI 组指定的名称。protocol 是请求中使用的协议,它是 httphttpsanymethod 标识所请求的操作,它是 getpostputanycontrol-list 是一个语句列表,用于表示允许访问和拒绝访问的地址。

有关对 BNF 表示法中此语句的完整描述,请参见 B。有关如何解释规则的信息,请参见下一节。

4.2.2 访问控制进程

收到要求访问 Content Delivery Server 组件的请求时,将使用访问控制文件中的规则来确定是否允许访问。

如果满足以下条件,则与规则相匹配:

将按照规则在文件中出现的顺序来处理它们。除非遇到关键字 final,否则会将请求与文件中的所有规则进行比较。最后一个匹配的规则确定是否允许访问。通常,您需要在文件结尾处放置限制性较强的规则。

final 关键字将停止匹配进程。此关键字可以出现在规则开头,也可以出现在规则中任何控制列表的结尾。如果此关键字出现在规则的开头,则当请求源与规则的任何控制列表中的地址相匹配时,都会停止匹配进程。如果此关键字出现在某个控制列表的结尾,则仅当请求源与该控制列表中的地址相匹配时,才会停止匹配进程。

当匹配进程停止时,将由包含请求源地址的控制列表中的关键字来确定请求状态。如果关键字为 allow,则允许访问。如果关键字为 deny,将拒绝访问并返回错误代码 404。

如果没有匹配的规则,将允许访问。要拒绝所有与任何规则均不匹配的请求进行访问,请将以下规则添加到规则的开头:

access uri `/.*' protocol any method any {deny any;}


4.3 配置别名转发

别名转发是一种技术,用于接受 URL 并将用户重定向到其他位置。通过此功能,可以为订户提供容易记忆的 URL,并可将请求重定向到正确位置。还可以使用此功能来截取请求,并将其重定向以进行特殊处理。

Content Delivery Server 的 URL 映射是在 aliasforwarding.xml 文件中定义的。该文件位于 $CDS_HOME/deployment/deployment-name/conf 目录中。要使用其他文件,请在 $CDS_HOME/deployment/deployment-name/conf 目录下的 DefaultWebApp.properties 文件中设置 filter.AliasForwarding.file 属性。

别名转发文件是一个过滤器,它使用 XML 来描述收到 URL 时执行的重定向。下表描述了此文件中的元素。


表 4-1 别名转发文件元素

元素

描述

AliasForwarding

包装整个文件。文件中只显示此元素的一个实例,该实例包含所有其他元素。

AliasMap

描述单个映射。此元素包含 URLPatternTargetContextTargetPath 元素。

URLPattern

用于匹配传入 URL 的模式。如果字符串 /* 出现在模式的开头或结尾,则会将其解释为通配符。

TargetContext

标识 Web 应用程序的上下文根路径,请求将被重定向到该 Web 应用程序。指定的值必须是现有的上下文根路径,它是随部署了 Content Delivery Server 的应用服务器一起部署的。默认情况下,Content Delivery Server 将应用程序部署在以下上下文根路径中:

  • /DefaultWebApp
  • /admin
  • /vsadmin
  • /developer
  • /subscriber
  • /fs

如果没有为此元素提供值,则使用根 URI。

TargetPath

位于上下文根路径下的路径,请求将被重定向到该路径。此值必须为绝对路径,并且必须对指定的上下文根路径有效。


 

以下代码示例显示了一个样例映射文件。


代码示例 4-1 样例 aliasForwarding.xml 文件

<AliasForwarding>
    <AliasMap>
        <URLPattern>/dev</URLPattern>
        <TargetContext>/developer</TargetContext>
        <TargetPath>/main</TargetPath>
    </AliasMap>
    <AliasMap>
        <URLPattern>/sub</URLPattern>
        <TargetContext>/subscriber</TargetContext>
        <TargetPath>/desktop_home.do</TargetPath>
    </AliasMap>
A NAME="50544650_pgfId-290331"></AliasForwarding>
 

别名转发过滤器将部署到上下文根路径 /DefaultWebApp 中,Content Delivery Server 将该根路径设置为 Content Delivery Server 请求的默认应用程序。不包含与已知上下文根路径相匹配的 URL 的请求将被发送到默认应用程序,并由该过滤器进行处理。包含与已知上下文根路径相匹配的 URL 的请求将直接发送到应用程序,不由此过滤器进行处理。例如,基于代码示例 4-1 中的映射,对 /sub 的请求将由此过滤器进行处理,然后重新路由到 /subscriber。但是,对 /subscriber 的请求将直接发送到应用程序,而不由此过滤器进行处理。

当 Content Delivery Server 的默认应用程序收到请求时,会根据以下规则将传入 URL 与别名转发文件中的每个 URLPattern 元素进行匹配:

找到匹配项后,进程将停止。然后,请求将被重定向到通过附加 TargetContextTargetPath(与传入请求匹配的 URLPattern 相关联 )值得到的位置。如果未找到匹配项,则将请求返回到应用服务器。

根据定义映射的方式,在找到匹配项时,新位置也可能由过滤器进行处理。请确保未创建循环映射,此类映射只能生成由过滤器处理的 URL,而不会生成被重定向到实际位置的 URL。


4.4 控制对 Sun Java System Application Server 的访问

Sun Java System Application Server 包含一个安全管理器,它可以阻止未在安全策略中定义所需权限的应用程序进行访问。此策略是一个名为 server.policy 的文件;在进行部署后,它位于 $CDS_HOME/deployment/deployment-name/sun/domains/server-domain/config 目录中。

如果使用《Sun Javatrademark System Content Delivery Server 5.1 定制指南》中介绍的 API 编写您自己的适配器,单单使用安全策略中的一组默认权限,并不足以保证适配器能够成功运行。请编辑 server.policy 文件以添加适配器所需的任何定制权限,然后重新启动 Content Delivery Server。有关安全策略的详细信息,请参见 Sun Java System Application Server 文档。