Sun Java System Web Server 7.0 管理員指南

第 10 章 透過 WebDAV 進行 Web 發佈

Sun Java System Web Server 7.0 支援 WebDAV (即網路型分散式創作和版本控制,一種網路型協同作業的標準)。WebDAV 是 HTTP/1.1 協定的延伸,允許用戶端執行遠端 Web 內容創作作業。

完整的 WebDAV 作業事件包含啟用 WebDAV 的伺服器 (如可處理 WebDAV 資源請求的 Sun Java System Web Server 7.0) 以及啟用 WebDAV 的用戶端 (如支援啟用 WebDAV 的 Web 發佈請求之 Adobe(R) GoLive(R) 或 Macromedia(R) DreamWeaver(R))。

在伺服器端,您需要啟用並配置 Sun Java System Web Server 7.0 才能為 WebDAV 請求提供服務。

您可能會因為以下原因而對 WebDAV 進行配置:例如調校伺服器效能、消除安全性風險或提供無衝突遠端創作的環境。

為了滿足您的配置要求,可以變更伺服器對 WebDAV 資源的最短鎖定時間、集合上 PROPFIND 請求的深度以及請求內文所允許的最大 XML 內容大小等等。

您可以在虛擬伺服器層級,為虛擬伺服器下的所有集合配置預設 WebDAV 屬性。此處配置的值與 server.xml 檔案中的 DAV 元素相對應。

也可以在集合層級配置 WebDAV 屬性,這將置換所有為集合配置的虛擬伺服器層級屬性。在集合層級配置的屬性值與 server.xml 檔案中的 DAVCOLLECTION 元素相對應。

關於 WebDAV

WebDAV 是 HTTP/1.1 協定的延伸,所增加之新的 HTTP 方法和標頭,可提供任意類型的 Web 資源創作,除了 HTML 和 XML 之外,還支援文字、圖形、試算表以及所有其他格式。使用 WebDAV 可以完成的某些工作包括:

Sun Java System Web Server 7.0 中的 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 Java System Web Server 支援以下動態特性:


備註 –

Sun Java System Web Server 支援動態特性 executable,此動態特性允許用戶端變更與資源相關聯的檔案許可權。

以下為對 executable 動態特性 PROPPATCH 請求的範例:

PROPPATCH /test/index.html HTTP/1.1

Host: sun

Content-type: text/xml

Content-length: XXXX

<?xml version="1.0"?>

<A:propertyupdate xmlns:A="DAV:" xmlns:B="http://apache.org/dav/props/">

<A:set>

<A:prop>

<B:executable>T</B:executable>

</A:prop>

</A:set>

</A:propertyupdate>


鎖定。鎖定資源功能提供了這樣一種機制,即可以保證一個使用者編輯資源時,其他使用者不能進行修改。鎖定可以防止發生覆寫衝突並解決了「遺失更新」問題。

Sun Java System Web Server 支援兩種鎖定類型:共用鎖定和專用鎖定。

新增 HTTP 標頭。WebDAV 透過延伸 HTTP/1.1 協定進行工作。它定義了新的 HTTP 標頭,用戶端可以通過該標頭傳送 WebDAV 資源請求。這些標頭為:

新增 HTTP 方法。WebDAV 引入了數個新 HTTP 方法,用於指示啟用了 WebDAV 的伺服器如何處理請求。這些方法是對現有方法 (例如GETPUTDELETE) 的補充,用來執行 WebDAV 異動。下面簡要描述了這些新 HTTP 方法:

在實例層級啟用 WebDAV

您可以使用 Administration Server 來為整個伺服器啟用 WebDAV。執行此作業時,以下指令將增加至用於載入 WebDAV Plugin 的 magnus.conf file 檔案中:

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 初始化功能會初始化並註冊 WebDAV 子系統。

若要啟用 WebDAV,請在 CLI 中執行以下指令。


wadm> enable-webdav --user=admin --password-file=admin.pwd 
--host=serverhost --port=8989 --config=test

請參閱 CLI 參考enable-webdav(1)

管理 WebDAV 集合

啟用 WebDAV 集合

若要啟用 WebDAV 集合,請執行以下指令:


wadm> enable-dav-collection --user=admin --password-file=admin.pwd 
--host=serverhost --port=8989 --config=config1 --vs=config1_vs_1 --uri=/dav_config1

請參閱 CLI 參考enable-dav-collection(1)

停用 WebDAV 集合

若要停用 WebDAV 集合,請執行以下指令:


wadm> disable-dav-collection --user=admin --password-file=admin.pwd 
--host=serverhost --port=8989 --config=config1 --vs=config1_vs_1 --uri=/dav_config1

請參閱 CLI 參考disable-dav-collection(1)

增加 WebDAV 集合

若要增加 WebDAV 集合,請執行以下指令:


wadm> create-dav-collection --user=admin --password-file=admin.pwd 
--host=serverhost --port=8989 --config=config1 --vs=config1_vs_1 --uri=/dav_config1 
--source-uri=/dav_config1

請參閱 CLI 參考create-dav-collection(1)

列出 WebDAV 集合

若要列出所有 WebDAV 集合,請執行以下指令:


wadm> list-dav-collections --user=admin --password-file=admin.pwd --host=serverhost 
--port=8989 --config=config1 --vs=config1_vs_1

請參閱 CLI 參考list-dav-collections(1)

移除 WebDAV 集合

若要移除 WebDAV 集合,請執行以下指令:


wadm> delete-dav-collection --user=admin --password-file=admin.pwd --host=serverhost 
--port=8989 --config=config1 --vs=config1_vs_1 --uri=/dav_config1

請參閱 CLI 參考delete-dav-collection(1)

配置 WebDAV 特性

設定 WebDAV 特性

若要設定伺服器層級的 WebDAV 特性,請執行以下指令:


wadm> set-webdav-prop --user=admin --password-file=admin.pwd --host=serverhost 
--port=8989 --config=config1 acl-max-entries=120

請參閱 CLI 參考set-webdav-prop(1)

檢視 WebDAV 特性

若要檢視伺服器層級的 WebDAV 特性,請執行以下指令:


wadm> get-webdav-prop --user=admin --password-file=admin.pwd --host=serverhost 
--port=8989 --config=config1

請參閱 CLI 參考get-webdav-prop(1)

設定 WebDAV 集合特性

若要設定 WebDAV 集合特性,請執行以下指令:


wadm> set-dav-collection-prop --user=admin --password-file=admin.pwd --host=serverhost 
--port=8989 --config=config1 --vs=config1_vs_1 --uri=/dav_config1 min-lock-timeout=1

請參閱 CLI 參考set-dav-collection-prop(1)

檢視 WebDAV 集合特性

若要檢視 WebDAV 集合特性,請執行以下指令:


wadm> get-dav-collection-prop --user=admin --password-file=admin.pwd --host=serverhost 
--port=8989 -config=config1 --vs=config1_vs_1 --uri=/dav_config1

請參閱 CLI 參考get-dav-collection-prop(1)

修改 WebDAV 參數

下表列出一些常見的 WebDAV 特性:

表 10–1 WebDAV 參數

參數

說明

鎖定資料庫路徑

指定將在其中維護鎖定資料庫的目錄。 

最小鎖定逾時

指定鎖定的最小使用期限 (以秒為單位)。值 -1 表示鎖定永遠不會過期。此值表示自動移除鎖定之前,要鎖定某元素的時間。

最大請求大小

指定 XML 請求內文的最大大小。您應配置此值以防止系統遭受可能的阻斷服務攻擊。預設值為 8192 (8K)。

最大展開特性深度

指定 PROPFIND 請求的深度。0 僅適用於指定的資源。這是預設值。1 套用於指定的資源和下一層級。infinity 套用於指定的資源及其包含的所有資源。限制此參數的大小,還可防止過度消耗記憶體。

預設所有者 

集合的預設所有者。 

URI 

將啟用 WebDAV 的現有根目錄 URI。 

最大 PROPFIND 深度 

傳送至集合之 PROPFIND 請求的最大深度。 

鎖定資料庫更新間隔 

WebDAV 鎖定資料庫與磁碟同步的間隔。使用 0 可停用快取 WebDAV 鎖定資訊。 

認證資料庫 

使用的 ACL 認證資料庫。 

認證方法 

使用的認證方法。預設認證方法為「基本」。 

認證提示文字 

請求認證時向用戶端顯示的提示。 

DAV ACL 資料庫

 

最大項目數 

允許單個資源上擁有的最大 ACE 數目。0–2147.0483647.0。指定 – 1 表示無限制。 

最大大小 

某集合之 WebDAV ACL 資料庫的記憶體表示法最大大小。0–2147.0483647.0。指定— 1 表示無限制。 

更新間隔 

WebDAV ACL 資料庫與磁碟同步的間隔。0.001 – 3600 秒。 指定 0 可停用快取 WebDAV ACL 清單。 

DAV 特性資料庫

 

最大大小 

WebDAV 特性資料庫檔案的最大大小。0 – 2147.0483647.0。指定 — 1 表示無限制。 

更新間隔 

WebDAV 特性資料庫與磁碟同步的間隔。0.001 – 3600 秒。 指定 0 可停用快取 WebDAV 特性。 

在伺服器層級停用 WebDAV

若要在伺服器層級停用 WebDAV,請執行以下指令:


wadm> disable-webdav --user=admin --password-file=admin.pwd --host=serverhost 
--port=8989 --config=config1

請參閱 CLI 參考disable-webdav(1)

管理 WebDAV 認證資料庫

在管理主控台上,按一下所選配置的 WebDAV 標籤,以編輯 WebDAV 認證資料庫設定。 下表提供了對頁面中各欄位的簡短說明:

表 10–2 WebDAV 認證資料庫特性

特性

說明

認證資料庫

認證資料庫可讓您選取伺服器將用於認證使用者的資料庫。

預設為 keyfile

認證方法

  • 基本 — 使用 HTTP 基本方法從用戶端取得認證資訊。僅當在伺服器上啟用 SSL 時,才會透過網路對使用者名稱和密碼進行加密。

  • SSL —使用用戶端憑證來認證使用者。若要使用此方法,必須為伺服器啟用 SSL。啟用加密後,您可以結合使用「Basic」和「SSL」方法。

  • 摘要—使用認證機制,使得瀏覽器在根據使用者名稱和密碼進行認證時無須傳送明文格式的使用者名稱和密碼。瀏覽器利用使用者的密碼和 Web 伺服器提供的某些資訊,透過 MD5 演算法來建立摘要值。請注意,若要使用摘要,基本認證資料庫必須也支援摘要。 僅當已安裝摘要認證外掛程式時,這才表示使用 digestfile 的檔案 auth-db 或 LDAP auth-db

  • 其他—使用透過存取控制 API 建立的自訂方法。

認證提示文字

[提示進行認證] 選項可讓您輸入顯示在認證對話方塊中的訊息文字。您可以使用此文字來說明使用者需要輸入的內容。基於瀏覽器不同,使用者將看到該提示中大概前 40 個字元。

通常,Web 瀏覽器會快取使用者名稱和密碼,並將其與提示文字相關聯。當使用者存取具有相同提示之伺服器的檔案和目錄時,無須再次輸入使用者名稱和密碼。如果您要讓使用者針對特定檔案和目錄再次進行認證,則只需變更該資源上 ACL 的提示。 

在啟用了 WebDAV 的伺服器上使用來源 URI 和 Translate:f 標頭

WebDAV 方法可以處理資源或集合的來源。HTTP 方法 (例如 GET 和 PUT) 會被 WebDAV 協定超載。因此,透過這些方法的請求可以是對資源來源的請求,也可以是對資源內容 (輸出) 的請求。

Microsoft 和許多其他 WebDAV 供應商解決了此問題,方法為隨請求傳送一個 Translate:f 標頭來通知伺服器所請求的是來源。為了與常見的 WebDAV 用戶端 Microsoft WebFolders 互通,Sun Java System Web Server7.0 將 Translate:f 標頭視為對資源來源的請求。針對不傳送 Translate:f 標頭的用戶端,Sun Java System Web Server 定義了一個來源 URI。

對於啟用了 WebDAV 的集合,對 URI 的請求將擷取資源內容 (輸出),而對來源 URI 的請求將擷取資源來源。帶有 Translate:f 標頭的 URI 請求被視為是對來源 URI 的請求。

請註意,依預設,所有對資源來源的存取均被 dav-src ACL 拒絕,並在針對伺服器實例的 ACL 檔案中進行以下宣告:

deny (all) user = "anyone";

使用者可以透過在來源 URI 中增加存取權限來允許某個使用者存取該來源。

鎖定和解除鎖定資源

Sun Java System Web Server 允許伺服器管理員鎖定資源,以便串列化對資源的存取。通過使用鎖定,正在存取某特定資源的使用者可以確定其他使用者不會修改同一資源。這樣就解決了多個使用者共用伺服器資源時可能發生的「遺失更新」問題。由伺服器維護的鎖定資料庫將追蹤用戶端發出和正在使用的鎖定記號。

Sun Java System Web Server 支援 opaquelocktokenURI 方案,該方案被設計為在全部資源中始終是唯一的。它使用了通用唯一識別碼 (UUID) 機制,如 ISO-1157.08 中所述。

Sun Java System Web Server 可識別以下兩種鎖定機制:

專用鎖定

專用鎖定是僅授予單一使用者存取資源的鎖定。其他使用者要想存取同一資源,只能等到移除對該資源的專用鎖定之後。

有時對於資源鎖定而言,專用鎖定機制太死板,代價也很大。例如,當程式當機或鎖定擁有者遺忘解除鎖定資源時,便需要通過鎖定逾時或由管理員移除專用鎖定來解決問題。

共用鎖定

共用鎖定允許多個使用者接收資源鎖定。這樣,任何具有適當存取權限的使用者都可以取得該鎖定。

使用共用鎖定時,鎖定擁有者之間可以使用任何其他通訊通道來協調工作。共用鎖定的目的是讓協作者瞭解誰還在使用同一資源。

最小鎖定逾時

您可以透過在 server.xml 檔案中配置 DAVDAVCOLLECTION 物件的 minlocktimeout 屬性值來控制鎖定。minlocktimeout 屬性指定鎖定的最小使用期限 (以秒為單位)。此值表示鎖定被自動移除之前某元素被鎖定的時間。

這是一個可選屬性。如果將此值設定為 -1,則鎖定將永遠不會過期。如果將此值設定為 0,則可以使用在請求中指定的 Timeout 標頭來鎖定集合中的全部資源。

如果未指定 Timeout 標頭,則資源將被鎖定且永遠不會逾時。如果將請求中的 Timeout 標頭值設定為 Infinite,則同樣可將資源鎖定但永遠不會逾時。

如果對 WebDAV 資源的請求之 Timeout 標頭值大於或等於 server.xml 檔案中指定的 minlocktimeout 值,則資源的鎖定時間將是請求中指定的時間。

但是,如果請求中的 Timeout 標頭值小於 server.xml 檔案中指定的 minlocktimeout 值,則使用 server.xml 檔案中指定的 minlocktimeout 值來鎖定資源。

下表說明了 Sun Java System Web Server 處理鎖定請求的方式:

表 10–3 Sun Java System Web Server 處理鎖定請求的方式

如果請求中的 Timeout 標頭值設定為: 

則資源: 

Infinite

被鎖定且逾時值設定為 -1 (無限) 

無 

被鎖定且逾時值設定為 -1 (無限) 

Second-xxx

  • 如果 xxx 等於或大於 server.xml 中設定的 minlocktimeout 值,則使用 xxx 值來鎖定。

  • 如果 xxx 小於 server.xml 中設定的 minlocktimeout 值,則使用 server.xml 中設定的 minlocktimeout 值來鎖定。


備註 –

使用 CLI

若要透過 CLI 設定鎖定到期時間,請執行以下指令:


wadm> expire-lock  --user=admin --password-file=admin.pwd 
--host=serverhost--port=8989 --config=config1 --vs=config1 
--collection-uri=/dav1 --lock-uri=/dav1/file.html
--opaque-token=opaquelocktoken

請參閱 CLI 參考expire-lock(1)

在上述的範例中,opaque-token 可針對您要設定為過期的鎖定,指定其 ID。

若要透過 CLI 顯示現有鎖定,請執行以下指令:


wadm> list-locks --user=admin --password-file=admin.pwd --host=serverhost
--port=8989 --config=config1 --vs config1 --collection-uri=/dav1

請參閱 CLI 參考list-locks(1)