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 直接相對的成員 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 Plug-in 的 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。
    顯示 [Virtual Server Class] 螢幕 [Enable/Disable 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|MKCOL)"

</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
    • 最小鎖定逾時 (可選)。以秒表示的最小鎖定生命週期。預設值為 0。如需更多資訊,請參閱最小鎖定逾時
    • Limit XML Request Body (可選)。請求內文中最大的 XML 內容大小。對大小進行限制可防止出現拒絕服務 (DOS) 攻擊的可能性。
    • 最大性質深度 (可選)。PROPFIND 請求的深度。
      • 0 僅適用於指定的資源。
      • 1 適用於指定的資源及其包含的下一層級資源。
      • infinity 適用於指定的資源及其包含的所有資源。
      • 依預設,該值設定為 0

    • 已啟用 (可選)。為集合啟用 WebDAV 功能。
  4. 按一下 [OK]。

  5. 備註

    • 當您使用 Administration Server 增加集合時,伺服器不會在檔案系統上自動為集合建立目錄。由管理員負責確定在檔案系統上為集合建立相應的目錄。
    • 在 UNIX 系統上,如果您已經以 root (超級使用者) 身份安裝了 Web Server,並以其他使用者身份執行伺服器,請確定執行伺服器的使用者身份對與所建立的 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。請參閱常用 WebDAV 術語,以取得有關術語「來源 URI」的更詳細說明。

對於啟用了 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 (srcdst)

src - 讀取

dst - 寫入

MOVE (srcdst)

src - 刪除

dst - 寫入

GET on request-uri

讀取

GET on request-uri

Translate:f

讀取

PUT on request-uri

寫入

PUT on request-uri

Translate:f

寫入


安全性考量

使用 WebDAV 時,請注意以下安全性考量:



上一個      目錄      索引      下一個     


Copyright 2004 Sun Microsystems, Inc. 版權所有。