Sun ONE logo      上一个      目录      索引      下一个     

Sun ONE Web Server 6.1 管理员指南

第 19 章
使用 WebDAV 实现 Web 发布

Sun ONE Web Server 6.1 支持 WebDAV(即基于 Web 的分布式制作和版本发布),这是一种新兴的基于 Web 的协作标准。WebDAV 是 HTTP/1.1 协议的扩展,它允许客户机执行远程 Web 内容制作操作。

本章主要介绍如何在 Sun ONE Web Server 6.1 中使用 WebDAV。其中包括以下部分:


关于 WebDAV

WebDAV 是对 HTTP/1.1 协议的扩展,添加了新的 HTTP 方法和标头,支持任意类型的 Web 制作,不仅支持 HTML 和 XML,还支持文本、图形、电子表格等格式。

使用 WebDAV 可以完成的工作包括:

Sun ONE Web Server 6.1 中的 WebDAV 支持提供了以下功能:


常见 WebDAV 术语

本节概述了使用 WebDAV 时经常遇到的术语。

URI。URI(统一资源标识符)是一种文件标识符,通过使用缩写的 URL 提供了额外的安全保护。一个 URL 映射代替了 URL 的第一部分,从而对用户隐藏了文件的完整物理路径名。

源 URI。术语“源 URI”是指能用来访问资源的源代码的 URI。为了更好地理解源 URI 的概念,请参见以下实例:

一个名为 foo.jsp 的 JSP 页面位于 URI /docs/date.jsp 处。该页面包含 HTML 标记和 Java 代码,当执行该代码时,将在客户机的浏览器中打印当前的日期。当服务器收到客户机获取 foo.jsp 的 GET 请求后,先执行该 Java 代码,然后提供该页面。客户机收到的并不是该 foo.jsp 页面(因为它驻留在服务器上),而是一个显示当前日期的动态生成的页面。

如果您要创建一个源 URI(例如 /publish/docs)并将其映射到包含 foo.jsp /docs 目录,则对 /publish/docs/foo.jsp 的请求将是请求 /docs/foo.jsp JSP 页面的源代码。在这种情况下,服务器将提供页面而不执行 Java 代码。客户机将收到未经处理的页面,与保存在磁盘中的一样。

这样,对源 URI 的请求也就成了请求资源的源代码。

集合。 WebDAV 集合是为 WebDAV 操作启用的一个或一组资源。集合包含一组称为成员 URI 的 URI,它们标识了启用了 WebDAV 的成员资源。

成员 URI。集合中一组 URI 中的一个成员。

内部成员 URI。与集合的 URI 直接相关的一个成员 URI。例如,如果 URL 为 http://info.sun.com/resources/info 的资源启用了 WebDAV,并且如果 URL 为 http://info.sun.com/resources/ 的资源也启用了 WebDAV,则 URL 为 http://info.sun.com/resources/ 的资源就是一个集合,它包含 http://info.sun.com/resources/info 并将其作为一个内部成员。

特性。一个包含资源的相关说明性信息的“名称/值”对。使用特性可以有效地查找和管理资源。例如,可以使用特性“creationdate”按资源的创建日期索引所有资源,或者使用特性“author”按作者姓名进行索引。

动态特性。由服务器强制实现的特性。例如,动态特性 getcontentlength 有一个值,即 GET 请求返回的实体的长度,它是由服务器自动计算的。动态特性具有以下特性:

静态特性。不是由服务器强制实现的特性。服务器仅记录静态特性的值;客户机负责维护其一致性。

Sun ONE Web Server 6.1 支持以下动态特性:

锁定。锁定资源功能提供了这样一种机制,即可以保证在一个用户编辑资源时,其他用户不能进行修改。锁定可以防止发生覆盖冲突,解决了“丢失更新”的问题。

Sun ONE Web Server 支持两种锁定类型:共享和互斥。

新 HTTP 标头。WebDAV 扩展了 HTTP/1.1 协议。它定义了新的 HTTP 标头,客户机可以通过这些新标头传递 WebDAV 资源请求。这些标头为:

新 HTTP 方法。WebDAV 引入了若干新 HTTP 方法,用于告知启用了 WebDAV 的服务器如何处理请求。这些方法是对现有方法(例如 GETPUTDELETE)的补充,可用来执行 WebDAV 事务。下面简要介绍这些新 HTTP 方法:


使用 WebDAV

一个完整的 WebDAV 事务包括一个启用了 WebDAV 的服务器(例如 Sun ONE Web Server 6.1),它可以为 WebDAV 资源请求提供服务,还包括一个启用了 WebDAV 的客户机(例如 Adobe® GoLive® 或 Macromedia® DreamWeaver®),它支持启用了 WebDAV 的 Web 发布请求。

在服务器端,需要启用并配置 Sun ONE Web Server 6.1 以便能够为 WebDAV 请求提供服务。

要配置 Sun ONE Web Server 6.1 以便使用 WebDAV,需要执行以下步骤:


启用 WebDAV

安装 Sun ONE Web Server 6.1 时,缺省情况下 WebDAV 被禁用。

为了在集合级别启用 WebDAV,还需要在服务器实例级别和虚拟服务器类级别启用 WebDAV。


在集合级别上指定的属性将覆盖在虚拟服务器级别上设置的属性值。


以下各部分对在不同级别上启用 WebDAV 进行了说明:

为服务器实例启用 WebDAV

您可以使用 Administration Server 为整个服务器启用 WebDAV。执行此操作时,以下指令将添加到用于加载 WebDAV 插件的 magnus.conf 文件中:

Init fn="load-modules" shlib="/s1ws6.1/lib/libdavplugin.so" funcs="init-dav,ntrans-dav,pcheck-dav,service-dav"

shlib_flags="(global|now)"

Init fn="init-dav" LateInit=yes

init-dav Init 函数将初始化并注册 WebDAV 子系统。

要全局启用 WebDAV,请执行以下步骤:

  1. 访问要为其启用 WebDAV 的服务器的 Server Manager。
  2. 单击“Preferences”中的“Enable/Disable WebDAV”链接。
  3. 选中“Enable WebDAV Globally”复选框。
  4. 为实例启用 WebDAV
    为服务器实例页面启用/禁用 WebDAV 的图示。

  5. 单击“Apply”。
  6. 单击“Apply Changes”按钮,重新启动服务器。
  7. 单击“Load Configuration Files”,动态应用所做的更改。

为虚拟服务器类启用 WebDAV

要为特定虚拟服务器类启用 WebDAV,请执行以下步骤:

  1. 选择虚拟服务器类。
  2. 单击“Content Mgmt”选项卡。
  3. 单击“Enable/Disable WebDAV”链接。
  4. 为虚拟服务器类启用 WebDAV。
    为虚拟服务器类启用/禁用 WebDAV 的图示。

  5. 选中“Enable DAV”复选框。
  6. 单击“OK”。

为虚拟服务器类启用 WebDAV 时,将使用以下条目更新相关联的 obj.conf 文件:

<Object name="default">

...

Service fn="service-dav" method="(OPTIONS|PUT|DELETE|COPY|MOVE|PROPFIND|PROPPATCH|LOCK|UNLOCK|MKCOL)"

Error fn="error-j2ee"

...

</Object>

...

<Object name="dav">

PathCheck fn="check-acl" acl="dav-src"

Service fn="service-dav" method="(GET|HEAD|POST|PUT|DELETE|COPY|MOVE|PROPFIND|PROPPATCH|LOCK|UNLOCK|MK COL)"

</Object>

为集合启用 WebDAV

如果向某个虚拟服务器添加了一个或多个 WebDAV 集合,您可以随时启用或禁用它们。有关如何执行此操作的信息,请参见编辑 WebDAV 集合


创建 WebDAV 集合

WebDAV 集合是为 WebDAV 操作启用的一个或一组资源。这些操作包括 Web 发布和协作制作、名称空间管理以及元数据管理。

要向虚拟服务器添加 WebDAV 集合,请执行以下步骤:

  1. 确保为服务器实例和虚拟服务器类启用了 WebDAV。有关详细信息,请参见为服务器实例启用 WebDAV为虚拟服务器类启用 WebDAV
  2. 访问您要管理的虚拟服务器并单击“WebDAV”选项卡。
  3. 在“Add DAV Collection”中,输入以下信息:
    • URI(必需)。用于访问内容的 URI。
    • Source URI(可选)。用于访问源的 URI。

    • 如果要发布动态内容(例如 CGI 或 SHTML),必须配置一个源 URI。


      有关术语“源 URI”的解释,请参见“常见 WebDAV 术语”。

    • Lock Database(可选)。用于维护锁数据库的目录。缺省值为 server-instance/lock-db/vs-id
    • Minimum Lock Timeout(可选)。锁的最小生命周期(秒)。缺省值为 0。有关详细信息,请参见“最小锁超时”。
    • Limit XML Request Body(可选)。请求正文中 XML 内容的最大大小。对大小进行限制可防止可能出现的拒绝服务(Denial of Service,DOS)攻击。
    • Maximum Property Depth(可选)。PROPFIND 请求的深度。
      • 0 只适用于指定的资源。
      • 1 适用于指定的资源及其包含的下一级资源。
      • infinity 适用于指定的资源及其包含的所有资源。
      • 缺省情况下,该值被设置为 0

    • Enabled(可选)。为集合启用 WebDAV 功能。
  4. 单击“OK”。

    • 使用 Administration Server 添加集合时,服务器不会自动在文件系统上为集合创建目录。管理员需要确保在文件系统上创建一个与该集合对应的目录。
    • 在 UNIX 系统上,如果您以 root(超级用户)身份安装了 Web 服务器,然后使用其他用户身份运行该服务器,请确保运行服务器的用户身份对您创建的 WebDAV 集合的相应目录具有读/写权限。


编辑 WebDAV 集合

您可以编辑现有 DAV 集合的属性,例如,配置集合的访问控制。

要编辑现有的 WebDAV 集合,请执行以下步骤:

  1. 访问集合所在的虚拟服务器,然后单击“WebDAV”选项卡。
  2. 在“Edit DAV Collections”中,修改以下信息:
    • Delete。允许您删除集合。
    • URI。显示用于访问内容的 URI。
    • Enabled。表示是启用 (true) 还是禁用 (false) WebDAV。
    • Edit Collection。单击此按钮可进行以下配置:
      • URI(必需)。用于访问内容的 URI。
      • Source URI(可选)。用于访问源的 URI。
      • Lock Database(可选)。用于维护锁定数据库的目录。
      • Minimum Lock Timeout(可选)。锁的最小生命周期(秒)。有关详细信息,请参见“最小锁超时”。

      • 如果 minlocktimeout 的值为 -1,则表示无限期锁。


      • Limit XML Request Body(可选)。请求正文中 XML 内容的最大大小。
      • Maximum Property Depth(可选)。PROPFIND 请求的深度。
      • - 0 只适用于指定的资源。

        - 1 适用于指定的资源及其包含的下一级资源。

        - infinity 适用于指定的资源及其包含的所有资源。

        缺省情况下,该值被设置为 0。

      • Enabled(可选)。为集合启用 WebDAV 功能。
    • Edit ACL。单击此按钮可为该集合或 URI 设置访问控制限制。


配置 WebDAV

由于以下原因,您可能希望对 WebDAV 进行配置:例如,要优化服务器性能、消除安全风险或提供无冲突的远程制作。

为满足您的配置要求,您可以更改服务器对 WebDAV 资源的最小锁时间、对集合的 PROPFIND 请求的深度以及请求正文所允许的 XML 内容的最大大小等设置。

可以在虚拟服务器级别为虚拟服务器下的所有集合配置缺省 WebDAV 属性。此处配置的值与 server.xml 文件中的 DAV 元素相对应。

也可以在集合级别配置 WebDAV 属性,这将覆盖为集合配置的任何虚拟服务器级别属性。在集合级别配置的属性与 server.xml 文件中的 DAVCOLLECTION 元素相对应。

在虚拟服务器级别配置 WebDAV

要为虚拟服务器配置 WebDAV 功能,需要编辑 DAV 对象的属性。您可以通过使用 Administration Server 或手动编辑 server.xml 文件来执行此操作。

下表说明了可配置的 DAV 对象的属性:

表 19-1 DAV 对象的属性

属性

说明

enabled

指定是否为该虚拟服务器启用了 WebDAV 功能。

这是一个可选属性。缺省值为 true

可能的值为 truefalse

lockdb

指定用于维护锁定数据库的目录。

这是一个可选属性。

minlocktimeout

指定锁的最小生命周期(秒)。此值表示锁被自动删除之前某元素被锁定的时间。有关详细信息,请参见最小锁超时

这是一个可选属性。

maxxmlrequestbodysize

指定请求正文中 XML 内容的最大大小。

这是一个可选属性。缺省值为 8K。

对大小进行限制可防止可能出现的拒绝服务 (DOS) 攻击。

maxpropdepth

指定 PROPFIND 请求的深度。

这是一个可选参数。缺省值为 0

通过限制此参数的大小可防止过度消耗内存。

在 URI 级别配置 WebDAV

要在 URI 级别配置 WebDAV 功能,需要编辑 server.xml 文件中 DAVCOLLECTION 对象的属性。

下表说明了可配置的 DAVCOLLECTION 对象的属性:

表 19-2 DAVCOLLECTION 对象的属性

属性

说明

enabled

指定是否为该集合启用了 DAV 功能。

这是一个可选属性。

可能的值为 truefalse。缺省值为 true

uri

指定用于访问内容的 URI。

这是一个必需属性。

sourceuri

指定用于访问源的 URI。有关详细信息,请参见常见 WebDAV 术语在启用了 WebDAV 的服务器上使用源 URI 和 Translate:f 标头

这是一个可选属性。

如果未指定 sourceuri,则缺省行为是拒绝对集合中任何动态内容的源代码的访问。

您可以为 urisourceuri 指定相同的 URI,这样,服务器将始终返回动态内容的源代码。如果您使用一个独立的、安全的虚拟服务器进行发布,这会很有用。

lockdb

指定用于维护锁定数据库的目录。

这是一个可选属性。

minlocktimeout

指定锁的最小生命周期(秒)。此值表示锁被自动删除之前某元素被锁定的时间。有关详细信息,请参见最小锁超时

这是一个可选属性。

maxxmlrequestbodysize

指定请求正文中 XML 内容的最大大小。

这是一个可选属性。

对大小进行限制可防止可能出现的拒绝服务 (DOS) 攻击。

maxpropdepth

指定 PROPFIND 请求的深度,它列出了集合的成员资源。

这是一个可选参数。

通过限制此参数的大小可防止过度消耗内存。


在启用了 WebDAV 的服务器上使用源 URI 和 Translate:f 标头

WebDAV 方法处理资源或集合的源。HTTP 方法(例如 GET 和 PUT)会被 WebDAV 协议过载。因此,使用这些方法的请求可以是对资源的源代码的请求,也可以是对资源的内容的请求。

Microsoft 和许多其他 WebDAV 供应商通过以下方式解决了此问题,即随请求发送一个 Translate:f 标头来告知服务器所请求的是源代码。为了能够与常用的 WebDAV 客户机 Microsoft WebFolders 实现互操作,Sun ONE Web Server 6.1 将 Translate:f 标头识别为对资源的源代码的请求。针对不发送 Translate:f 标头的客户机,Sun ONE Web Server 6.1 定义了一个源 URI。有关术语“源 URI”的更详细说明,请参见常见 WebDAV 术语

对于启用了 WebDAV 的集合,对 URI 的请求将检索资源的内容(输出),而对源 URI 的请求将检索资源的源代码。带有 Translate:f 标头的 URI 请求被看作是对源 URI 的请求。

请注意,缺省情况下,所有对资源的源代码的访问均被 dav-src ACL 拒绝,即在服务器实例的特定 ACL 文件中包含以下声明:

deny (all) user = "anyone";

用户可以通过添加对源 URI 的访问权限来允许另一个用户对源代码进行访问。有关添加特定 URI 的 ACL 的详细信息,请参见为 WebDAV 启用访问控制


锁定和解除锁定资源

Sun ONE Web Server 允许服务器管理员锁定资源,以实现对该资源的有序访问。通过使用锁,正在访问某特定资源的用户可以确定其他用户不会修改同一资源。这样就解决了多用户共享服务器上的资源时的“丢失更新”问题。由服务器维护的锁数据库将跟踪客户机发出和正在使用的锁定记。

Sun ONE Web Server 6.1 支持 opaquelocktoken URI 方案,该方案被设计为在所有资源中始终是唯一的。它使用了通用唯一标识符 (UUID) 机制,如 ISO-11578 中所述。

Sun ONE Web Server 6.1 可识别两种锁定机制:

互斥锁

互斥锁仅将资源的访问权限授予一个用户。其他用户要想访问同一资源,只能等到互斥锁被解除。

人们有时觉得互斥锁定这种资源锁定机制太死板,代价也很大。例如,当程序崩溃或锁所有者忘记解除锁定资源时,便需要通过锁定超时或管理员参与来解除互斥锁。

共享锁

共享锁允许多个用户接收某个资源的锁。这样,具有适当访问权限的任何用户都可以获得该锁。

使用共享锁时,锁所有者之间可以使用其他通信通道来协调工作。共享锁的目的是让协作者知道谁还在使用同一资源。

锁管理

Sun ONE Web Server 6.1 提供了一个锁管理功能,使您可以查看所有现有锁、锁的类型、锁的资源以及锁的持续时间等。

要使用锁管理功能,请执行以下步骤:

  1. 访问启用了 WebDAV 的虚拟服务器。
  2. 单击“WebDAV”选项卡。
  3. 单击“Lock Management”链接。
  4. 选择锁数据库和启用了 WebDAV 的 URI,以便查看其现有锁及其他信息。
  5. 单击“List Lock Info”。

最小锁超时

您可以通过在 server.xml 文件中配置 DAV DAVCOLLECTION 对象的 minlocktimeout 属性值来控制锁定。minlocktimeout 属性指定锁的最小生命周期(秒)。此值表示锁被自动删除之前某元素被锁定的时间。

这是一个可选属性。如果此值被设置为 -1,锁将永远不会过期。如果将此值设置为 0,则可以使用请求中指定的 Timeout 标头锁定集合中的所有资源。

如果未指定 Timeout 标头,资源将被锁定且永远不会超时。如果将请求中的 Timeout 标头值设置为 Infinite,同样,资源将被锁定且永远不会超时。

如果对 WebDAV 资源的请求的 Timeout 标头值大于或等于 server.xml 文件中指定的 minlocktimeout 值,则资源的锁定时间将是请求中指定的时间。

但是,如果请求中的 Timeout 标头值小于 server.xml 文件中指定的 minlocktimeout 值,则使用 server.xml 文件中指定的 minlocktimeout 值来锁定资源。

下表列出了 Sun ONE Web Server 处理锁定请求的方式:

表 19-3 Sun ONE Web Server 处理锁定请求的方式

如果请求中的 Timeout 标头被设置为:

则资源:

Infinite

被锁定且超时值被设置为 -1(无限)

被锁定且超时值被设置为 -1(无限)

Second-xxx

  • 如果 xxx 等于或大于 server.xml 文件中设置的 minlocktimeout 值,则使用 xxx 值来锁定。

或者

  • 如果 xxx 小于 server.xml 文件中设置的 minlocktimeout 值,则使用 server.xml 文件中指定的 minlocktimeout 值来锁定。

锁定请求实例

该实例显示了一个资源 /col1/myfile.html 上的互斥写锁定请求,超时值为 500 秒。

LOCK /col1/myfile.html HTTP/1.1

Host:sun

Content-Type:text/xml; charset="utf-8"

Content-Length: 259

Timeout:Second-500

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

<d:lockinfo xmlns:d="DAV:">

<d:locktype><d:write/></d:locktype>

<d:lockscope><d:exclusive/></d:lockscope>

<d:owner>

<d:href>http://info.sun.com/resources/info.html</d:href>

</d:owner>

</d:lockinfo>


为 WebDAV 启用访问控制

您可以控制哪些用户可访问启用了 WebDAV 的文档和目录,以及不同的用户或用户组可对文件执行何种操作。您也可以完全禁止对某个文件或文件夹的访问,或只允许特定的授权用户访问。

如果管理您的服务器的缺省访问控制 (ACL) 没有对您进行限制或限制不多,您便可以使用限制访问功能(选择“Server Preferences”,然后单击“Restrict Access”链接)创建一个更适合的 ACL 来限制对启用了 WebDAV 的资源的访问。

WebDAV 请求分别在 AuthTrans 和 PathCheck NSAPI 阶段进行验证和授权。下面的实例定义了一个访问控制规则,禁止除名为“joe”以外的所有用户对 /catalog 集合进行写入和删除操作:

acl "uri=/catalog/*";

deny(all)

user="anyone";

allow (read,list,execute,info)

user = "all";

allow(write,delete)

user="joe";

有关详细信息,请参见编辑 WebDAV 集合

限制对启用了 WebDAV 的资源的访问

对 WebDAV 集合的访问控制是使用本地 ACL 文件指定的。每个 WebDAV 方法都会请求一个对启用了 WebDAV 的资源的特定访问权限。例如,如果某个启用了 WebDAV 的文件要被多个并行用户共享,为锁定或解除锁定资源以便进行并行控制,需要具备资源的写权限。

下表汇总了 WebDAV 方法所需的权限。

表 19-4 WebDAV 所需的权限

DAV 方法

所需访问权限

DELETE

删除

PROPFIND

PROPPATCH

LOCK/UNLOCK

MKCOL

COPY(src/dst)

src - 读

dst - 写

MOVE(src/dst

src - 删除

dst - 写

GET on request-uri

GET on request-uri

Translate:f

PUT on request-uri

PUT on request-uri

Translate:f


安全性考虑

使用 WebDAV 时,请注意以下安全性考虑:



上一个      目录      索引      下一个     


版权所有 2004 Sun Microsystems, Inc.。保留所有权利。