RFC3744 日本語訳

3744 Web Distributed Authoring and Versioning (WebDAV) Access ControlProtocol. G. Clemm, J. Reschke, E. Sedlar, J. Whitehead. May 2004. (Format: TXT=146623 bytes) (Status: PROPOSED STANDARD)
プログラムでの自動翻訳です。
英語原文

Network Working Group                                           G. Clemm
Request for Comments: 3744                                           IBM
Category: Standards Track                                     J. Reschke
                                                              greenbytes
                                                               E. Sedlar
                                                      Oracle Corporation
                                                            J. Whitehead
                                                         U.C. Santa Cruz
                                                                May 2004

コメントを求めるワーキンググループG.クレム要求をネットワークでつないでください: 3744年のIBMカテゴリ: 規格Track J.Reschke greenbytes E.Sedlarオラクル株式会社J.ホワイトヘッドU.C.サンタクルス2004年5月

           Web Distributed Authoring and Versioning (WebDAV)
                        Access Control Protocol

ウェブの分配されたオーサリングとVersioning(WebDAV)アクセス制御プロトコル

Status of this Memo

このMemoの状態

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

このドキュメントは、インターネットコミュニティにインターネット標準化過程プロトコルを指定して、改良のために議論と提案を要求します。 このプロトコルの標準化状態と状態への「インターネット公式プロトコル標準」(STD1)の現行版を参照してください。 このメモの分配は無制限です。

Copyright Notice

版権情報

   Copyright (C) The Internet Society (2004).  All Rights Reserved.

Copyright(C)インターネット協会(2004)。 All rights reserved。

Abstract

要約

   This document specifies a set of methods, headers, message bodies,
   properties, and reports that define Access Control extensions to the
   WebDAV Distributed Authoring Protocol.  This protocol permits a
   client to read and modify access control lists that instruct a server
   whether to allow or deny operations upon a resource (such as
   HyperText Transfer Protocol (HTTP) method invocations) by a given
   principal.  A lightweight representation of principals as Web
   resources supports integration of a wide range of user management
   repositories.  Search operations allow discovery and manipulation of
   principals using human names.

このドキュメントはAccess Control拡張子をWebDAV Distributed Authoringプロトコルと定義した1セットのメソッド、ヘッダー、メッセージ本体、特性、およびレポートを指定します。 このプロトコルは、クライアントがリソース(HyperText Transferプロトコル(HTTP)メソッド実施などの)で与えられた元本で操作を許容するか、または否定するようサーバに命令するアクセスコントロールリストを読んで、変更することを許可します。 ウェブリソースとしての主体の軽量の表現はさまざまなユーザー管理倉庫の統合をサポートします。 索敵行動は、人間の名前を使用することで主体の発見と操作を許します。

Clemm, et al.               Standards Track                     [Page 1]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[1ページ]。

Table of Contents

目次

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
       1.1.  Terms. . . . . . . . . . . . . . . . . . . . . . . . . .  6
       1.2.  Notational Conventions . . . . . . . . . . . . . . . . .  8
   2.  Principals . . . . . . . . . . . . . . . . . . . . . . . . . .  8
   3.  Privileges . . . . . . . . . . . . . . . . . . . . . . . . . .  8
       3.1.  DAV:read Privilege . . . . . . . . . . . . . . . . . . . 10
       3.2.  DAV:write Privilege. . . . . . . . . . . . . . . . . . . 10
       3.3.  DAV:write-properties Privilege . . . . . . . . . . . . . 10
       3.4.  DAV:write-content Privilege. . . . . . . . . . . . . . . 11
       3.5.  DAV:unlock Privilege . . . . . . . . . . . . . . . . . . 11
       3.6.  DAV:read-acl Privilege . . . . . . . . . . . . . . . . . 11
       3.7.  DAV:read-current-user-privilege-set Privilege. . . . . . 12
       3.8.  DAV:write-acl Privilege. . . . . . . . . . . . . . . . . 12
       3.9.  DAV:bind Privilege . . . . . . . . . . . . . . . . . . . 12
       3.10. DAV:unbind Privilege . . . . . . . . . . . . . . . . . . 12
       3.11. DAV:all Privilege. . . . . . . . . . . . . . . . . . . . 13
       3.12. Aggregation of Predefined Privileges . . . . . . . . . . 13
   4.  Principal Properties . . . . . . . . . . . . . . . . . . . . . 13
       4.1.  DAV:alternate-URI-set. . . . . . . . . . . . . . . . . . 14
       4.2.  DAV:principal-URL. . . . . . . . . . . . . . . . . . . . 14
       4.3.  DAV:group-member-set . . . . . . . . . . . . . . . . . . 14
       4.4.  DAV:group-membership . . . . . . . . . . . . . . . . . . 14
   5.  Access Control Properties. . . . . . . . . . . . . . . . . . . 15
       5.1.  DAV:owner. . . . . . . . . . . . . . . . . . . . . . . . 15
             5.1.1. Example: Retrieving DAV:owner . . . . . . . . . . 15
             5.1.2. Example: An Attempt to Set DAV:owner. . . . . . . 16
       5.2.  DAV:group. . . . . . . . . . . . . . . . . . . . . . . . 18
       5.3.  DAV:supported-privilege-set. . . . . . . . . . . . . . . 18
             5.3.1. Example: Retrieving a List of Privileges
                    Supported on a Resource . . . . . . . . . . . . . 19
       5.4.  DAV:current-user-privilege-set . . . . . . . . . . . . . 21
             5.4.1. Example: Retrieving the User's Current Set of
                    Assigned Privileges . . . . . . . . . . . . . . . 22
       5.5.  DAV:acl. . . . . . . . . . . . . . . . . . . . . . . . . 23
             5.5.1. ACE Principal . . . . . . . . . . . . . . . . . . 23
             5.5.2. ACE Grant and Deny. . . . . . . . . . . . . . . . 25
             5.5.3. ACE Protection. . . . . . . . . . . . . . . . . . 25
             5.5.4. ACE Inheritance . . . . . . . . . . . . . . . . . 25
             5.5.5. Example: Retrieving a Resource's Access Control
                    List. . . . . . . . . . . . . . . . . . . . . . . 25
       5.6.  DAV:acl-restrictions . . . . . . . . . . . . . . . . . . 27
             5.6.1. DAV:grant-only. . . . . . . . . . . . . . . . . . 27
             5.6.2. DAV:no-invert ACE Constraint. . . . . . . . . . . 28
             5.6.3. DAV:deny-before-grant . . . . . . . . . . . . . . 28
             5.6.4. Required Principals . . . . . . . . . . . . . . . 28
             5.6.5. Example: Retrieving DAV:acl-restrictions. . . . . 28

1. 序論. . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1。 用語… 6 1.2。 記号法のコンベンション. . . . . . . . . . . . . . . . . 8 2。 主体. . . . . . . . . . . . . . . . . . . . . . . . . . 8 3。 特権. . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.1。 DAV: 特権. . . . . . . . . . . . . . . . . . . 10 3.2を読んでください。 DAV: 特権を書いてください。 . . . . . . . . . . . . . . . . . . 10 3.3. DAV: 特性を書いている特権. . . . . . . . . . . . . 10 3.4。 DAV: 内容を書いている特権。 . . . . . . . . . . . . . . 11 3.5. DAV: 特権. . . . . . . . . . . . . . . . . . 11 3.6をアンロックしてください。 DAV: aclを読んでいる特権. . . . . . . . . . . . . . . . . 11 3.7。 DAV: 現在のユーザ特権セットを読んでいる特権。 . . . . . 12 3.8. DAV: aclに書いている特権。 . . . . . . . . . . . . . . . . 12 3.9. DAV: 特権. . . . . . . . . . . . . . . . . . . 12 3.10を縛ってください。 DAV: 特権. . . . . . . . . . . . . . . . . . 12 3.11を解いてください。 DAV: すべての特権。 . . . . . . . . . . . . . . . . . . . 13 3.12. 事前に定義された特権. . . . . . . . . . 13 4の集合。 主要な特性. . . . . . . . . . . . . . . . . . . . . 13 4.1。 DAV: 代替のURIはセットしました。 . . . . . . . . . . . . . . . . . 14 4.2. DAV: 主要なURLです。 . . . . . . . . . . . . . . . . . . . 14 4.3. DAV: グループメンバーセット.144.4。 DAV: グループ会員資格.145。 コントロールの特性にアクセスしてください。 . . . . . . . . . . . . . . . . . . 15 5.1. DAV: 所有者。 . . . . . . . . . . . . . . . . . . . . . . . 15 5.1.1. 例: DAV: 所有者. . . . . . . . . . 15 5.1.2を検索します。 例: DAVを設定する試み: 所有者。 . . . . . . 16 5.2. DAV: 分類してください。 . . . . . . . . . . . . . . . . . . . . . . . 18 5.3. DAV: サポートしている特権はセットしました。 . . . . . . . . . . . . . . 18 5.3.1. 例: リソース. . . . . . . . . . . . . 19 5.4でサポートされた特権のリストを検索します。 DAV: ユーザ特権が設定した電流. . . . . . . . . . . . . 21 5.4.1。 例: ユーザの現在のセットの割り当てられた特権. . . . . . . . . . . . . . . 22 5.5を検索します。 DAV: acl。 . . . . . . . . . . . . . . . . . . . . . . . . 23 5.5.1. ACE主体. . . . . . . . . . . . . . . . . . 23 5.5.2。 ACEは、与えて、否定します。 . . . . . . . . . . . . . . . 25 5.5.3. 保護を負かしてください。 . . . . . . . . . . . . . . . . . 25 5.5.4. 継承. . . . . . . . . . . . . . . . . 25 5.5.5を負かしてください。 例: リソースのアクセスコントロールリストを検索します。 . . . . . . . . . . . . . . . . . . . . . . 25 5.6. DAV: acl-制限.275.6、.1 DAV: 交付金唯一です。 . . . . . . . . . . . . . . . . . 27 5.6.2. DAV: ACE規制を逆にしないでください。 . . . . . . . . . . 28 5.6.3. DAV: 交付金の前に.4に.285.6を否定してください。 必要な主体. . . . . . . . . . . . . . . 28 5.6.5。 例: DAV: acl-制限を検索します。 . . . . 28

Clemm, et al.               Standards Track                     [Page 2]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[2ページ]。

       5.7.  DAV:inherited-acl-set. . . . . . . . . . . . . . . . . . 29
       5.8.  DAV:principal-collection-set . . . . . . . . . . . . . . 30
             5.8.1. Example: Retrieving DAV:principal-collection-set. 30
       5.9.  Example: PROPFIND to retrieve access control properties. 32
   6.  ACL Evaluation . . . . . . . . . . . . . . . . . . . . . . . . 36
   7.  Access Control and existing methods. . . . . . . . . . . . . . 37
       7.1.  Any HTTP method. . . . . . . . . . . . . . . . . . . . . 37
             7.1.1. Error Handling. . . . . . . . . . . . . . . . . . 37
       7.2.  OPTIONS. . . . . . . . . . . . . . . . . . . . . . . . . 38
             7.2.1. Example - OPTIONS . . . . . . . . . . . . . . . . 39
       7.3.  MOVE . . . . . . . . . . . . . . . . . . . . . . . . . . 39
       7.4.  COPY . . . . . . . . . . . . . . . . . . . . . . . . . . 39
       7.5.  LOCK . . . . . . . . . . . . . . . . . . . . . . . . . . 39
   8.  Access Control Methods . . . . . . . . . . . . . . . . . . . . 40
       8.1.  ACL. . . . . . . . . . . . . . . . . . . . . . . . . . . 40
             8.1.1. ACL Preconditions . . . . . . . . . . . . . . . . 40
             8.1.2. Example: the ACL method . . . . . . . . . . . . . 42
             8.1.3. Example: ACL method failure due to protected
                    ACE conflict. . . . . . . . . . . . . . . . . . . 43
             8.1.4. Example: ACL method failure due to an
                    inherited ACE conflict. . . . . . . . . . . . . . 44
             8.1.5. Example: ACL method failure due to an attempt
                    to set grant and deny in a single ACE . . . . . . 45
   9.  Access Control Reports . . . . . . . . . . . . . . . . . . . . 46
       9.1.  REPORT Method. . . . . . . . . . . . . . . . . . . . . . 46
       9.2.  DAV:acl-principal-prop-set Report. . . . . . . . . . . . 47
             9.2.1. Example: DAV:acl-principal-prop-set Report. . . . 48
       9.3.  DAV:principal-match REPORT . . . . . . . . . . . . . . . 49
             9.3.1. Example: DAV:principal-match REPORT . . . . . . . 50
       9.4.  DAV:principal-property-search REPORT . . . . . . . . . . 51
             9.4.1. Matching. . . . . . . . . . . . . . . . . . . . . 53
             9.4.2. Example: successful DAV:principal-property-search
                    REPORT. . . . . . . . . . . . . . . . . . . . . . 54
       9.5.  DAV:principal-search-property-set REPORT . . . . . . . . 56
             9.5.1. Example: DAV:principal-search-property-set
                    REPORT. . . . . . . . . . . . . . . . . . . . . . 58
   10. XML Processing . . . . . . . . . . . . . . . . . . . . . . . . 59
   11. Internationalization Considerations. . . . . . . . . . . . . . 59
   12. Security Considerations. . . . . . . . . . . . . . . . . . . . 60
       12.1. Increased Risk of Compromised Users. . . . . . . . . . . 60
       12.2. Risks of the DAV:read-acl and
             DAV:current-user-privilege-set Privileges. . . . . . . . 60
       12.3. No Foreknowledge of Initial ACL. . . . . . . . . . . . . 61
   13. Authentication . . . . . . . . . . . . . . . . . . . . . . . . 61
   14. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 62
   15. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 62

5.7. DAV: 引き継いでいるaclはセットしました。 . . . . . . . . . . . . . . . . . 29 5.8. DAV: 収集が設定した主体. . . . . . . . . . . . . . 30 5.8.1。 例: DAVを検索します: 主要な収集はセットしました。 30 5.9. 例: アクセスを検索するPROPFINDは特性を制御します。 32 6. ACL評価. . . . . . . . . . . . . . . . . . . . . . . . 36 7。 Controlと既存の方法にアクセスしてください。 . . . . . . . . . . . . . 37 7.1. どんなHTTPメソッド。 . . . . . . . . . . . . . . . . . . . . 37 7.1.1. エラー処理。 . . . . . . . . . . . . . . . . . 37 7.2. オプション。 . . . . . . . . . . . . . . . . . . . . . . . . 38 7.2.1. 例--オプション. . . . . . . . . . . . . . . . 39 7.3。 .397.4を動かしてください。 .397.5をコピーしてください。 .398をロックしてください。 コントロールメソッド. . . . . . . . . . . . . . . . . . . . 40 8.1にアクセスしてください。 ACL。 . . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.1.1. ACLは.2に.408.1をあらかじめ調整します。 例: ACLメソッド. . . . . . . . . . . . . 42 8.1.3。 例: 保護されたACE闘争によるACLメソッドの故障。 . . . . . . . . . . . . . . . . . . 43 8.1.4. 例: 引き継いでいるACE闘争によるACLメソッドの故障。 . . . . . . . . . . . . . 44 8.1.5. 例: 交付金を設定して、シングルでACE. . . . . . 45 9を否定する試みによるACLメソッドの故障。 管理報告. . . . . . . . . . . . . . . . . . . . 46 9.1にアクセスしてください。 メソッドを報告してください。 . . . . . . . . . . . . . . . . . . . . . 46 9.2. DAV: aclの主要な支柱セットレポート。 . . . . . . . . . . . 47 9.2.1. 例: DAV: aclの主要な支柱セットレポート。 . . . 48 9.3. DAV: レポート. . . . . . . . . . . . . . . 49 9.3.1を主体で合わせてください。 例: DAV: レポート. . . . . . . 50 9.4に主体で合ってください。 主要な特性の検索は報告します。DAV:、.519.4 .1。 合わせること。 . . . . . . . . . . . . . . . . . . . . 53 9.4.2. 例: うまくいっているDAV: 主要な特性の検索REPORT。 . . . . . . . . . . . . . . . . . . . . . 54 9.5. DAV: 主要な検索特性のセットレポート. . . . . . . . 56 9.5.1。 例: DAV: 主要な検索特性のセットレポート。 . . . . . . . . . . . . . . . . . . . . . 58 10. XML処理. . . . . . . . . . . . . . . . . . . . . . . . 59 11。 国際化問題。 . . . . . . . . . . . . . 59 12. セキュリティ問題。 . . . . . . . . . . . . . . . . . . . 60 12.1. 感染しているユーザの危険を増強しました。 . . . . . . . . . . 60 12.2. DAVのリスク: aclを読んで、DAV: 設定された現在のユーザ特権特権。 . . . . . . . 60 12.3. 初期のACLの予言がありません。 . . . . . . . . . . . . 61 13. 認証. . . . . . . . . . . . . . . . . . . . . . . . 61 14。 IANA問題。 . . . . . . . . . . . . . . . . . . . . . 62 15. 承認. . . . . . . . . . . . . . . . . . . . . . . 62

Clemm, et al.               Standards Track                     [Page 3]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[3ページ]。

   16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 62
       16.1. Normative References . . . . . . . . . . . . . . . . . . 62
       16.2. Informative References . . . . . . . . . . . . . . . . . 63
   Appendices
   A.  WebDAV XML Document Type Definition Addendum . . . . . . . . . 64
   B.  WebDAV Method Privilege Table (Normative). . . . . . . . . . . 67
   Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 71
   Full Copyright Statement. . . . . . . . . . . . .  . . . . . . . . 72

16. 参照. . . . . . . . . . . . . . . . . . . . . . . . . . 62 16.1。 引用規格. . . . . . . . . . . . . . . . . . 62 16.2。 有益な参照. . . . . . . . . . . . . . . . . 63付録A.WebDAV XMLドキュメントは定義付加物. . . . . . . . . 64B.WebDAVメソッド特権テーブル(標準の)をタイプします。 . . . . . . . . . . 67は索引をつけます。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 作者の69のものが、.71の完全な著作権が声明であると扱います。 . . . . . . . . . . . . . . . . . . . . 72

1.  Introduction

1. 序論

   The goal of the WebDAV access control extensions is to provide an
   interoperable mechanism for handling discretionary access control for
   content and metadata managed by WebDAV servers.  WebDAV access
   control can be implemented on content repositories with security as
   simple as that of a UNIX file system, as well as more sophisticated
   models.  The underlying principle of access control is that who you
   are determines what operations you can perform on a resource.  The
   "who you are" is defined by a "principal" identifier; users, client
   software, servers, and groups of the previous have principal
   identifiers.  The "operations you can perform" are determined by a
   single "access control list" (ACL) associated with a resource.  An
   ACL contains a set of "access control entries" (ACEs), where each ACE
   specifies a principal and a set of privileges that are either granted
   or denied to that principal.  When a principal submits an operation
   (such as an HTTP or WebDAV method) to a resource for execution, the
   server evaluates the ACEs in the ACL to determine if the principal
   has permission for that operation.

WebDAVアクセス制御拡張子の目標はWebDAVサーバによって管理された内容とメタデータのための任意のアクセスコントロールを扱うのに共同利用できるメカニズムを提供することです。 満足している倉庫でUNIXファイルシステムのものと同じくらい簡単なセキュリティでWebDAVアクセス管理を実施されることができます、より精巧なモデルと同様に。 アクセスコントロールの基本的な原則はあなたがだれであるかが、あなたがリソースにどんな操作を実行できるかを決心しているということです。 「あなたは人です」は「主要な」識別子によって定義されます。 前のユーザ、クライアントソフトウェア、サーバ、およびグループには、主要な識別子があります。 リソースに関連している単一の「アクセスコントロールリスト」(ACL)で「あなたが実行できる操作」は決定します。 ACLは1セットの「アクセス制御エントリー」(ACE)を含んでいます。そこでは、各ACEがその主体に対して与えるか、または否定する元本と1セットの特権を指定します。 元本が操作(HTTPかWebDAVメソッドなどの)を実行のためのリソースに提出するとき、サーバは、その操作のために校長に許可があるかどうか決定するためにACLのACEを評価します。

   Since every ACE contains the identifier of a principal, client
   software operated by a human must provide a mechanism for selecting
   this principal.  This specification uses http(s) scheme URLs to
   identify principals, which are represented as WebDAV-capable
   resources.  There is no guarantee that the URLs identifying
   principals will be meaningful to a human.  For example,
   http://www.example.com/u/256432 and
   http://www.example.com/people/Greg.Stein are both valid URLs that
   could be used to identify the same principal.  To remedy this, every
   principal resource has the DAV:displayname property containing a
   human-readable name for the principal.

あらゆるACEが元本に関する識別子を含んでいるので、人間によって操作されたクライアントソフトウェアはこの主体を選択するのにメカニズムを提供しなければなりません。 この仕様は、主体を特定するのにhttp(s)体系URLを使用します。(主体はWebDAVできるリソースとして表されます)。 主体を特定するURLが人間にとって重要になるという保証が全くありません。 例えば、 http://www.example.com/u/256432 と http://www.example.com/people/Greg.Stein は同じ主体を特定するのに使用できた両方の有効なURLです。 これを治すために、あらゆる主要なリソースにはDAVがあります: 主体のための人間読み込み可能な名前を含むdisplaynameの特性。

   Since a principal can be identified by multiple URLs, it raises the
   problem of determining exactly which principal is being referenced in
   a given ACE.  It is impossible for a client to determine that an ACE
   granting the read privilege to http://www.example.com/people/
   Greg.Stein also affects the principal at http://www.example.com/u/
   256432.  That is, a client has no mechanism for determining that two

複数のURLで元本を特定できるので、それはどの主体が与えられたACEで参照をつけられているかをまさに決定するという問題を提起します。 クライアントが、また、読書特権を http://www.example.com/people/ Greg.Steinに与えるACEが http://www.example.com/u/ 256432で主体に影響すると決心しているのは、不可能です。 すなわち、クライアントには、その2を決定するためのメカニズムが全くありません。

Clemm, et al.               Standards Track                     [Page 4]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[4ページ]。

   URLs identify the same principal resource.  As a result, this
   specification requires clients to use just one of the many possible
   URLs for a principal when creating ACEs.  A client can discover which
   URL to use by retrieving the DAV:principal-URL property (Section 4.2)
   from a principal resource.  No matter which of the principal's URLs
   is used with PROPFIND, the property always returns the same URL.

URLは同じ主要なリソースを特定します。 ACEを作成するとき、その結果、この仕様は、クライアントが元本にちょうど多くの可能なURLの1つを使用するのを必要とします。 クライアントは、DAVを検索することによってどのURLを使用したらよいかを発見できます: 主要なリソースからの主要なURLの特性(セクション4.2)。 PROPFINDと共に主体のURLについて使用されない問題であり、全く特性はいつも同じURLを返します。

   With a system having hundreds to thousands of principals, the problem
   arises of how to allow a human operator of client software to select
   just one of these principals.  One approach is to use broad
   collection hierarchies to spread the principals over a large number
   of collections, yielding few principals per collection.  An example
   of this is a two level hierarchy with the first level containing 36
   collections (a-z, 0-9), and the second level being another 36,
   creating collections /a/a/, /a/b/, ..., /a/z/, such that a principal
   with last name "Stein" would appear at /s/t/Stein.  In effect, this
   pre-computes a common query, search on last name, and encodes it into
   a hierarchy.  The drawback with this scheme is that it handles only a
   small set of predefined queries, and drilling down through the
   collection hierarchy adds unnecessary steps (navigate down/up) when
   the user already knows the principal's name.  While organizing
   principal URLs into a hierarchy is a valid namespace organization,
   users should not be forced to navigate this hierarchy to select a
   principal.

数百を何千もの主体まで持っているシステムで、クライアントソフトウェアの人間のオペレータがちょうどこれらの主体の1つを選択するのをどう許容するかを問題は生じます。 1つのアプローチは多くの収集の上に主体を広げるのに広い収集階層構造を使用することです、わずかな1収集あたりの主体しかもたらさないで。 この例は36の収集(0-9に1zの)、および別の36である第2レベルを含んでいる最初のレベルがある2の平らな階層構造です、収集/a/a/を作成して、/a/b/…, /a/z/、最終がある元本が「シタイン」を命名するようなものは/s/t/Steinに現れるでしょう。 事実上、これは、一般的な質問、姓における検索をあらかじめ計算して、それを階層構造にコード化します。 この体系がある欠点は小さいセットの事前に定義された質問だけを扱うということです、そして、ユーザが既に主体の名前を知るとき、収集階層構造を通して穴をあけるのは不要なステップ(下がっているか、または上がった状態で、ナビゲートする)を加えます。 主要なURLを階層構造に組織化するのが、有効な名前空間組織である間、ユーザは、元本を選ぶためにやむを得ずこの階層構造にナビゲートするべきではありません。

   This specification provides the capability to perform substring
   searches over a small set of properties on the resources representing
   principals.  This permits searches based on last name, first name,
   user name, job title, etc.  Two separate searches are supported, both
   via the REPORT method, one to search principal resources
   (DAV:principal-property-search, Section 9.4), the other to determine
   which properties may be searched at all (DAV:principal-search-
   property-set, Section 9.5).

この仕様は主体を表しながら小さい所有地の上でリソースにサブストリング検索を実行する能力を提供します。 これは姓、名、ユーザ名、役職などに基づく検索を可能にします。 2つの別々の検索がサポートされます、ともにREPORTメソッドで、主要なリソース(DAV: 主要な特性の検索、セクション9.4)を捜す1、どの特性がいったい捜されるかもしれないかを決定するもう片方(DAV: 主体特性セット、セクションを探している9.5)。

   Once a principal has been identified in an ACE, a server evaluating
   that ACE must know the identity of the principal making a protocol
   request, and must validate that that principal is who they claim to
   be, a process known as authentication.  This specification
   intentionally omits discussion of authentication, as the HTTP
   protocol already has a number of authentication mechanisms [RFC2617].
   Some authentication mechanism (such as HTTP Digest Authentication,
   which all WebDAV compliant implementations are required to support)
   must be available to validate the identity of a principal.

元本がACEでいったん特定されると、ACEが、主体のアイデンティティがプロトコル要求をして、有効にしなければならないのを知らなければならないサーバが評価して、そんなにそんなに主要であるのは、彼らが主張する人です、認証として知られているプロセス。 HTTPプロトコルに多くの認証機構[RFC2617]が既にあるとき、この仕様は故意に認証の議論を省略します。 何らかの認証機構(HTTP Digest Authenticationなどの)が、元本のアイデンティティを有効にするために利用可能でなければなりません。すべてのWebDAV対応することの実装が、サポートするのにDigest Authenticationに必要です。

Clemm, et al.               Standards Track                     [Page 5]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[5ページ]。

   The following issues are out of scope for this document:

このドキュメントのための範囲の外に以下の問題があります:

   o  Access control that applies only to a particular property on a
      resource (excepting the access control properties DAV:acl and
      DAV:current-user-privilege-set), rather than the entire resource,

o 全体のリソースよりむしろリソース(アクセス制御特性のDAVを除きます: aclとDAV: 現在のユーザ特権セット)の特定の特性だけに申請されるコントロールにアクセスしてください。

   o  Role-based security (where a role can be seen as a dynamically
      defined group of principals),

o 役割のベースのセキュリティ(役割を主体のダイナミックに定義されたグループと考えることができるところ)

   o  Specification of the ways an ACL on a resource is initialized,

o リソースのACLが初期化される方法の仕様

   o  Specification of an ACL that applies globally to all resources,
      rather than to a particular resource.

o 特定のリソースにというよりむしろすべてのリソースにグローバルに適用するACLの仕様。

   o  Creation and maintenance of resources representing people or
      computational agents (principals), and groups of these.

o 人々かコンピュータのエージェント(主体)の代理をするリソース、およびこれらのグループの作成とメインテナンス。

   This specification is organized as follows.  Section 1.1 defines key
   concepts used throughout the specification, and is followed by a more
   in-depth discussion of principals (Section 2), and privileges
   (Section 3).  Properties defined on principals are specified in
   Section 4, and access control properties for content resources are
   specified in Section 5.  The ways ACLs are to be evaluated is
   described in Section 6.  Client discovery of access control
   capability using OPTIONS is described in Section 7.2.  Interactions
   between access control functionality and existing HTTP and WebDAV
   methods are described in the remainder of Section 7.  The access
   control setting method, ACL, is specified in Section 8.  Four reports
   that provide limited server-side searching capabilities are described
   in Section 9.  Sections on XML processing (Section 10),
   Internationalization considerations (Section 11), security
   considerations (Section 12), and authentication (Section 13) round
   out the specification.  An appendix (Appendix A) provides an XML
   Document Type Definition (DTD) for the XML elements defined in the
   specification.

この仕様は以下の通り組織化されます。 セクション1.1を仕様中で使用される重要な考えを定義して、主体(セクション2)、および特権(セクション3)の、より徹底的な議論はあとに続きます。 主体で定義された特性はセクション4で指定されます、そして、満足しているリソースのためのアクセス制御の特性はセクション5で指定されます。 ACLsが評価されることになっている方法はセクション6に述べられます。 OPTIONSを使用するアクセス制御能力のクライアント発見はセクション7.2で説明されます。 アクセス制御の機能性と、既存のHTTPとWebDAVメソッドとの相互作用はセクション7の残りで説明されます。 アクセス制御設定方式(ACL)はセクション8で指定されます。 限られたサーバサイド探す能力を提供する4つのレポートがセクション9で説明されます。 XML処理(セクション10)、Internationalization問題(セクション11)、セキュリティ問題(セクション12)、認証(セクション13)でのセクションは仕様を仕上げます。 付録(付録A)はXML Document Type Definition(DTD)を仕様に基づき定義されたXML要素に供給します。

1.1.  Terms

1.1. 用語

   This document uses the terms defined in HTTP [RFC2616] and WebDAV
   [RFC2518].  In addition, the following terms are defined:

このドキュメントはHTTP[RFC2616]とWebDAV[RFC2518]で定義された用語を使用します。 さらに、次の用語は定義されます:

   principal

主体

      A "principal" is a distinct human or computational actor that
      initiates access to network resources.  In this protocol, a
      principal is an HTTP resource that represents such an actor.

「主体」はネットワーク資源へのアクセスを開始する異なった人間の、または、コンピュータの俳優です。 このプロトコルでは、元本はそのような俳優の代理をするHTTPリソースです。

Clemm, et al.               Standards Track                     [Page 6]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[6ページ]。

   group

グループ

      A "group" is a principal that represents a set of other
      principals.

「グループ」は他の主体の1セットを表す元本です。

   privilege

特権

      A "privilege" controls access to a particular set of HTTP
      operations on a resource.

「特権」はリソースにおける特定のHTTP操作へのアクセスを制御します。

   aggregate privilege

集合特権

      An "aggregate privilege" is a privilege that contains a set of
      other privileges.

「集合特権」は他の特権の1セットを含む特権です。

   abstract privilege

抽象的な特権

      The modifier "abstract", when applied to a privilege on a
      resource, means the privilege cannot be set in an access control
      element (ACE) on that resource.

リソースで特権に適用されると、修飾語「要約」は、そのリソースのアクセス制御要素(ACE)に特権を設定できないことを意味します。

   access control list (ACL)

アクセスコントロールリスト(ACL)

      An "ACL" is a list of access control elements that define access
      control to a particular resource.

"ACL"はアクセスコントロールを特定のリソースと定義するアクセス制御要素のリストです。

   access control element (ACE)

アクセス制御要素(ACE)

      An "ACE" either grants or denies a particular set of (non-
      abstract) privileges for a particular principal.

「ACE」は、特定の元本のために特定のセットの(非抽象的)の特権を与えるか、または否定します。

   inherited ACE

引き継いでいるACE

      An "inherited ACE" is an ACE that is dynamically shared from the
      ACL of another resource.  When a shared ACE changes on the primary
      resource, it is also changed on inheriting resources.

「引き継いでいるACE」は別のリソースのACLからダイナミックに共有されるACEです。 また、リソースを引き継ぐとき共有されたACEがプライマリリソースで変化するとき、それを変えます。

   protected property

保護された特性

      A "protected property" is one whose value cannot be updated except
      by a method explicitly defined as updating that specific property.
      In particular, a protected property cannot be updated with a
      PROPPATCH request.

「保護された特性」は明らかにその特定の性質をアップデートすると定義されたメソッド以外に、値をアップデートできないものです。 特に、PROPPATCH要求で保護された特性をアップデートできません。

Clemm, et al.               Standards Track                     [Page 7]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[7ページ]。

1.2.  Notational Conventions

1.2. 記号法のコンベンション

   The augmented BNF used by this document to describe protocol elements
   is described in Section 2.1 of [RFC2616].  Because this augmented BNF
   uses the basic production rules provided in Section 2.2 of [RFC2616],
   those rules apply to this document as well.

このドキュメントによって使用される、プロトコル要素について説明する増大しているBNFは[RFC2616]のセクション2.1で説明されます。 この増大しているBNFが[RFC2616]のセクション2.2に提供された基本的なプロダクションルールを使用するので、それらの規則はまた、このドキュメントに適用されます。

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

キーワード“MUST"、「必須NOT」が「必要です」、“SHALL"、「」、“SHOULD"、「「推薦され」て、「5月」の、そして、「任意」のNOTは[RFC2119]で説明されるように本書では解釈されることであるべきですか?

   Definitions of XML elements in this document use XML element type
   declarations (as found in XML Document Type Declarations), described
   in Section 3.2 of [REC-XML].  When an XML element type in the "DAV:"
   namespace is referenced in this document outside of the context of an
   XML fragment, the string "DAV:" will be prefixed to the element name.

XML要素の定義は本書では[REC-XML]のセクション3.2で説明されたXML要素型の宣言(XML Document Type Declarationsで見つけられるように)を使用します。 中のXML要素型である、「DAV:」 名前空間が本書ではXML断片、ストリングの文脈の外で参照をつけられる、「DAV:」 要素名へ前に置かれるでしょう。

2.  Principals

2. 主体

   A principal is a network resource that represents a distinct human or
   computational actor that initiates access to network resources.
   Users and groups are represented as principals in many
   implementations; other types of principals are also possible.  A URI
   of any scheme MAY be used to identify a principal resource.  However,
   servers implementing this specification MUST expose principal
   resources at an http(s) URL, which is a privileged scheme that points
   to resources that have additional properties, as described in Section
   4.  So, a principal resource can have multiple URIs, one of which has
   to be an http(s) scheme URL.  Although an implementation SHOULD
   support PROPFIND and MAY support PROPPATCH to access and modify
   information about a principal, it is not required to do so.

元本はネットワーク資源へのアクセスを開始する異なった人間の、または、コンピュータの俳優の代理をするネットワーク資源です。 ユーザとグループは多くの実装における主体として代理をされます。 また、他のタイプの主体も可能です。 どんな体系のURIも、主要なリソースを特定するのに使用されるかもしれません。 しかしながら、この仕様を履行するサーバはhttp(s)URLで主要なリソースを暴露しなければなりません、セクション4で説明されるように。(URLは追加特性を持っているリソースを示す特権がある体系です)。 それで、主要なリソースは複数のURIを持つことができます。その1つはhttp(s)体系URLでなければなりません。 SHOULDがPROPFINDをサポートする実装と5月は元本の情報にアクセスして、変更するためにPROPPATCHをサポートしますが、それは、そうするのに必要ではありません。

   A principal resource may be a group, where a group is a principal
   that represents a set of other principals, called the members of the
   group.  If a person or computational agent matches a principal
   resource that is a member of a group, they also match the group.
   Membership in a group is recursive, so if a principal is a member of
   group GRPA, and GRPA is a member of group GRPB, then the principal is
   also a member of GRPB.

主要なリソースはグループが他の主体の1セットを表す元本であるところにグループのメンバーと呼ばれるグループであるかもしれません。 また、人かコンピュータのエージェントがグループのメンバーである主要なリソースに合っているなら、彼らはグループに合っています。 グループにおける会員資格が再帰的であるので、元本がグループGRPAのメンバーであり、GRPAがグループGRPBのメンバーであるなら、また、主体はGRPBのメンバーです。

3.  Privileges

3. 特権

   Ability to perform a given method on a resource MUST be controlled by
   one or more privileges.  Authors of protocol extensions that define
   new HTTP methods SHOULD specify which privileges (by defining new
   privileges, or mapping to ones below) are required to perform the
   method.  A principal with no privileges to a resource MUST be denied
   any HTTP access to that resource, unless the principal matches an ACE

1つ以上の特権でリソースに与えられたメソッドを実行する能力を制御しなければなりません。 新しいHTTPメソッドSHOULDを定義するプロトコル拡大の作者は、どの特権(新しい特権、またはマッピングを以下のものと定義するのによる)がメソッドを実行するのに必要であるかを指定します。 そのリソースへのどんなHTTPアクセスもリソースへの特権のない元本に拒絶しなければなりません、校長がACEに合っていない場合

Clemm, et al.               Standards Track                     [Page 8]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[8ページ]。

   constructed using the DAV:all, DAV:authenticated, or
   DAV:unauthenticated pseudo-principals (see Section 5.5.1).  Servers
   MUST report a 403 "Forbidden" error if access is denied, except in
   the case where the privilege restricts the ability to know the
   resource exists, in which case 404 "Not Found" may be returned.

使用を組み立てる、DAV: すべて、DAV:、認証、DAV: 疑似主体(セクション5.5.1を見る)を非認証しました。 アクセスが拒絶されるなら、サーバは403の「禁制」の誤りを報告しなければなりません、ケースを除いて中特権がリソース(404が「見つけなかった」ケースは返されるかもしれない)が存在するのを知る能力を制限する。

   Privileges may be containers of other privileges, in which case they
   are termed "aggregate privileges".  If a principal is granted or
   denied an aggregate privilege, it is semantically equivalent to
   granting or denying each of the aggregated privileges individually.
   For example, an implementation may define add-member and remove-
   member privileges that control the ability to add and remove a member
   of a group.  Since these privileges control the ability to update the
   state of a group, these privileges would be aggregated by the
   DAV:write privilege on a group, and granting the DAV:write privilege
   on a group would also grant the add-member and remove-member
   privileges.

特権が他の特権のコンテナであるかもしれない、その場合、それらは「集合特権」と呼ばれます。 元本は集合特権を与えるか、または否定するなら、個別にそれぞれの集められた特権を与えるか、または否定するのに意味的に同等です。 例えば、メンバーを加えて実装を定義するかもしれません、そして、グループのメンバーを加えて、免職する能力を制御するメンバー特権を取り除いてください。 これらの特権がグループの状態をアップデートする能力を制御するので、これらの特権はDAVによって集められるでしょう: DAVを与えます: グループに特権を書いてください、そして、またグループがメンバーを加えていてメンバーを免職している特権を与えるaに特権を書いてください。

   Privileges may be declared to be "abstract" for a given resource, in
   which case they cannot be set in an ACE on that resource.  Aggregate
   and non-aggregate privileges are both capable of being abstract.
   Abstract privileges are useful for modeling privileges that otherwise
   would not be exposed via the protocol.  Abstract privileges also
   provide server implementations with flexibility in implementing the
   privileges defined in this specification.  For example, if a server
   is incapable of separating the read resource capability from the read
   ACL capability, it can still model the DAV:read and DAV:read-acl
   privileges defined in this specification by declaring them abstract,
   and containing them within a non-abstract aggregate privilege (say,
   read-all) that holds DAV:read, and DAV:read-acl.  In this way, it is
   possible to set the aggregate privilege, read-all, thus coupling the
   setting of DAV:read and DAV:read-acl, but it is not possible to set
   DAV:read, or DAV:read-acl individually.  Since aggregate privileges
   can be abstract, it is also possible to use abstract privileges to
   group or organize non-abstract privileges.  Privilege containment
   loops are not allowed; therefore, a privilege MUST NOT contain
   itself.  For example, DAV:read cannot contain DAV:read.

特権が与えられたリソースに「抽象的である」と宣言するかもしれなくて、その場合、そのリソースにACEでそれらを設定できません。 集合の、そして、非集合の特権はともに抽象的であることができます。 抽象的な特権はそうでなければプロトコルで暴露されないモデル特権の役に立ちます。 また、抽象的な特権はこの仕様に基づき定義された特権を実装する際にサーバ実装に柔軟性を提供します。 例えば、サーバが読書ACL能力と読書リソース能力を切り離すことができないなら、まだDAVをモデル化できます: DAV: -aclにこの仕様に基づきDAV: 読書、およびDAVを持っている非抽象的な集合特権(たとえば、読書すべて、)の中にそれらが抽象的であると宣言して、それらを含むことによって定義された特権を読んでください: 読んでください、そして、読書-acl。 このように、集合特権を設定するのは可能です、読書すべて、その結果、DAV: 読書とDAVの設定を結合します: 読書-acl、それだけがDAVを設定するのにおいて可能ではありません: DAV: 読むか、または-aclに個別に読んでください。 集合特権が抽象的である場合があるので、また、非抽象的な特権を分類するか、または組織化するのに抽象的な特権を使用するのも可能です。 特権封じ込め輪は許容されていません。 したがって、特権は気持ちを抑えてはいけません。 例えば、DAV: 読書はDAVを含むことができません: 読んでください。

   The set of privileges that apply to a particular resource may vary
   with the DAV:resourcetype of the resource, as well as between
   different server implementations.  To promote interoperability,
   however, this specification defines a set of well-known privileges
   (e.g., DAV:read, DAV:write, DAV:read-acl, DAV:write-acl, DAV:read-
   current-user-privilege-set, and DAV:all), which can at least be used
   to classify the other privileges defined on a particular resource.
   The access permissions on null resources (defined in [RFC2518],
   Section 3) are solely those they inherit (if any), and they are not
   discoverable (i.e., the access control properties specified in

特定のリソースに申請される特権のセットはDAV: リソースのresourcetypeと、そして、異なったサーバ実装の間で異なるかもしれません。 しかしながら、相互運用性を促進するために、この仕様は1セットのよく知られる特権(DAV: 例えば、読んでください、そして、DAV: 書いてください、そして、DAV: -aclに読んでください、DAV: -aclに書いてください、DAV: DAV: 現在のユーザ特権セット、およびすべてを読む)を定義します。(特定のリソースで定義された他の特権を分類するのに特権を少なくとも使用できます)。 ヌルリソース(中では、[RFC2518]、セクション3を定義する)におけるアクセス許容が唯一引き継ぐ(もしあれば)ものであり、それらが発見可能でない、(すなわち、特性が指定したアクセス制御

Clemm, et al.               Standards Track                     [Page 9]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[9ページ]。

   Section 5 are not defined on null resources).  On the transition from
   null to stateful resource, the initial access control list is set by
   the server's default ACL value policy (if any).

Section 5 are not defined on null resources). On the transition from null to stateful resource, the initial access control list is set by the server's default ACL value policy (if any).

   Server implementations MAY define new privileges beyond those defined
   in this specification.  Privileges defined by individual
   implementations MUST NOT use the DAV: namespace, and instead should
   use a namespace that they control, such as an http scheme URL.

Server implementations MAY define new privileges beyond those defined in this specification. Privileges defined by individual implementations MUST NOT use the DAV: namespace, and instead should use a namespace that they control, such as an http scheme URL.

3.1.  DAV:read Privilege

3.1. DAV:read Privilege

   The read privilege controls methods that return information about the
   state of the resource, including the resource's properties.  Affected
   methods include GET and PROPFIND.  Any implementation-defined
   privilege that also controls access to GET and PROPFIND must be
   aggregated under DAV:read - if an ACL grants access to DAV:read, the
   client may expect that no other privilege needs to be granted to have
   access to GET and PROPFIND.  Additionally, the read privilege MUST
   control the OPTIONS method.

The read privilege controls methods that return information about the state of the resource, including the resource's properties. Affected methods include GET and PROPFIND. Any implementation-defined privilege that also controls access to GET and PROPFIND must be aggregated under DAV:read - if an ACL grants access to DAV:read, the client may expect that no other privilege needs to be granted to have access to GET and PROPFIND. Additionally, the read privilege MUST control the OPTIONS method.

   <!ELEMENT read EMPTY>

<!ELEMENT read EMPTY>

3.2.  DAV:write Privilege

3.2. DAV:write Privilege

   The write privilege controls methods that lock a resource or modify
   the content, dead properties, or (in the case of a collection)
   membership of the resource, such as PUT and PROPPATCH.  Note that
   state modification is also controlled via locking (see section 5.3 of
   [RFC2518]), so effective write access requires that both write
   privileges and write locking requirements are satisfied.  Any
   implementation-defined privilege that also controls access to methods
   modifying content, dead properties or collection membership must be
   aggregated under DAV:write, e.g., if an ACL grants access to
   DAV:write, the client may expect that no other privilege needs to be
   granted to have access to PUT and PROPPATCH.

The write privilege controls methods that lock a resource or modify the content, dead properties, or (in the case of a collection) membership of the resource, such as PUT and PROPPATCH. Note that state modification is also controlled via locking (see section 5.3 of [RFC2518]), so effective write access requires that both write privileges and write locking requirements are satisfied. Any implementation-defined privilege that also controls access to methods modifying content, dead properties or collection membership must be aggregated under DAV:write, e.g., if an ACL grants access to DAV:write, the client may expect that no other privilege needs to be granted to have access to PUT and PROPPATCH.

   <!ELEMENT write EMPTY>

<!ELEMENT write EMPTY>

3.3.  DAV:write-properties Privilege

3.3. DAV:write-properties Privilege

   The DAV:write-properties privilege controls methods that modify the
   dead properties of the resource, such as PROPPATCH.  Whether this
   privilege may be used to control access to any live properties is
   determined by the implementation.  Any implementation-defined
   privilege that also controls access to methods modifying dead
   properties must be aggregated under DAV:write-properties - e.g., if

The DAV:write-properties privilege controls methods that modify the dead properties of the resource, such as PROPPATCH. Whether this privilege may be used to control access to any live properties is determined by the implementation. Any implementation-defined privilege that also controls access to methods modifying dead properties must be aggregated under DAV:write-properties - e.g., if

Clemm, et al.               Standards Track                    [Page 10]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 10] RFC 3744 WebDAV Access Control Protocol May 2004

   an ACL grants access to DAV:write-properties, the client can safely
   expect that no other privilege needs to be granted to have access to
   PROPPATCH.

an ACL grants access to DAV:write-properties, the client can safely expect that no other privilege needs to be granted to have access to PROPPATCH.

   <!ELEMENT write-properties EMPTY>

<!ELEMENT write-properties EMPTY>

3.4.  DAV:write-content Privilege

3.4. DAV:write-content Privilege

   The DAV:write-content privilege controls methods that modify the
   content of an existing resource, such as PUT.  Any implementation-
   defined privilege that also controls access to content must be
   aggregated under DAV:write-content - e.g., if an ACL grants access to
   DAV:write-content, the client can safely expect that no other
   privilege needs to be granted to have access to PUT.  Note that PUT -
   when applied to an unmapped URI - creates a new resource and
   therefore is controlled by the DAV:bind privilege on the parent
   collection.

The DAV:write-content privilege controls methods that modify the content of an existing resource, such as PUT. Any implementation- defined privilege that also controls access to content must be aggregated under DAV:write-content - e.g., if an ACL grants access to DAV:write-content, the client can safely expect that no other privilege needs to be granted to have access to PUT. Note that PUT - when applied to an unmapped URI - creates a new resource and therefore is controlled by the DAV:bind privilege on the parent collection.

   <!ELEMENT write-content EMPTY>

<!ELEMENT write-content EMPTY>

3.5.  DAV:unlock Privilege

3.5. DAV:unlock Privilege

   The DAV:unlock privilege controls the use of the UNLOCK method by a
   principal other than the lock owner (the principal that created a
   lock can always perform an UNLOCK).  While the set of users who may
   lock a resource is most commonly the same set of users who may modify
   a resource, servers may allow various kinds of administrators to
   unlock resources locked by others.  Any privilege controlling access
   by non-lock owners to UNLOCK MUST be aggregated under DAV:unlock.

The DAV:unlock privilege controls the use of the UNLOCK method by a principal other than the lock owner (the principal that created a lock can always perform an UNLOCK). While the set of users who may lock a resource is most commonly the same set of users who may modify a resource, servers may allow various kinds of administrators to unlock resources locked by others. Any privilege controlling access by non-lock owners to UNLOCK MUST be aggregated under DAV:unlock.

   A lock owner can always remove a lock by issuing an UNLOCK with the
   correct lock token and authentication credentials.  That is, even if
   a principal does not have DAV:unlock privilege, they can still remove
   locks they own.  Principals other than the lock owner can remove a
   lock only if they have DAV:unlock privilege and they issue an UNLOCK
   with the correct lock token.  Lock timeout is not affected by the
   DAV:unlock privilege.

A lock owner can always remove a lock by issuing an UNLOCK with the correct lock token and authentication credentials. That is, even if a principal does not have DAV:unlock privilege, they can still remove locks they own. Principals other than the lock owner can remove a lock only if they have DAV:unlock privilege and they issue an UNLOCK with the correct lock token. Lock timeout is not affected by the DAV:unlock privilege.

   <!ELEMENT unlock EMPTY>

<!ELEMENT unlock EMPTY>

3.6.  DAV:read-acl Privilege

3.6. DAV:read-acl Privilege

   The DAV:read-acl privilege controls the use of PROPFIND to retrieve
   the DAV:acl property of the resource.

The DAV:read-acl privilege controls the use of PROPFIND to retrieve the DAV:acl property of the resource.

   <!ELEMENT read-acl EMPTY>

<!ELEMENT read-acl EMPTY>

Clemm, et al.               Standards Track                    [Page 11]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 11] RFC 3744 WebDAV Access Control Protocol May 2004

3.7.  DAV:read-current-user-privilege-set Privilege

3.7. DAV:read-current-user-privilege-set Privilege

   The DAV:read-current-user-privilege-set privilege controls the use of
   PROPFIND to retrieve the DAV:current-user-privilege-set property of
   the resource.

The DAV:read-current-user-privilege-set privilege controls the use of PROPFIND to retrieve the DAV:current-user-privilege-set property of the resource.

   Clients are intended to use this property to visually indicate in
   their UI items that are dependent on the permissions of a resource,
   for example, by graying out resources that are not writable.

Clients are intended to use this property to visually indicate in their UI items that are dependent on the permissions of a resource, for example, by graying out resources that are not writable.

   This privilege is separate from DAV:read-acl because there is a need
   to allow most users access to the privileges permitted the current
   user (due to its use in creating the UI), while the full ACL contains
   information that may not be appropriate for the current authenticated
   user.  As a result, the set of users who can view the full ACL is
   expected to be much smaller than those who can read the current user
   privilege set, and hence distinct privileges are needed for each.

This privilege is separate from DAV:read-acl because there is a need to allow most users access to the privileges permitted the current user (due to its use in creating the UI), while the full ACL contains information that may not be appropriate for the current authenticated user. As a result, the set of users who can view the full ACL is expected to be much smaller than those who can read the current user privilege set, and hence distinct privileges are needed for each.

   <!ELEMENT read-current-user-privilege-set EMPTY>

<!ELEMENT read-current-user-privilege-set EMPTY>

3.8.  DAV:write-acl Privilege

3.8. DAV:write-acl Privilege

   The DAV:write-acl privilege controls use of the ACL method to modify
   the DAV:acl property of the resource.

The DAV:write-acl privilege controls use of the ACL method to modify the DAV:acl property of the resource.

   <!ELEMENT write-acl EMPTY>

<!ELEMENT write-acl EMPTY>

3.9.  DAV:bind Privilege

3.9. DAV:bind Privilege

   The DAV:bind privilege allows a method to add a new member URL to the
   specified collection (for example via PUT or MKCOL).  It is ignored
   for resources that are not collections.

The DAV:bind privilege allows a method to add a new member URL to the specified collection (for example via PUT or MKCOL). It is ignored for resources that are not collections.

   <!ELEMENT bind EMPTY>

<!ELEMENT bind EMPTY>

3.10.  DAV:unbind Privilege

3.10. DAV:unbind Privilege

   The DAV:unbind privilege allows a method to remove a member URL from
   the specified collection (for example via DELETE or MOVE).  It is
   ignored for resources that are not collections.

The DAV:unbind privilege allows a method to remove a member URL from the specified collection (for example via DELETE or MOVE). It is ignored for resources that are not collections.

   <!ELEMENT unbind EMPTY>

<!ELEMENT unbind EMPTY>

Clemm, et al.               Standards Track                    [Page 12]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 12] RFC 3744 WebDAV Access Control Protocol May 2004

3.11.  DAV:all Privilege

3.11. DAV:all Privilege

   DAV:all is an aggregate privilege that contains the entire set of
   privileges that can be applied to the resource.

DAV:all is an aggregate privilege that contains the entire set of privileges that can be applied to the resource.

   <!ELEMENT all EMPTY>

<!ELEMENT all EMPTY>

3.12.  Aggregation of Predefined Privileges

3.12. Aggregation of Predefined Privileges

   Server implementations are free to aggregate the predefined
   privileges (defined above in Sections 3.1-3.10) subject to the
   following limitations:

Server implementations are free to aggregate the predefined privileges (defined above in Sections 3.1-3.10) subject to the following limitations:

   DAV:read-acl MUST NOT contain DAV:read, DAV:write, DAV:write-acl,
   DAV:write-properties, DAV:write-content, or DAV:read-current-user-
   privilege-set.

DAV:read-acl MUST NOT contain DAV:read, DAV:write, DAV:write-acl, DAV:write-properties, DAV:write-content, or DAV:read-current-user- privilege-set.

   DAV:write-acl MUST NOT contain DAV:write, DAV:read, DAV:read-acl, or
   DAV:read-current-user-privilege-set.

DAV:write-acl MUST NOT contain DAV:write, DAV:read, DAV:read-acl, or DAV:read-current-user-privilege-set.

   DAV:read-current-user-privilege-set MUST NOT contain DAV:write,
   DAV:read, DAV:read-acl, or DAV:write-acl.

DAV:read-current-user-privilege-set MUST NOT contain DAV:write, DAV:read, DAV:read-acl, or DAV:write-acl.

   DAV:write MUST NOT contain DAV:read, DAV:read-acl, or DAV:read-
   current-user-privilege-set.

DAV:write MUST NOT contain DAV:read, DAV:read-acl, or DAV:read- current-user-privilege-set.

   DAV:read MUST NOT contain DAV:write, DAV:write-acl, DAV:write-
   properties, or DAV:write-content.

DAV:read MUST NOT contain DAV:write, DAV:write-acl, DAV:write- properties, or DAV:write-content.

   DAV:write MUST contain DAV:bind, DAV:unbind, DAV:write-properties and
   DAV:write-content.

DAV:write MUST contain DAV:bind, DAV:unbind, DAV:write-properties and DAV:write-content.

4.  Principal Properties

4. Principal Properties

   Principals are manifested to clients as a WebDAV resource, identified
   by a URL.  A principal MUST have a non-empty DAV:displayname property
   (defined in Section 13.2 of [RFC2518]), and a DAV:resourcetype
   property (defined in Section 13.9 of [RFC2518]).  Additionally, a
   principal MUST report the DAV:principal XML element in the value of
   the DAV:resourcetype property.  The element type declaration for
   DAV:principal is:

Principals are manifested to clients as a WebDAV resource, identified by a URL. A principal MUST have a non-empty DAV:displayname property (defined in Section 13.2 of [RFC2518]), and a DAV:resourcetype property (defined in Section 13.9 of [RFC2518]). Additionally, a principal MUST report the DAV:principal XML element in the value of the DAV:resourcetype property. The element type declaration for DAV:principal is:

   <!ELEMENT principal EMPTY>

<!ELEMENT principal EMPTY>

Clemm, et al.               Standards Track                    [Page 13]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 13] RFC 3744 WebDAV Access Control Protocol May 2004

   This protocol defines the following additional properties for a
   principal.  Since it can be expensive for a server to retrieve access
   control information, the name and value of these properties SHOULD
   NOT be returned by a PROPFIND allprop request (as defined in Section
   12.14.1 of [RFC2518]).

This protocol defines the following additional properties for a principal. Since it can be expensive for a server to retrieve access control information, the name and value of these properties SHOULD NOT be returned by a PROPFIND allprop request (as defined in Section 12.14.1 of [RFC2518]).

4.1.  DAV:alternate-URI-set

4.1. DAV:alternate-URI-set

   This protected property, if non-empty, contains the URIs of network
   resources with additional descriptive information about the
   principal.  This property identifies additional network resources
   (i.e., it contains one or more URIs) that may be consulted by a
   client to gain additional knowledge concerning a principal.  One
   expected use for this property is the storage of an LDAP [RFC2255]
   scheme URL.  A user-agent encountering an LDAP URL could use LDAP
   [RFC2251] to retrieve additional machine-readable directory
   information about the principal, and display that information in its
   user interface.  Support for this property is REQUIRED, and the value
   is empty if no alternate URI exists for the principal.

This protected property, if non-empty, contains the URIs of network resources with additional descriptive information about the principal. This property identifies additional network resources (i.e., it contains one or more URIs) that may be consulted by a client to gain additional knowledge concerning a principal. One expected use for this property is the storage of an LDAP [RFC2255] scheme URL. A user-agent encountering an LDAP URL could use LDAP [RFC2251] to retrieve additional machine-readable directory information about the principal, and display that information in its user interface. Support for this property is REQUIRED, and the value is empty if no alternate URI exists for the principal.

   <!ELEMENT alternate-URI-set (href*)>

<!ELEMENT alternate-URI-set (href*)>

4.2.  DAV:principal-URL

4.2. DAV:principal-URL

   A principal may have many URLs, but there must be one "principal URL"
   that clients can use to uniquely identify a principal.  This
   protected property contains the URL that MUST be used to identify
   this principal in an ACL request.  Support for this property is
   REQUIRED.

A principal may have many URLs, but there must be one "principal URL" that clients can use to uniquely identify a principal. This protected property contains the URL that MUST be used to identify this principal in an ACL request. Support for this property is REQUIRED.

   <!ELEMENT principal-URL (href)>

<!ELEMENT principal-URL (href)>

4.3.  DAV:group-member-set

4.3. DAV:group-member-set

   This property of a group principal identifies the principals that are
   direct members of this group.  Since a group may be a member of
   another group, a group may also have indirect members (i.e., the
   members of its direct members).  A URL in the DAV:group-member-set
   for a principal MUST be the DAV:principal-URL of that principal.

This property of a group principal identifies the principals that are direct members of this group. Since a group may be a member of another group, a group may also have indirect members (i.e., the members of its direct members). A URL in the DAV:group-member-set for a principal MUST be the DAV:principal-URL of that principal.

   <!ELEMENT group-member-set (href*)>

<!ELEMENT group-member-set (href*)>

4.4.  DAV:group-membership

4.4. DAV:group-membership

   This protected property identifies the groups in which the principal
   is directly a member.  Note that a server may allow a group to be a
   member of another group, in which case the DAV:group-membership of

This protected property identifies the groups in which the principal is directly a member. Note that a server may allow a group to be a member of another group, in which case the DAV:group-membership of

Clemm, et al.               Standards Track                    [Page 14]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 14] RFC 3744 WebDAV Access Control Protocol May 2004

   those other groups would need to be queried in order to determine the
   groups in which the principal is indirectly a member.  Support for
   this property is REQUIRED.

those other groups would need to be queried in order to determine the groups in which the principal is indirectly a member. Support for this property is REQUIRED.

   <!ELEMENT group-membership (href*)>

<!ELEMENT group-membership (href*)>

5.  Access Control Properties

5. Access Control Properties

   This specification defines a number of new properties for WebDAV
   resources.  Access control properties may be retrieved just like
   other WebDAV properties, using the PROPFIND method.  Since it is
   expensive, for many servers, to retrieve access control information,
   a PROPFIND allprop request (as defined in Section 12.14.1 of
   [RFC2518]) SHOULD NOT return the names and values of the properties
   defined in this section.

This specification defines a number of new properties for WebDAV resources. Access control properties may be retrieved just like other WebDAV properties, using the PROPFIND method. Since it is expensive, for many servers, to retrieve access control information, a PROPFIND allprop request (as defined in Section 12.14.1 of [RFC2518]) SHOULD NOT return the names and values of the properties defined in this section.

   Access control properties (especially DAV:acl and DAV:inherited-acl-
   set) are defined on the resource identified by the Request-URI of a
   PROPFIND request.  A direct consequence is that if the resource is
   accessible via multiple URI, the value of access control properties
   is the same across these URI.

Access control properties (especially DAV:acl and DAV:inherited-acl- set) are defined on the resource identified by the Request-URI of a PROPFIND request. A direct consequence is that if the resource is accessible via multiple URI, the value of access control properties is the same across these URI.

   HTTP resources that support the WebDAV Access Control Protocol MUST
   contain the following properties.  Null resources (described in
   Section 3 of [RFC2518]) MUST NOT contain the following properties.

HTTP resources that support the WebDAV Access Control Protocol MUST contain the following properties. Null resources (described in Section 3 of [RFC2518]) MUST NOT contain the following properties.

5.1.  DAV:owner

5.1. DAV:owner

   This  property identifies a particular principal as being the "owner"
   of the resource.  Since the owner of a resource often has special
   access control capabilities (e.g., the owner frequently has permanent
   DAV:write-acl privilege), clients might display the resource owner in
   their user interface.

This property identifies a particular principal as being the "owner" of the resource. Since the owner of a resource often has special access control capabilities (e.g., the owner frequently has permanent DAV:write-acl privilege), clients might display the resource owner in their user interface.

   Servers MAY implement DAV:owner as protected property and MAY return
   an empty DAV:owner element as property value in case no owner
   information is available.

Servers MAY implement DAV:owner as protected property and MAY return an empty DAV:owner element as property value in case no owner information is available.

   <!ELEMENT owner (href?)>

<!ELEMENT owner (href?)>

5.1.1.  Example: Retrieving DAV:owner

5.1.1. Example: Retrieving DAV:owner

   This example shows a client request for the value of the DAV:owner
   property from a collection resource with URL http://www.example.com/
   papers/.  The principal making the request is authenticated using
   Digest authentication.  The value of DAV:owner is the URL http://
   www.example.com/acl/users/gstein, wrapped in the DAV:href XML
   element.

This example shows a client request for the value of the DAV:owner property from a collection resource with URL http://www.example.com/ papers/. The principal making the request is authenticated using Digest authentication. The value of DAV:owner is the URL http:// www.example.com/acl/users/gstein, wrapped in the DAV:href XML element.

Clemm, et al.               Standards Track                    [Page 15]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 15] RFC 3744 WebDAV Access Control Protocol May 2004

   >> Request <<

>> Request <<

   PROPFIND /papers/ HTTP/1.1
   Host: www.example.com
   Content-type: text/xml; charset="utf-8"
   Content-Length: xxx
   Depth: 0
   Authorization: Digest username="jim",
     realm="users@example.com", nonce="...",
     uri="/papers/", response="...", opaque="..."

PROPFIND /papers/ HTTP/1.1 Host: www.example.com Content-type: text/xml; charset="utf-8" Content-Length: xxx Depth: 0 Authorization: Digest username="jim", realm="users@example.com", nonce="...", uri="/papers/", response="...", opaque="..."

   <?xml version="1.0" encoding="utf-8" ?>
   <D:propfind xmlns:D="DAV:">
     <D:prop>
       <D:owner/>
     </D:prop>
   </D:propfind>

<?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:"> <D:prop> <D:owner/> </D:prop> </D:propfind>

   >> Response <<

>> Response <<

   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:">
     <D:response>
       <D:href>http://www.example.com/papers/</D:href>
       <D:propstat>
         <D:prop>
           <D:owner>
             <D:href>http://www.example.com/acl/users/gstein</D:href>
           </D:owner>
         </D:prop>
         <D:status>HTTP/1.1 200 OK</D:status>
       </D:propstat>
     </D:response>
   </D:multistatus>

<?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:"> <D:response> <D:href>http://www.example.com/papers/</D:href> <D:propstat> <D:prop> <D:owner> <D:href>http://www.example.com/acl/users/gstein</D:href> </D:owner> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>

5.1.2.  Example: An Attempt to Set DAV:owner

5.1.2. Example: An Attempt to Set DAV:owner

   The following example shows a client request to modify the value of
   the DAV:owner property on the resource with URL <http://
   www.example.com/papers>.  Since DAV:owner is a protected property on
   this particular server, it responds with a 207 (Multi-Status)
   response that contains a 403 (Forbidden) status code for the act of
   setting DAV:owner.  Section 8.2.1 of [RFC2518] describes PROPPATCH
   status code information,  Section 11 of [RFC2518] describes the

The following example shows a client request to modify the value of the DAV:owner property on the resource with URL <http:// www.example.com/papers>. Since DAV:owner is a protected property on this particular server, it responds with a 207 (Multi-Status) response that contains a 403 (Forbidden) status code for the act of setting DAV:owner. Section 8.2.1 of [RFC2518] describes PROPPATCH status code information, Section 11 of [RFC2518] describes the

Clemm, et al.               Standards Track                    [Page 16]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 16] RFC 3744 WebDAV Access Control Protocol May 2004

   Multi-Status response and Sections 1.6 and 3.12 of [RFC3253] describe
   additional error marshaling for PROPPATCH attempts on protected
   properties.

Multi-Status response and Sections 1.6 and 3.12 of [RFC3253] describe additional error marshaling for PROPPATCH attempts on protected properties.

   >> Request <<

>> Request <<

   PROPPATCH /papers/ HTTP/1.1
   Host: www.example.com
   Content-type: text/xml; charset="utf-8"
   Content-Length: xxx
   Depth: 0
   Authorization: Digest username="jim",
     realm="users@example.com", nonce="...",
     uri="/papers/", response="...", opaque="..."

PROPPATCH /papers/ HTTP/1.1 Host: www.example.com Content-type: text/xml; charset="utf-8" Content-Length: xxx Depth: 0 Authorization: Digest username="jim", realm="users@example.com", nonce="...", uri="/papers/", response="...", opaque="..."

   <?xml version="1.0" encoding="utf-8" ?>
   <D:propertyupdate xmlns:D="DAV:">
     <D:set>
       <D:prop>
         <D:owner>
           <D:href>http://www.example.com/acl/users/jim</D:href>
         </D:owner>
       </D:prop>
     </D:set>
   </D:propertyupdate>

<?xml version="1.0" encoding="utf-8" ?> <D:propertyupdate xmlns:D="DAV:"> <D:set> <D:prop> <D:owner> <D:href>http://www.example.com/acl/users/jim</D:href> </D:owner> </D:prop> </D:set> </D:propertyupdate>

   >> Response <<

>> Response <<

   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:">
     <D:response>
       <D:href>http://www.example.com/papers/</D:href>
       <D:propstat>
         <D:prop><D:owner/></D:prop>
         <D:status>HTTP/1.1 403 Forbidden</D:status>
         <D:responsedescription>
           <D:error><D:cannot-modify-protected-property/></D:error>
           Failure to set protected property (DAV:owner)
         </D:responsedescription>
       </D:propstat>
     </D:response>
   </D:multistatus>

<?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:"> <D:response> <D:href>http://www.example.com/papers/</D:href> <D:propstat> <D:prop><D:owner/></D:prop> <D:status>HTTP/1.1 403 Forbidden</D:status> <D:responsedescription> <D:error><D:cannot-modify-protected-property/></D:error> Failure to set protected property (DAV:owner) </D:responsedescription> </D:propstat> </D:response> </D:multistatus>

Clemm, et al.               Standards Track                    [Page 17]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 17] RFC 3744 WebDAV Access Control Protocol May 2004

5.2.  DAV:group

5.2. DAV:group

   This property identifies a particular principal as being the "group"
   of the resource.  This property is commonly found on repositories
   that implement the Unix privileges model.

This property identifies a particular principal as being the "group" of the resource. This property is commonly found on repositories that implement the Unix privileges model.

   Servers MAY implement DAV:group as protected property and MAY return
   an empty DAV:group element as property value in case no group
   information is available.

Servers MAY implement DAV:group as protected property and MAY return an empty DAV:group element as property value in case no group information is available.

   <!ELEMENT group (href?)>

<!ELEMENT group (href?)>

5.3.  DAV:supported-privilege-set

5.3. DAV:supported-privilege-set

   This is a protected property that identifies the privileges defined
   for the resource.

This is a protected property that identifies the privileges defined for the resource.

   <!ELEMENT supported-privilege-set (supported-privilege*)>

<!ELEMENT supported-privilege-set (supported-privilege*)>

   Each privilege appears as an XML element, where aggregate privileges
   list as sub-elements all of the privileges that they aggregate.

Each privilege appears as an XML element, where aggregate privileges list as sub-elements all of the privileges that they aggregate.

   <!ELEMENT supported-privilege
    (privilege, abstract?, description, supported-privilege*)>
   <!ELEMENT privilege ANY>

<!ELEMENT supported-privilege (privilege, abstract?, description, supported-privilege*)> <!ELEMENT privilege ANY>

   An abstract privilege MUST NOT be used in an ACE for that resource.
   Servers MUST fail an attempt to set an abstract privilege.

An abstract privilege MUST NOT be used in an ACE for that resource. Servers MUST fail an attempt to set an abstract privilege.

   <!ELEMENT abstract EMPTY>

<!ELEMENT abstract EMPTY>

   A description is a human-readable description of what this privilege
   controls access to.  Servers MUST indicate the human language of the
   description using the xml:lang attribute and SHOULD consider the HTTP
   Accept-Language request header when selecting one of multiple
   available languages.

A description is a human-readable description of what this privilege controls access to. Servers MUST indicate the human language of the description using the xml:lang attribute and SHOULD consider the HTTP Accept-Language request header when selecting one of multiple available languages.

   <!ELEMENT description #PCDATA>

<!ELEMENT description #PCDATA>

   It is envisioned that a WebDAV ACL-aware administrative client would
   list the supported privileges in a dialog box, and allow the user to
   choose non-abstract privileges to apply in an ACE.  The privileges
   tree is useful programmatically to map well-known privileges (defined
   by WebDAV or other standards groups) into privileges that are
   supported by any particular server implementation.  The privilege
   tree also serves to hide complexity in implementations allowing large
   number of privileges to be defined by displaying aggregates to the
   user.

It is envisioned that a WebDAV ACL-aware administrative client would list the supported privileges in a dialog box, and allow the user to choose non-abstract privileges to apply in an ACE. The privileges tree is useful programmatically to map well-known privileges (defined by WebDAV or other standards groups) into privileges that are supported by any particular server implementation. The privilege tree also serves to hide complexity in implementations allowing large number of privileges to be defined by displaying aggregates to the user.

Clemm, et al.               Standards Track                    [Page 18]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 18] RFC 3744 WebDAV Access Control Protocol May 2004

5.3.1.  Example: Retrieving a List of Privileges Supported on a Resource

5.3.1. Example: Retrieving a List of Privileges Supported on a Resource

   This example shows a client request for the DAV:supported-privilege-
   set property on the resource http://www.example.com/papers/.  The
   value of the DAV:supported-privilege-set property is a tree of
   supported privileges (using "[XML Namespace , localname]" to identify
   each privilege):

This example shows a client request for the DAV:supported-privilege- set property on the resource http://www.example.com/papers/. The value of the DAV:supported-privilege-set property is a tree of supported privileges (using "[XML Namespace , localname]" to identify each privilege):

   [DAV:, all] (aggregate, abstract)
      |
      +-- [DAV:, read] (aggregate)
             |
             +-- [DAV:, read-acl] (abstract)
             +-- [DAV:, read-current-user-privilege-set] (abstract)
      |
      +-- [DAV:, write] (aggregate)
             |
             +-- [DAV:, write-acl] (abstract)
             +-- [DAV:, write-properties]
             +-- [DAV:, write-content]
      |
      +-- [DAV:, unlock]

[DAV:, all] (aggregate, abstract) | +-- [DAV:, read] (aggregate) | +-- [DAV:, read-acl] (abstract) +-- [DAV:, read-current-user-privilege-set] (abstract) | +-- [DAV:, write] (aggregate) | +-- [DAV:, write-acl] (abstract) +-- [DAV:, write-properties] +-- [DAV:, write-content] | +-- [DAV:, unlock]

   This privilege tree is not normative (except that it reflects the
   normative aggregation rules given in Section 3.12), and many possible
   privilege trees are possible.

This privilege tree is not normative (except that it reflects the normative aggregation rules given in Section 3.12), and many possible privilege trees are possible.

   >> Request <<

>> Request <<

   PROPFIND /papers/ HTTP/1.1
   Host: www.example.com
   Content-type: text/xml; charset="utf-8"
   Content-Length: xxx
   Depth: 0
   Authorization: Digest username="gclemm",
     realm="users@example.com", nonce="...",
     uri="/papers/", response="...", opaque="..."

PROPFIND /papers/ HTTP/1.1 Host: www.example.com Content-type: text/xml; charset="utf-8" Content-Length: xxx Depth: 0 Authorization: Digest username="gclemm", realm="users@example.com", nonce="...", uri="/papers/", response="...", opaque="..."

   <?xml version="1.0" encoding="utf-8" ?>
   <D:propfind xmlns:D="DAV:">
     <D:prop>
       <D:supported-privilege-set/>
     </D:prop>
   </D:propfind>

<?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:"> <D:prop> <D:supported-privilege-set/> </D:prop> </D:propfind>

Clemm, et al.               Standards Track                    [Page 19]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 19] RFC 3744 WebDAV Access Control Protocol May 2004

   >> Response <<

>> Response <<

   HTTP/1.1 207 Multi-Status

HTTP/1.1 207 Multi-Status

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

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

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:">
     <D:response>
       <D:href>http://www.example.com/papers/</D:href>
       <D:propstat>
         <D:prop>
           <D:supported-privilege-set>
             <D:supported-privilege>
               <D:privilege><D:all/></D:privilege>
              <D:abstract/>
               <D:description xml:lang="en">
                 Any operation
               </D:description>
               <D:supported-privilege>
                 <D:privilege><D:read/></D:privilege>
                 <D:description xml:lang="en">
                   Read any object
                 </D:description>
                 <D:supported-privilege>
                   <D:privilege><D:read-acl/></D:privilege>
                   <D:abstract/>
                   <D:description xml:lang="en">Read ACL</D:description>
                 </D:supported-privilege>
                 <D:supported-privilege>
                   <D:privilege>
                     <D:read-current-user-privilege-set/>
                   </D:privilege>
                   <D:abstract/>
                   <D:description xml:lang="en">
                     Read current user privilege set property
                   </D:description>
                 </D:supported-privilege>
               </D:supported-privilege>
               <D:supported-privilege>
                 <D:privilege><D:write/></D:privilege>
                 <D:description xml:lang="en">
                   Write any object
                 </D:description>
                 <D:supported-privilege>
                   <D:privilege><D:write-acl/></D:privilege>
                   <D:description xml:lang="en">

<?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:"> <D:response> <D:href>http://www.example.com/papers/</D:href> <D:propstat> <D:prop> <D:supported-privilege-set> <D:supported-privilege> <D:privilege><D:all/></D:privilege> <D:abstract/> <D:description xml:lang="en"> Any operation </D:description> <D:supported-privilege> <D:privilege><D:read/></D:privilege> <D:description xml:lang="en"> Read any object </D:description> <D:supported-privilege> <D:privilege><D:read-acl/></D:privilege> <D:abstract/> <D:description xml:lang="en">Read ACL</D:description> </D:supported-privilege> <D:supported-privilege> <D:privilege> <D:read-current-user-privilege-set/> </D:privilege> <D:abstract/> <D:description xml:lang="en"> Read current user privilege set property </D:description> </D:supported-privilege> </D:supported-privilege> <D:supported-privilege> <D:privilege><D:write/></D:privilege> <D:description xml:lang="en"> Write any object </D:description> <D:supported-privilege> <D:privilege><D:write-acl/></D:privilege> <D:description xml:lang="en">

Clemm, et al.               Standards Track                    [Page 20]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 20] RFC 3744 WebDAV Access Control Protocol May 2004

                     Write ACL
                   </D:description>
                   <D:abstract/>
                 </D:supported-privilege>
                 <D:supported-privilege>
                   <D:privilege><D:write-properties/></D:privilege>
                   <D:description xml:lang="en">
                     Write properties
                   </D:description>
                 </D:supported-privilege>
                 <D:supported-privilege>
                   <D:privilege><D:write-content/></D:privilege>
                   <D:description xml:lang="en">
                     Write resource content
                   </D:description>
                 </D:supported-privilege>
               </D:supported-privilege>
               <D:supported-privilege>
                 <D:privilege><D:unlock/></D:privilege>
                 <D:description xml:lang="en">
                   Unlock resource
                 </D:description>
               </D:supported-privilege>
             </D:supported-privilege>
           </D:supported-privilege-set>
         </D:prop>
         <D:status>HTTP/1.1 200 OK</D:status>
       </D:propstat>
     </D:response>
   </D:multistatus>

Write ACL </D:description> <D:abstract/> </D:supported-privilege> <D:supported-privilege> <D:privilege><D:write-properties/></D:privilege> <D:description xml:lang="en"> Write properties </D:description> </D:supported-privilege> <D:supported-privilege> <D:privilege><D:write-content/></D:privilege> <D:description xml:lang="en"> Write resource content </D:description> </D:supported-privilege> </D:supported-privilege> <D:supported-privilege> <D:privilege><D:unlock/></D:privilege> <D:description xml:lang="en"> Unlock resource </D:description> </D:supported-privilege> </D:supported-privilege> </D:supported-privilege-set> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>

5.4.  DAV:current-user-privilege-set

5.4. DAV:current-user-privilege-set

   DAV:current-user-privilege-set is a protected property containing the
   exact set of privileges (as computed by the server) granted to the
   currently authenticated HTTP user.  Aggregate privileges and their
   contained privileges are listed.  A user-agent can use the value of
   this property to adjust its user interface to make actions
   inaccessible (e.g., by graying out a menu item or button) for which
   the current principal does not have permission.  This property is
   also useful for determining what operations the current principal can
   perform, without having to actually execute an operation.

DAV:current-user-privilege-set is a protected property containing the exact set of privileges (as computed by the server) granted to the currently authenticated HTTP user. Aggregate privileges and their contained privileges are listed. A user-agent can use the value of this property to adjust its user interface to make actions inaccessible (e.g., by graying out a menu item or button) for which the current principal does not have permission. This property is also useful for determining what operations the current principal can perform, without having to actually execute an operation.

   <!ELEMENT current-user-privilege-set (privilege*)>
   <!ELEMENT privilege ANY>

<!ELEMENT current-user-privilege-set (privilege*)> <!ELEMENT privilege ANY>

Clemm, et al.               Standards Track                    [Page 21]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 21] RFC 3744 WebDAV Access Control Protocol May 2004

   If the current user is granted a specific privilege, that privilege
   must belong to the set of privileges that may be set on this
   resource.  Therefore, each element in the DAV:current-user-
   privilege-set property MUST identify a non-abstract privilege from
   the DAV:supported-privilege-set property.

If the current user is granted a specific privilege, that privilege must belong to the set of privileges that may be set on this resource. Therefore, each element in the DAV:current-user- privilege-set property MUST identify a non-abstract privilege from the DAV:supported-privilege-set property.

5.4.1.  Example: Retrieving the User's Current Set of Assigned
        Privileges

5.4.1. Example: Retrieving the User's Current Set of Assigned Privileges

   Continuing the example from Section 5.3.1, this example shows a
   client requesting the DAV:current-user-privilege-set property from
   the resource with URL http://www.example.com/papers/.  The username
   of the principal making the request is "khare", and Digest
   authentication is used in the request.  The principal with username
   "khare" has been granted the DAV:read privilege.  Since the DAV:read
   privilege contains the DAV:read-acl and DAV:read-current-user-
   privilege-set privileges (see Section 5.3.1), the principal with
   username "khare" can read the ACL property, and the DAV:current-
   user-privilege-set property.  However, the DAV:all, DAV:read-acl,
   DAV:write-acl and DAV:read-current-user-privilege-set privileges are
   not listed in the value of DAV:current-user-privilege-set, since (for
   this example) they are abstract privileges.  DAV:write is not listed
   since the principal with username "khare" is not listed in an ACE
   granting that principal write permission.

Continuing the example from Section 5.3.1, this example shows a client requesting the DAV:current-user-privilege-set property from the resource with URL http://www.example.com/papers/. The username of the principal making the request is "khare", and Digest authentication is used in the request. The principal with username "khare" has been granted the DAV:read privilege. Since the DAV:read privilege contains the DAV:read-acl and DAV:read-current-user- privilege-set privileges (see Section 5.3.1), the principal with username "khare" can read the ACL property, and the DAV:current- user-privilege-set property. However, the DAV:all, DAV:read-acl, DAV:write-acl and DAV:read-current-user-privilege-set privileges are not listed in the value of DAV:current-user-privilege-set, since (for this example) they are abstract privileges. DAV:write is not listed since the principal with username "khare" is not listed in an ACE granting that principal write permission.

   >> Request <<

>> Request <<

   PROPFIND /papers/ HTTP/1.1
   Host: www.example.com
   Content-type: text/xml; charset="utf-8"
   Content-Length: xxx
   Depth: 0
   Authorization: Digest username="khare",
     realm="users@example.com", nonce="...",
     uri="/papers/", response="...", opaque="..."

PROPFIND /papers/ HTTP/1.1 Host: www.example.com Content-type: text/xml; charset="utf-8" Content-Length: xxx Depth: 0 Authorization: Digest username="khare", realm="users@example.com", nonce="...", uri="/papers/", response="...", opaque="..."

   <?xml version="1.0" encoding="utf-8" ?>
   <D:propfind xmlns:D="DAV:">
     <D:prop>
       <D:current-user-privilege-set/>
     </D:prop>
   </D:propfind>

<?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:"> <D:prop> <D:current-user-privilege-set/> </D:prop> </D:propfind>

Clemm, et al.               Standards Track                    [Page 22]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 22] RFC 3744 WebDAV Access Control Protocol May 2004

   >> Response <<

>> Response <<

   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:">
     <D:response>
     <D:href>http://www.example.com/papers/</D:href>
     <D:propstat>
       <D:prop>
         <D:current-user-privilege-set>
           <D:privilege><D:read/></D:privilege>
         </D:current-user-privilege-set>
       </D:prop>
       <D:status>HTTP/1.1 200 OK</D:status>
     </D:propstat>
     </D:response>
   </D:multistatus>

<?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:"> <D:response> <D:href>http://www.example.com/papers/</D:href> <D:propstat> <D:prop> <D:current-user-privilege-set> <D:privilege><D:read/></D:privilege> </D:current-user-privilege-set> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>

5.5.  DAV:acl

5.5. DAV:acl

   This is a protected property that specifies the list of access
   control entries (ACEs), which define what principals are to get what
   privileges for this resource.

This is a protected property that specifies the list of access control entries (ACEs), which define what principals are to get what privileges for this resource.

   <!ELEMENT acl (ace*) >

<!ELEMENT acl (ace*) >

   Each DAV:ace element specifies the set of privileges to be either
   granted or denied to a single principal.  If the DAV:acl property is
   empty, no principal is granted any privilege.

Each DAV:ace element specifies the set of privileges to be either granted or denied to a single principal. If the DAV:acl property is empty, no principal is granted any privilege.

   <!ELEMENT ace ((principal | invert), (grant|deny), protected?,
                  inherited?)>

<!ELEMENT ace ((principal | invert), (grant|deny), protected?, inherited?)>

5.5.1.  ACE Principal

5.5.1. ACE Principal

   The DAV:principal element identifies the principal to which this ACE
   applies.

The DAV:principal element identifies the principal to which this ACE applies.

   <!ELEMENT principal (href | all | authenticated | unauthenticated
    | property | self)>

<!ELEMENT principal (href | all | authenticated | unauthenticated | property | self)>

   The current user matches DAV:href only if that user is authenticated
   as being (or being a member of) the principal identified by the URL
   contained by that DAV:href.

The current user matches DAV:href only if that user is authenticated as being (or being a member of) the principal identified by the URL contained by that DAV:href.

Clemm, et al.               Standards Track                    [Page 23]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 23] RFC 3744 WebDAV Access Control Protocol May 2004

   The current user always matches DAV:all.

The current user always matches DAV:all.

   <!ELEMENT all EMPTY>

<!ELEMENT all EMPTY>

   The current user matches DAV:authenticated only if authenticated.

The current user matches DAV:authenticated only if authenticated.

   <!ELEMENT authenticated EMPTY>

<!ELEMENT authenticated EMPTY>

   The current user matches DAV:unauthenticated only if not
   authenticated.

The current user matches DAV:unauthenticated only if not authenticated.

   <!ELEMENT unauthenticated EMPTY>

<!ELEMENT unauthenticated EMPTY>

   DAV:all is the union of DAV:authenticated, and DAV:unauthenticated.
   For a given request, the user matches either DAV:authenticated, or
   DAV:unauthenticated, but not both (that is, DAV:authenticated and
   DAV:unauthenticated are disjoint sets).

DAV:all is the union of DAV:authenticated, and DAV:unauthenticated. For a given request, the user matches either DAV:authenticated, or DAV:unauthenticated, but not both (that is, DAV:authenticated and DAV:unauthenticated are disjoint sets).

   The current user matches a DAV:property principal in a DAV:acl
   property of a resource only if the value of the identified property
   of that resource contains at most one DAV:href XML element, the URI
   value of DAV:href identifies a principal, and the current user is
   authenticated as being (or being a member of) that principal.  For
   example, if the DAV:property element contained <DAV:owner/>, the
   current user would match the DAV:property principal only if the
   current user is authenticated as matching the principal identified by
   the DAV:owner property of the resource.

The current user matches a DAV:property principal in a DAV:acl property of a resource only if the value of the identified property of that resource contains at most one DAV:href XML element, the URI value of DAV:href identifies a principal, and the current user is authenticated as being (or being a member of) that principal. For example, if the DAV:property element contained <DAV:owner/>, the current user would match the DAV:property principal only if the current user is authenticated as matching the principal identified by the DAV:owner property of the resource.

   <!ELEMENT property ANY>

<!ELEMENT property ANY>

   The current user matches DAV:self in a DAV:acl property of the
   resource only if that resource is a principal and that principal
   matches the current user or, if the principal is a group, a member of
   that group matches the current user.

The current user matches DAV:self in a DAV:acl property of the resource only if that resource is a principal and that principal matches the current user or, if the principal is a group, a member of that group matches the current user.

   <!ELEMENT self EMPTY>

<!ELEMENT self EMPTY>

   Some servers may support ACEs applying to those users NOT matching
   the current principal, e.g., all users not in a particular group.
   This can be done by wrapping the DAV:principal element with
   DAV:invert.

Some servers may support ACEs applying to those users NOT matching the current principal, e.g., all users not in a particular group. This can be done by wrapping the DAV:principal element with DAV:invert.

   <!ELEMENT invert principal>

<!ELEMENT invert principal>

Clemm, et al.               Standards Track                    [Page 24]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 24] RFC 3744 WebDAV Access Control Protocol May 2004

5.5.2.  ACE Grant and Deny

5.5.2. ACE Grant and Deny

   Each DAV:grant or DAV:deny element specifies the set of privileges to
   be either granted or denied to the specified principal.  A DAV:grant
   or DAV:deny element of the DAV:acl of a resource MUST only contain
   non-abstract elements specified in the DAV:supported-privilege-set of
   that resource.

Each DAV:grant or DAV:deny element specifies the set of privileges to be either granted or denied to the specified principal. A DAV:grant or DAV:deny element of the DAV:acl of a resource MUST only contain non-abstract elements specified in the DAV:supported-privilege-set of that resource.

   <!ELEMENT grant (privilege+)>
   <!ELEMENT deny (privilege+)>
   <!ELEMENT privilege ANY>

<!ELEMENT grant (privilege+)> <!ELEMENT deny (privilege+)> <!ELEMENT privilege ANY>

5.5.3.  ACE Protection

5.5.3. ACE Protection

   A server indicates an ACE is protected by including the DAV:protected
   element in the ACE.  If the ACL of a resource contains an ACE with a
   DAV:protected element, an attempt to remove that ACE from the ACL
   MUST fail.

A server indicates an ACE is protected by including the DAV:protected element in the ACE. If the ACL of a resource contains an ACE with a DAV:protected element, an attempt to remove that ACE from the ACL MUST fail.

   <!ELEMENT protected EMPTY>

<!ELEMENT protected EMPTY>

5.5.4.  ACE Inheritance

5.5.4. ACE Inheritance

   The presence of a DAV:inherited element indicates that this ACE is
   inherited from another resource that is identified by the URL
   contained in a DAV:href element.  An inherited ACE cannot be modified
   directly, but instead the ACL on the resource from which it is
   inherited must be modified.

The presence of a DAV:inherited element indicates that this ACE is inherited from another resource that is identified by the URL contained in a DAV:href element. An inherited ACE cannot be modified directly, but instead the ACL on the resource from which it is inherited must be modified.

   Note that ACE inheritance is not the same as ACL initialization.  ACL
   initialization defines the ACL that a newly created resource will use
   (if not specified).  ACE inheritance refers to an ACE that is
   logically shared - where an update to the resource containing an ACE
   will affect the ACE of each resource that inherits that ACE.  The
   method by which ACLs are initialized or by which ACEs are inherited
   is not defined by this document.

Note that ACE inheritance is not the same as ACL initialization. ACL initialization defines the ACL that a newly created resource will use (if not specified). ACE inheritance refers to an ACE that is logically shared - where an update to the resource containing an ACE will affect the ACE of each resource that inherits that ACE. The method by which ACLs are initialized or by which ACEs are inherited is not defined by this document.

   <!ELEMENT inherited (href)>

<!ELEMENT inherited (href)>

5.5.5.  Example: Retrieving a Resource's Access Control List

5.5.5. Example: Retrieving a Resource's Access Control List

   Continuing the example from Sections 5.3.1 and 5.4.1, this example
   shows a client requesting the DAV:acl property from the resource with
   URL http://www.example.com/papers/.  There are two ACEs defined in
   this ACL:

Continuing the example from Sections 5.3.1 and 5.4.1, this example shows a client requesting the DAV:acl property from the resource with URL http://www.example.com/papers/. There are two ACEs defined in this ACL:

Clemm, et al.               Standards Track                    [Page 25]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 25] RFC 3744 WebDAV Access Control Protocol May 2004

   ACE #1: The group identified by URL http://www.example.com/acl/
   groups/maintainers (the group of site maintainers) is granted
   DAV:write privilege.  Since (for this example) DAV:write contains the
   DAV:write-acl privilege (see Section 5.3.1), this means the
   "maintainers" group can also modify the access control list.

ACE #1: The group identified by URL http://www.example.com/acl/ groups/maintainers (the group of site maintainers) is granted DAV:write privilege. Since (for this example) DAV:write contains the DAV:write-acl privilege (see Section 5.3.1), this means the "maintainers" group can also modify the access control list.

   ACE #2: All principals (DAV:all) are granted the DAV:read privilege.
   Since (for this example) DAV:read contains DAV:read-acl and
   DAV:read-current-user-privilege-set, this means all users (including
   all members of the "maintainers" group) can read the DAV:acl property
   and the DAV:current-user-privilege-set property.

ACE #2: All principals (DAV:all) are granted the DAV:read privilege. Since (for this example) DAV:read contains DAV:read-acl and DAV:read-current-user-privilege-set, this means all users (including all members of the "maintainers" group) can read the DAV:acl property and the DAV:current-user-privilege-set property.

   >> Request <<

>> Request <<

   PROPFIND /papers/ HTTP/1.1
   Host: www.example.com
   Content-type: text/xml; charset="utf-8"
   Content-Length: xxx
   Depth: 0
   Authorization: Digest username="masinter",
     realm="users@example.com", nonce="...",
     uri="/papers/", response="...", opaque="..."

PROPFIND /papers/ HTTP/1.1 Host: www.example.com Content-type: text/xml; charset="utf-8" Content-Length: xxx Depth: 0 Authorization: Digest username="masinter", realm="users@example.com", nonce="...", uri="/papers/", response="...", opaque="..."

   <D:propfind xmlns:D="DAV:">
     <D:prop>
       <D:acl/>
     </D:prop>
   </D:propfind>

<D:propfind xmlns:D="DAV:"> <D:prop> <D:acl/> </D:prop> </D:propfind>

   >> Response <<

>> Response <<

   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxx

   <D:multistatus xmlns:D="DAV:">
     <D:response>
       <D:href>http://www.example.com/papers/</D:href>
       <D:propstat>
         <D:prop>
           <D:acl>
           <D:ace>
             <D:principal>
               <D:href
               >http://www.example.com/acl/groups/maintainers</D:href>
             </D:principal>
             <D:grant>
               <D:privilege><D:write/></D:privilege>

<D:multistatus xmlns:D="DAV:"> <D:response> <D:href>http://www.example.com/papers/</D:href> <D:propstat> <D:prop> <D:acl> <D:ace> <D:principal> <D:href >http://www.example.com/acl/groups/maintainers</D:href> </D:principal> <D:grant> <D:privilege><D:write/></D:privilege>

Clemm, et al.               Standards Track                    [Page 26]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 26] RFC 3744 WebDAV Access Control Protocol May 2004

             </D:grant>
           </D:ace>
           <D:ace>
             <D:principal>
               <D:all/>
             </D:principal>
             <D:grant>
               <D:privilege><D:read/></D:privilege>
             </D:grant>
           </D:ace>
         </D:acl>
         </D:prop>
         <D:status>HTTP/1.1 200 OK</D:status>
       </D:propstat>
     </D:response>
   </D:multistatus>

</D:grant> </D:ace> <D:ace> <D:principal> <D:all/> </D:principal> <D:grant> <D:privilege><D:read/></D:privilege> </D:grant> </D:ace> </D:acl> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>

5.6.  DAV:acl-restrictions

5.6. DAV:acl-restrictions

   This protected property defines the types of ACLs supported by this
   server, to avoid clients needlessly getting errors.  When a client
   tries to set an ACL via the ACL method, the server may reject the
   attempt to set the ACL as specified.  The following properties
   indicate the restrictions the client must observe before setting an
   ACL:

This protected property defines the types of ACLs supported by this server, to avoid clients needlessly getting errors. When a client tries to set an ACL via the ACL method, the server may reject the attempt to set the ACL as specified. The following properties indicate the restrictions the client must observe before setting an ACL:

   <grant-only> Deny ACEs are not supported

<grant-only> Deny ACEs are not supported

   <no-invert> Inverted ACEs are not supported

<no-invert> Inverted ACEs are not supported

   <deny-before-grant> All deny ACEs must occur before any grant ACEs

<deny-before-grant> All deny ACEs must occur before any grant ACEs

   <required-principal> Indicates which principals are required to be
      present

<required-principal> Indicates which principals are required to be present

   <!ELEMENT acl-restrictions (grant-only?, no-invert?,
                               deny-before-grant?,
                               required-principal?)>

<!ELEMENT acl-restrictions (grant-only?, no-invert?, deny-before-grant?, required-principal?)>

5.6.1.  DAV:grant-only

5.6.1. DAV:grant-only

   This element indicates that ACEs with deny clauses are not allowed.

This element indicates that ACEs with deny clauses are not allowed.

   <!ELEMENT grant-only EMPTY>

<!ELEMENT grant-only EMPTY>

Clemm, et al.               Standards Track                    [Page 27]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 27] RFC 3744 WebDAV Access Control Protocol May 2004

5.6.2.  DAV:no-invert ACE Constraint

5.6.2. DAV:no-invert ACE Constraint

   This element indicates that ACEs with the <invert> element are not
   allowed.

This element indicates that ACEs with the <invert> element are not allowed.

   <!ELEMENT no-invert EMPTY>

<!ELEMENT no-invert EMPTY>

5.6.3.  DAV:deny-before-grant

5.6.3. DAV:deny-before-grant

   This element indicates that all deny ACEs must precede all grant
   ACEs.

This element indicates that all deny ACEs must precede all grant ACEs.

   <!ELEMENT deny-before-grant EMPTY>

<!ELEMENT deny-before-grant EMPTY>

5.6.4.  Required Principals

5.6.4. Required Principals

   The required principal elements identify which principals must have
   an ACE defined in the ACL.

The required principal elements identify which principals must have an ACE defined in the ACL.

   <!ELEMENT required-principal
     (all? | authenticated? | unauthenticated? | self? | href* |
      property*)>

<!ELEMENT required-principal (all? | authenticated? | unauthenticated? | self? | href* | property*)>

   For example, the following element requires that the ACL contain a

For example, the following element requires that the ACL contain a

   DAV:owner property ACE:

DAV:owner property ACE:

   <D:required-principal xmlns:D="DAV:">
     <D:property><D:owner/></D:property>
   </D:required-principal>

<D:required-principal xmlns:D="DAV:"> <D:property><D:owner/></D:property> </D:required-principal>

5.6.5.  Example: Retrieving DAV:acl-restrictions

5.6.5. Example: Retrieving DAV:acl-restrictions

   In this example, the client requests the value of the DAV:acl-
   restrictions property.  Digest authentication provides credentials
   for the principal operating the client.

In this example, the client requests the value of the DAV:acl- restrictions property. Digest authentication provides credentials for the principal operating the client.

   >> Request <<

>> Request <<

   PROPFIND /papers/ HTTP/1.1
   Host: www.example.com
   Content-type: text/xml; charset="utf-8"
   Content-Length: xxx
   Depth: 0
   Authorization: Digest username="srcarter",
     realm="users@example.com", nonce="...",
     uri="/papers/", response="...", opaque="..."

PROPFIND /papers/ HTTP/1.1 Host: www.example.com Content-type: text/xml; charset="utf-8" Content-Length: xxx Depth: 0 Authorization: Digest username="srcarter", realm="users@example.com", nonce="...", uri="/papers/", response="...", opaque="..."

Clemm, et al.               Standards Track                    [Page 28]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 28] RFC 3744 WebDAV Access Control Protocol May 2004

   <?xml version="1.0" encoding="utf-8" ?>
   <D:propfind xmlns:D="DAV:">
     <D:prop>
       <D:acl-restrictions/>
     </D:prop>
   </D:propfind>

<?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:"> <D:prop> <D:acl-restrictions/> </D:prop> </D:propfind>

   >> Response <<

>> Response <<

   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:">
     <D:response>
       <D:href>http://www.example.com/papers/</D:href>
       <D:propstat>
         <D:prop>
           <D:acl-restrictions>
             <D:grant-only/>
             <D:required-principal>
               <D:all/>
             </D:required-principal>
           </D:acl-restrictions>
         </D:prop>
         <D:status>HTTP/1.1 200 OK</D:status>
       </D:propstat>
     </D:response>
   </D:multistatus>

<?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:"> <D:response> <D:href>http://www.example.com/papers/</D:href> <D:propstat> <D:prop> <D:acl-restrictions> <D:grant-only/> <D:required-principal> <D:all/> </D:required-principal> </D:acl-restrictions> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>

5.7.  DAV:inherited-acl-set

5.7. DAV:inherited-acl-set

   This protected property contains a set of URLs that identify other
   resources that also control the access to this resource.  To have a
   privilege on a resource, not only must the ACL on that resource
   (specified in the DAV:acl property of that resource) grant the
   privilege, but so must the ACL of each resource identified in the
   DAV:inherited-acl-set property of that resource.  Effectively, the
   privileges granted by the current ACL are ANDed with the privileges
   granted by each inherited ACL.

This protected property contains a set of URLs that identify other resources that also control the access to this resource. To have a privilege on a resource, not only must the ACL on that resource (specified in the DAV:acl property of that resource) grant the privilege, but so must the ACL of each resource identified in the DAV:inherited-acl-set property of that resource. Effectively, the privileges granted by the current ACL are ANDed with the privileges granted by each inherited ACL.

   <!ELEMENT inherited-acl-set (href*)>

<!ELEMENT inherited-acl-set (href*)>

Clemm, et al.               Standards Track                    [Page 29]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 29] RFC 3744 WebDAV Access Control Protocol May 2004

5.8.  DAV:principal-collection-set

5.8. DAV:principal-collection-set

   This protected property of a resource contains a set of URLs that
   identify the root collections that contain the principals that are
   available on the server that implements this resource.  A WebDAV
   Access Control Protocol user agent could use the contents of
   DAV:principal-collection-set to retrieve the DAV:displayname property
   (specified in Section 13.2 of [RFC2518]) of all principals on that
   server, thereby yielding human-readable names for each principal that
   could be displayed in a user interface.

This protected property of a resource contains a set of URLs that identify the root collections that contain the principals that are available on the server that implements this resource. A WebDAV Access Control Protocol user agent could use the contents of DAV:principal-collection-set to retrieve the DAV:displayname property (specified in Section 13.2 of [RFC2518]) of all principals on that server, thereby yielding human-readable names for each principal that could be displayed in a user interface.

   <!ELEMENT principal-collection-set (href*)>

<!ELEMENT principal-collection-set (href*)>

   Since different servers can control different parts of the URL
   namespace, different resources on the same host MAY have different
   DAV:principal-collection-set values.  The collections specified in
   the DAV:principal-collection-set MAY be located on different hosts
   from the resource. The URLs in DAV:principal-collection-set SHOULD be
   http or https scheme URLs.  For security and scalability reasons, a
   server MAY report only a subset of the entire set of known principal
   collections, and therefore clients should not assume they have
   retrieved an exhaustive listing.  Additionally, a server MAY elect to
   report none of the principal collections it knows about, in which
   case the property value would be empty.

Since different servers can control different parts of the URL namespace, different resources on the same host MAY have different DAV:principal-collection-set values. The collections specified in the DAV:principal-collection-set MAY be located on different hosts from the resource. The URLs in DAV:principal-collection-set SHOULD be http or https scheme URLs. For security and scalability reasons, a server MAY report only a subset of the entire set of known principal collections, and therefore clients should not assume they have retrieved an exhaustive listing. Additionally, a server MAY elect to report none of the principal collections it knows about, in which case the property value would be empty.

   The value of DAV:principal-collection-set gives the scope of the
   DAV:principal-property-search REPORT (defined in Section 9.4).
   Clients use the DAV:principal-property-search REPORT to populate
   their user interface with a list of principals.  Therefore, servers
   that limit a client's ability to obtain principal information will
   interfere with the client's ability to manipulate access control
   lists, due to the difficulty of getting the URL of a principal for
   use in an ACE.

The value of DAV:principal-collection-set gives the scope of the DAV:principal-property-search REPORT (defined in Section 9.4). Clients use the DAV:principal-property-search REPORT to populate their user interface with a list of principals. Therefore, servers that limit a client's ability to obtain principal information will interfere with the client's ability to manipulate access control lists, due to the difficulty of getting the URL of a principal for use in an ACE.

5.8.1.  Example: Retrieving DAV:principal-collection-set

5.8.1. Example: Retrieving DAV:principal-collection-set

   In this example, the client requests the value of the DAV:principal-
   collection-set property on the collection resource identified by URL
   http://www.example.com/papers/.  The property contains the two URLs,
   http://www.example.com/acl/users/ and http://
   www.example.com/acl/groups/, both wrapped in DAV:href XML elements.
   Digest authentication provides credentials for the principal
   operating the client.

In this example, the client requests the value of the DAV:principal- collection-set property on the collection resource identified by URL http://www.example.com/papers/. The property contains the two URLs, http://www.example.com/acl/users/ and http:// www.example.com/acl/groups/, both wrapped in DAV:href XML elements. Digest authentication provides credentials for the principal operating the client.

Clemm, et al.               Standards Track                    [Page 30]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 30] RFC 3744 WebDAV Access Control Protocol May 2004

   The client might reasonably follow this request with two separate
   PROPFIND requests to retrieve the DAV:displayname property of the
   members of the two collections (/acl/users and /acl/groups).  This
   information could be used when displaying a user interface for
   creating access control entries.

The client might reasonably follow this request with two separate PROPFIND requests to retrieve the DAV:displayname property of the members of the two collections (/acl/users and /acl/groups). This information could be used when displaying a user interface for creating access control entries.

   >> Request <<

>> Request <<

   PROPFIND /papers/ HTTP/1.1
   Host: www.example.com
   Content-type: text/xml; charset="utf-8"
   Content-Length: xxx
   Depth: 0
   Authorization: Digest username="yarong",
     realm="users@example.com", nonce="...",
     uri="/papers/", response="...", opaque="..."

PROPFIND /papers/ HTTP/1.1 Host: www.example.com Content-type: text/xml; charset="utf-8" Content-Length: xxx Depth: 0 Authorization: Digest username="yarong", realm="users@example.com", nonce="...", uri="/papers/", response="...", opaque="..."

   <?xml version="1.0" encoding="utf-8" ?>
   <D:propfind xmlns:D="DAV:">
     <D:prop>
       <D:principal-collection-set/>
     </D:prop>
   </D:propfind>

<?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:"> <D:prop> <D:principal-collection-set/> </D:prop> </D:propfind>

   >> Response <<

>> Response <<

   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:">
     <D:response>
       <D:href>http://www.example.com/papers/</D:href>
       <D:propstat>
         <D:prop>
           <D:principal-collection-set>
             <D:href>http://www.example.com/acl/users/</D:href>
             <D:href>http://www.example.com/acl/groups/</D:href>
           </D:principal-collection-set>
         </D:prop>
       <D:status>HTTP/1.1 200 OK</D:status>
       </D:propstat>
     </D:response>
   </D:multistatus>

<?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:"> <D:response> <D:href>http://www.example.com/papers/</D:href> <D:propstat> <D:prop> <D:principal-collection-set> <D:href>http://www.example.com/acl/users/</D:href> <D:href>http://www.example.com/acl/groups/</D:href> </D:principal-collection-set> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>

Clemm, et al.               Standards Track                    [Page 31]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 31] RFC 3744 WebDAV Access Control Protocol May 2004

5.9.  Example: PROPFIND to retrieve access control properties

5.9. Example: PROPFIND to retrieve access control properties

   The following example shows how access control information can be
   retrieved by using the PROPFIND method to fetch the values of the
   DAV:owner, DAV:supported-privilege-set, DAV:current-user-privilege-
   set, and DAV:acl properties.

The following example shows how access control information can be retrieved by using the PROPFIND method to fetch the values of the DAV:owner, DAV:supported-privilege-set, DAV:current-user-privilege- set, and DAV:acl properties.

   >> Request <<

>> Request <<

   PROPFIND /top/container/ HTTP/1.1
   Host: www.example.com
   Content-type: text/xml; charset="utf-8"
   Content-Length: xxx
   Depth: 0
   Authorization: Digest username="ejw",
     realm="users@example.com", nonce="...",
     uri="/top/container/", response="...", opaque="..."

PROPFIND /top/container/ HTTP/1.1 Host: www.example.com Content-type: text/xml; charset="utf-8" Content-Length: xxx Depth: 0 Authorization: Digest username="ejw", realm="users@example.com", nonce="...", uri="/top/container/", response="...", opaque="..."

   <?xml version="1.0" encoding="utf-8" ?>
   <D:propfind xmlns:D="DAV:">
     <D:prop>
       <D:owner/>
       <D:supported-privilege-set/>
       <D:current-user-privilege-set/>
       <D:acl/>
     </D:prop>
   </D:propfind>

<?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:"> <D:prop> <D:owner/> <D:supported-privilege-set/> <D:current-user-privilege-set/> <D:acl/> </D:prop> </D:propfind>

   >> Response <<

>> Response <<

   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:"
                  xmlns:A="http://www.example.com/acl/">
     <D:response>
       <D:href>http://www.example.com/top/container/</D:href>
       <D:propstat>
         <D:prop>
           <D:owner>
             <D:href>http://www.example.com/users/gclemm</D:href>
           </D:owner>
           <D:supported-privilege-set>
             <D:supported-privilege>
               <D:privilege><D:all/></D:privilege>
               <D:abstract/>

<?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:" xmlns:A="http://www.example.com/acl/"> <D:response> <D:href>http://www.example.com/top/container/</D:href> <D:propstat> <D:prop> <D:owner> <D:href>http://www.example.com/users/gclemm</D:href> </D:owner> <D:supported-privilege-set> <D:supported-privilege> <D:privilege><D:all/></D:privilege> <D:abstract/>

Clemm, et al.               Standards Track                    [Page 32]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 32] RFC 3744 WebDAV Access Control Protocol May 2004

               <D:description xml:lang="en">
                 Any operation
               </D:description>
               <D:supported-privilege>
                 <D:privilege><D:read/></D:privilege>
                 <D:description xml:lang="en">
                   Read any object
                 </D:description>
               </D:supported-privilege>
               <D:supported-privilege>
                 <D:privilege><D:write/></D:privilege>
                 <D:abstract/>
                 <D:description xml:lang="en">
                   Write any object
                 </D:description>
                 <D:supported-privilege>
                   <D:privilege><A:create/></D:privilege>
                   <D:description xml:lang="en">
                     Create an object
                   </D:description>
                 </D:supported-privilege>
                 <D:supported-privilege>
                   <D:privilege><A:update/></D:privilege>
                   <D:description xml:lang="en">
                     Update an object
                   </D:description>
                 </D:supported-privilege>
               </D:supported-privilege>
               <D:supported-privilege>
                 <D:privilege><A:delete/></D:privilege>
                 <D:description xml:lang="en">
                   Delete an object
                 </D:description>
               </D:supported-privilege>
               <D:supported-privilege>
                 <D:privilege><D:read-acl/></D:privilege>
                 <D:description xml:lang="en">
                   Read the ACL
                 </D:description>
               </D:supported-privilege>
               <D:supported-privilege>
                 <D:privilege><D:write-acl/></D:privilege>
                 <D:description xml:lang="en">
                   Write the ACL
                 </D:description>
               </D:supported-privilege>
             </D:supported-privilege>
           </D:supported-privilege-set>

<D:description xml:lang="en"> Any operation </D:description> <D:supported-privilege> <D:privilege><D:read/></D:privilege> <D:description xml:lang="en"> Read any object </D:description> </D:supported-privilege> <D:supported-privilege> <D:privilege><D:write/></D:privilege> <D:abstract/> <D:description xml:lang="en"> Write any object </D:description> <D:supported-privilege> <D:privilege><A:create/></D:privilege> <D:description xml:lang="en"> Create an object </D:description> </D:supported-privilege> <D:supported-privilege> <D:privilege><A:update/></D:privilege> <D:description xml:lang="en"> Update an object </D:description> </D:supported-privilege> </D:supported-privilege> <D:supported-privilege> <D:privilege><A:delete/></D:privilege> <D:description xml:lang="en"> Delete an object </D:description> </D:supported-privilege> <D:supported-privilege> <D:privilege><D:read-acl/></D:privilege> <D:description xml:lang="en"> Read the ACL </D:description> </D:supported-privilege> <D:supported-privilege> <D:privilege><D:write-acl/></D:privilege> <D:description xml:lang="en"> Write the ACL </D:description> </D:supported-privilege> </D:supported-privilege> </D:supported-privilege-set>

Clemm, et al.               Standards Track                    [Page 33]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 33] RFC 3744 WebDAV Access Control Protocol May 2004

           <D:current-user-privilege-set>
             <D:privilege><D:read/></D:privilege>
             <D:privilege><D:read-acl/></D:privilege>
           </D:current-user-privilege-set>
           <D:acl>
             <D:ace>
               <D:principal>
                 <D:href>http://www.example.com/users/esedlar</D:href>
               </D:principal>
               <D:grant>
                 <D:privilege><D:read/></D:privilege>
                 <D:privilege><D:write/></D:privilege>
                 <D:privilege><D:read-acl/></D:privilege>
               </D:grant>
             </D:ace>
             <D:ace>
               <D:principal>
                 <D:href>http://www.example.com/groups/mrktng</D:href>
               </D:principal>
               <D:deny>
                 <D:privilege><D:read/></D:privilege>
               </D:deny>
             </D:ace>
             <D:ace>
               <D:principal>
                 <D:property><D:owner/></D:property>
               </D:principal>
               <D:grant>
                 <D:privilege><D:read-acl/></D:privilege>
                 <D:privilege><D:write-acl/></D:privilege>
               </D:grant>
             </D:ace>
             <D:ace>
               <D:principal><D:all/></D:principal>
               <D:grant>
                 <D:privilege><D:read/></D:privilege>
               </D:grant>
               <D:inherited>
                 <D:href>http://www.example.com/top</D:href>
               </D:inherited>
             </D:ace>
           </D:acl>
         </D:prop>
         <D:status>HTTP/1.1 200 OK</D:status>
       </D:propstat>
     </D:response>
   </D:multistatus>

<D:current-user-privilege-set> <D:privilege><D:read/></D:privilege> <D:privilege><D:read-acl/></D:privilege> </D:current-user-privilege-set> <D:acl> <D:ace> <D:principal> <D:href>http://www.example.com/users/esedlar</D:href> </D:principal> <D:grant> <D:privilege><D:read/></D:privilege> <D:privilege><D:write/></D:privilege> <D:privilege><D:read-acl/></D:privilege> </D:grant> </D:ace> <D:ace> <D:principal> <D:href>http://www.example.com/groups/mrktng</D:href> </D:principal> <D:deny> <D:privilege><D:read/></D:privilege> </D:deny> </D:ace> <D:ace> <D:principal> <D:property><D:owner/></D:property> </D:principal> <D:grant> <D:privilege><D:read-acl/></D:privilege> <D:privilege><D:write-acl/></D:privilege> </D:grant> </D:ace> <D:ace> <D:principal><D:all/></D:principal> <D:grant> <D:privilege><D:read/></D:privilege> </D:grant> <D:inherited> <D:href>http://www.example.com/top</D:href> </D:inherited> </D:ace> </D:acl> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>

Clemm, et al.               Standards Track                    [Page 34]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 34] RFC 3744 WebDAV Access Control Protocol May 2004

   The value of the DAV:owner property is a single DAV:href XML element
   containing the URL of the principal that owns this resource.

The value of the DAV:owner property is a single DAV:href XML element containing the URL of the principal that owns this resource.

   The value of the DAV:supported-privilege-set property is a tree of
   supported privileges (using "[XML Namespace , localname]" to identify
   each privilege):

The value of the DAV:supported-privilege-set property is a tree of supported privileges (using "[XML Namespace , localname]" to identify each privilege):

   [DAV:, all] (aggregate, abstract)
      |
      +-- [DAV:, read]
      +-- [DAV:, write] (aggregate, abstract)
             |
             +-- [http://www.example.com/acl, create]
             +-- [http://www.example.com/acl, update]
             +-- [http://www.example.com/acl, delete]
      +-- [DAV:, read-acl]
      +-- [DAV:, write-acl]

[DAV:, all] (aggregate, abstract) | +-- [DAV:, read] +-- [DAV:, write] (aggregate, abstract) | +-- [http://www.example.com/acl, create] +-- [http://www.example.com/acl, update] +-- [http://www.example.com/acl, delete] +-- [DAV:, read-acl] +-- [DAV:, write-acl]

   The DAV:current-user-privilege-set property contains two privileges,
   DAV:read, and DAV:read-acl.  This indicates that the current
   authenticated user only has the ability to read the resource, and
   read the DAV:acl property on the resource.  The DAV:acl property
   contains a set of four ACEs:

The DAV:current-user-privilege-set property contains two privileges, DAV:read, and DAV:read-acl. This indicates that the current authenticated user only has the ability to read the resource, and read the DAV:acl property on the resource. The DAV:acl property contains a set of four ACEs:

   ACE #1: The principal identified by the URL http://www.example.com/
   users/esedlar is granted the DAV:read, DAV:write, and DAV:read-acl
   privileges.

ACE #1: The principal identified by the URL http://www.example.com/ users/esedlar is granted the DAV:read, DAV:write, and DAV:read-acl privileges.

   ACE #2: The principals identified by the URL http://www.example.com/
   groups/mrktng are denied the DAV:read privilege.  In this example,
   the principal URL identifies a group.

ACE #2: The principals identified by the URL http://www.example.com/ groups/mrktng are denied the DAV:read privilege. In this example, the principal URL identifies a group.

   ACE #3: In this ACE, the principal is a property principal,
   specifically the DAV:owner property.  When evaluating this ACE, the
   value of the DAV:owner property is retrieved, and is examined to see
   if it contains a DAV:href XML element.  If so, the URL within the
   DAV:href element is read, and identifies a principal.  In this ACE,
   the owner is granted DAV:read-acl, and DAV:write-acl privileges.

ACE #3: In this ACE, the principal is a property principal, specifically the DAV:owner property. When evaluating this ACE, the value of the DAV:owner property is retrieved, and is examined to see if it contains a DAV:href XML element. If so, the URL within the DAV:href element is read, and identifies a principal. In this ACE, the owner is granted DAV:read-acl, and DAV:write-acl privileges.

   ACE #4: This ACE grants the DAV:all principal (all users) the
   DAV:read privilege.  This ACE is inherited from the resource http://
   www.example.com/top, the parent collection of this resource.

ACE #4: This ACE grants the DAV:all principal (all users) the DAV:read privilege. This ACE is inherited from the resource http:// www.example.com/top, the parent collection of this resource.

Clemm, et al.               Standards Track                    [Page 35]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 35] RFC 3744 WebDAV Access Control Protocol May 2004

6.  ACL Evaluation

6. ACL Evaluation

   WebDAV ACLs are evaluated in similar manner as ACLs on Windows NT and
   in NFSv4 [RFC3530]).  An ACL is evaluated to determine whether or not
   access will be granted for a WebDAV request.  ACEs are maintained in
   a particular order, and are evaluated until all of the permissions
   required by the current request have been granted, at which point the
   ACL evaluation is terminated and access is granted.  If, during ACL
   evaluation, a <deny> ACE (matching the current user) is encountered
   for a privilege which has not yet been granted, the ACL evaluation is
   terminated and access is denied.  Failure to have all required
   privileges granted results in access being denied.

WebDAV ACLs are evaluated in similar manner as ACLs on Windows NT and in NFSv4 [RFC3530]). An ACL is evaluated to determine whether or not access will be granted for a WebDAV request. ACEs are maintained in a particular order, and are evaluated until all of the permissions required by the current request have been granted, at which point the ACL evaluation is terminated and access is granted. If, during ACL evaluation, a <deny> ACE (matching the current user) is encountered for a privilege which has not yet been granted, the ACL evaluation is terminated and access is denied. Failure to have all required privileges granted results in access being denied.

   Note that the semantics of many other existing ACL systems may be
   represented via this mechanism, by mixing deny and grant ACEs.  For
   example, consider the standard "rwx" privilege scheme used by UNIX.
   In this scheme, if the current user is the owner of the file, access
   is granted if the corresponding privilege bit is set and denied if
   not set, regardless of the permissions set on the file's group and
   for the world.  An ACL for UNIX permissions of "r--rw-r--" might be
   constructed like:

Note that the semantics of many other existing ACL systems may be represented via this mechanism, by mixing deny and grant ACEs. For example, consider the standard "rwx" privilege scheme used by UNIX. In this scheme, if the current user is the owner of the file, access is granted if the corresponding privilege bit is set and denied if not set, regardless of the permissions set on the file's group and for the world. An ACL for UNIX permissions of "r--rw-r--" might be constructed like:

   <D:acl>
     <D:ace>
       <D:principal>
         <D:property><D:owner/></D:property>
       </D:principal>
       <D:grant>
         <D:privilege><D:read/></D:privilege>
       </D:grant>
     </D:ace>
     <D:ace>
       <D:principal>
         <D:property><D:owner/></D:property>
       </D:principal>
       <D:deny>
         <D:privilege><D:all/></D:privilege>
       </D:deny>
     </D:ace>
     <D:ace>
       <D:principal>
         <D:property><D:group/></D:property>
       </D:principal>
       <D:grant>
         <D:privilege><D:read/></D:privilege>
         <D:privilege><D:write/></D:privilege>
       </D:grant>
     </D:ace>

<D:acl> <D:ace> <D:principal> <D:property><D:owner/></D:property> </D:principal> <D:grant> <D:privilege><D:read/></D:privilege> </D:grant> </D:ace> <D:ace> <D:principal> <D:property><D:owner/></D:property> </D:principal> <D:deny> <D:privilege><D:all/></D:privilege> </D:deny> </D:ace> <D:ace> <D:principal> <D:property><D:group/></D:property> </D:principal> <D:grant> <D:privilege><D:read/></D:privilege> <D:privilege><D:write/></D:privilege> </D:grant> </D:ace>

Clemm, et al.               Standards Track                    [Page 36]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 36] RFC 3744 WebDAV Access Control Protocol May 2004

     <D:ace>
       <D:principal>
         <D:property><D:group/></D:property>
       </D:principal>
       <D:deny>
         <D:privilege><D:all/></D:privilege>
       </D:deny>
     </D:ace>
     <D:ace>
       <D:principal><D:all></D:principal>
       <D:grant>
         <D:privilege><D:read/></D:privilege>
       </D:grant>
     </D:ace>
   </D:acl>

<D:ace> <D:principal> <D:property><D:group/></D:property> </D:principal> <D:deny> <D:privilege><D:all/></D:privilege> </D:deny> </D:ace> <D:ace> <D:principal><D:all></D:principal> <D:grant> <D:privilege><D:read/></D:privilege> </D:grant> </D:ace> </D:acl>

   and the <acl-restrictions> would be defined as:

and the <acl-restrictions> would be defined as:

   <D:no-invert/>
   <D:required-principal>
     <D:all/>
     <D:property><D:owner/></D:property>
     <D:property><D:group/><D:group/>
   </D:required-principal>

<D:no-invert/> <D:required-principal> <D:all/> <D:property><D:owner/></D:property> <D:property><D:group/><D:group/> </D:required-principal>

   Note that the client can still get errors from a UNIX server in spite
   of obeying the <acl-restrictions>, including <D:allowed-principal>
   (adding an ACE specifying a principal other than the ones in the ACL
   above) or <D:ace-conflict> (by trying to reorder the ACEs in the
   example above), as these particular implementation semantics are too
   complex to be captured with the simple (but general) declarative
   restrictions.

Note that the client can still get errors from a UNIX server in spite of obeying the <acl-restrictions>, including <D:allowed-principal> (adding an ACE specifying a principal other than the ones in the ACL above) or <D:ace-conflict> (by trying to reorder the ACEs in the example above), as these particular implementation semantics are too complex to be captured with the simple (but general) declarative restrictions.

7.  Access Control and existing methods

7. Access Control and existing methods

   This section defines the impact of access control functionality on
   existing methods.

This section defines the impact of access control functionality on existing methods.

7.1.  Any HTTP method

7.1. Any HTTP method

7.1.1.  Error Handling

7.1.1. Error Handling

   The WebDAV ACL mechanism requires the usage of HTTP method
   "preconditions" as described in section 1.6 of RFC3253 for ALL HTTP
   methods.  All HTTP methods have an additional precondition called
   DAV:need-privileges.  If an HTTP method fails due to insufficient
   privileges, the response body to the "403 Forbidden" error MUST
   contain the <DAV:error> element, which in turn contains the

The WebDAV ACL mechanism requires the usage of HTTP method "preconditions" as described in section 1.6 of RFC3253 for ALL HTTP methods. All HTTP methods have an additional precondition called DAV:need-privileges. If an HTTP method fails due to insufficient privileges, the response body to the "403 Forbidden" error MUST contain the <DAV:error> element, which in turn contains the

Clemm, et al.               Standards Track                    [Page 37]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 37] RFC 3744 WebDAV Access Control Protocol May 2004

   <DAV:need-privileges> element, which contains one or more
   <DAV:resource> elements indicating which resource had insufficient
   privileges, and what the lacking privileges were:

<DAV:need-privileges> element, which contains one or more <DAV:resource> elements indicating which resource had insufficient privileges, and what the lacking privileges were:

   <!ELEMENT need-privileges (resource)* >
   <!ELEMENT resource ( href , privilege ) >

<!ELEMENT need-privileges (resource)* > <!ELEMENT resource ( href , privilege ) >

   Since some methods require multiple permissions on multiple
   resources, this information is needed to resolve any ambiguity.
   There is no requirement that all privilege violations be reported -
   for implementation reasons, some servers may only report the first
   privilege violation.  For example:

Since some methods require multiple permissions on multiple resources, this information is needed to resolve any ambiguity. There is no requirement that all privilege violations be reported - for implementation reasons, some servers may only report the first privilege violation. For example:

   >> Request <<

>> Request <<

   MOVE /a/b/ HTTP/1.1
   Host: www.example.com
   Destination: http://www.example.com/c/d

MOVE /a/b/ HTTP/1.1 Host: www.example.com Destination: http://www.example.com/c/d

   >> Response <<

>> Response <<

   HTTP/1.1 403 Forbidden
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

HTTP/1.1 403 Forbidden Content-Type: text/xml; charset="utf-8" Content-Length: xxx

   <D:error xmlns:D="DAV:">
     <D:need-privileges>
       <D:resource>
         <D:href>/a</D:href>
         <D:privilege><D:unbind/></D:privilege>
       </D:resource>
       <D:resource>
         <D:href>/c</D:href>
         <D:privilege><D:bind/></D:privilege>
       </D:resource>
     </D:need-privileges>
   </D:error>

<D:error xmlns:D="DAV:"> <D:need-privileges> <D:resource> <D:href>/a</D:href> <D:privilege><D:unbind/></D:privilege> </D:resource> <D:resource> <D:href>/c</D:href> <D:privilege><D:bind/></D:privilege> </D:resource> </D:need-privileges> </D:error>

7.2.  OPTIONS

7.2. OPTIONS

   If the server supports access control, it MUST return "access-
   control" as a field in the DAV response header from an OPTIONS
   request on any resource implemented by that server.  A value of
   "access-control" in the DAV header MUST indicate that the server
   supports all MUST level requirements and REQUIRED features specified
   in this document.

If the server supports access control, it MUST return "access- control" as a field in the DAV response header from an OPTIONS request on any resource implemented by that server. A value of "access-control" in the DAV header MUST indicate that the server supports all MUST level requirements and REQUIRED features specified in this document.

Clemm, et al.               Standards Track                    [Page 38]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 38] RFC 3744 WebDAV Access Control Protocol May 2004

7.2.1.  Example - OPTIONS

7.2.1. Example - OPTIONS

   >> Request <<

>> Request <<

   OPTIONS /foo.html HTTP/1.1
   Host: www.example.com
   Content-Length: 0

OPTIONS /foo.html HTTP/1.1 Host: www.example.com Content-Length: 0

   >> Response <<

>> Response <<

   HTTP/1.1 200 OK
   DAV: 1, 2, access-control
   Allow: OPTIONS, GET, PUT, PROPFIND, PROPPATCH, ACL

HTTP/1.1 200 OK DAV: 1, 2, access-control Allow: OPTIONS, GET, PUT, PROPFIND, PROPPATCH, ACL

   In this example, the OPTIONS response indicates that the server
   supports access control and that /foo.html can have its access
   control list modified by the ACL method.

In this example, the OPTIONS response indicates that the server supports access control and that /foo.html can have its access control list modified by the ACL method.

7.3.  MOVE

7.3. MOVE

   When a resource is moved from one location to another due to a MOVE
   request, the non-inherited and non-protected ACEs in the DAV:acl
   property of the resource MUST NOT be modified, or the MOVE request
   fails.  Handling of inherited and protected ACEs is intentionally
   undefined to give server implementations flexibility in how they
   implement ACE inheritance and protection.

When a resource is moved from one location to another due to a MOVE request, the non-inherited and non-protected ACEs in the DAV:acl property of the resource MUST NOT be modified, or the MOVE request fails. Handling of inherited and protected ACEs is intentionally undefined to give server implementations flexibility in how they implement ACE inheritance and protection.

7.4.  COPY

7.4. COPY

   The DAV:acl property on the resource at the destination of a COPY
   MUST be the same as if the resource was created by an individual
   resource creation request (e.g., MKCOL, PUT).  Clients wishing to
   preserve the DAV:acl property across a copy need to read the DAV:acl
   property prior to the COPY, then perform an ACL operation on the new
   resource at the destination to restore, insofar as this is possible,
   the original access control list.

The DAV:acl property on the resource at the destination of a COPY MUST be the same as if the resource was created by an individual resource creation request (e.g., MKCOL, PUT). Clients wishing to preserve the DAV:acl property across a copy need to read the DAV:acl property prior to the COPY, then perform an ACL operation on the new resource at the destination to restore, insofar as this is possible, the original access control list.

7.5.  LOCK

7.5. LOCK

   A lock on a resource ensures that only the lock owner can modify ACEs
   that are not inherited and not protected  (these are the only ACEs
   that a client can modify with an ACL request).  A lock does not
   protect inherited or protected ACEs, since a client cannot modify
   them with an ACL request on that resource.

A lock on a resource ensures that only the lock owner can modify ACEs that are not inherited and not protected (these are the only ACEs that a client can modify with an ACL request). A lock does not protect inherited or protected ACEs, since a client cannot modify them with an ACL request on that resource.

Clemm, et al.               Standards Track                    [Page 39]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 39] RFC 3744 WebDAV Access Control Protocol May 2004

8.  Access Control Methods

8. Access Control Methods

8.1.  ACL

8.1. ACL

   The ACL method modifies the access control list (which can be read
   via the DAV:acl property) of a resource.  Specifically, the ACL
   method only permits modification to ACEs that are not inherited, and
   are not protected.  An ACL method invocation modifies all non-
   inherited and non-protected ACEs in a resource's access control list
   to exactly match the ACEs contained within in the DAV:acl XML element
   (specified in Section 5.5) of the request body.  An ACL request body
   MUST contain only one DAV:acl XML element.  Unless the non-inherited
   and non-protected ACEs of the DAV:acl property of the resource can be
   updated to be exactly the value specified in the ACL request, the ACL
   request MUST fail.

The ACL method modifies the access control list (which can be read via the DAV:acl property) of a resource. Specifically, the ACL method only permits modification to ACEs that are not inherited, and are not protected. An ACL method invocation modifies all non- inherited and non-protected ACEs in a resource's access control list to exactly match the ACEs contained within in the DAV:acl XML element (specified in Section 5.5) of the request body. An ACL request body MUST contain only one DAV:acl XML element. Unless the non-inherited and non-protected ACEs of the DAV:acl property of the resource can be updated to be exactly the value specified in the ACL request, the ACL request MUST fail.

   It is possible that the ACEs visible to the current user in the
   DAV:acl property may only be a portion of the complete set of ACEs on
   that resource.  If this is the case, an ACL request only modifies the
   set of ACEs visible to the current user, and does not affect any
   non-visible ACE.

It is possible that the ACEs visible to the current user in the DAV:acl property may only be a portion of the complete set of ACEs on that resource. If this is the case, an ACL request only modifies the set of ACEs visible to the current user, and does not affect any non-visible ACE.

   In order to avoid overwriting DAV:acl changes by another client, a
   client SHOULD acquire a WebDAV lock on the resource before retrieving
   the DAV:acl property of a resource that it intends on updating.

In order to avoid overwriting DAV:acl changes by another client, a client SHOULD acquire a WebDAV lock on the resource before retrieving the DAV:acl property of a resource that it intends on updating.

      Implementation Note: Two common operations are to add or remove an
      ACE from an existing access control list.  To accomplish this, a
      client uses the PROPFIND method to retrieve the value of the
      DAV:acl property, then parses the returned access control list to
      remove all inherited and protected ACEs (these ACEs are tagged
      with the DAV:inherited and DAV:protected XML elements).  In the
      remaining set of non-inherited, non-protected ACEs, the client can
      add or remove one or more ACEs before submitting the final ACE set
      in the request body of the ACL method.

Implementation Note: Two common operations are to add or remove an ACE from an existing access control list. To accomplish this, a client uses the PROPFIND method to retrieve the value of the DAV:acl property, then parses the returned access control list to remove all inherited and protected ACEs (these ACEs are tagged with the DAV:inherited and DAV:protected XML elements). In the remaining set of non-inherited, non-protected ACEs, the client can add or remove one or more ACEs before submitting the final ACE set in the request body of the ACL method.

8.1.1.  ACL Preconditions

8.1.1. ACL Preconditions

   An implementation MUST enforce the following constraints on an ACL
   request.  If the constraint is violated, a 403 (Forbidden) or 409
   (Conflict) response MUST be returned and the indicated XML element
   MUST be returned as a child of a top level DAV:error element in an
   XML response body.

An implementation MUST enforce the following constraints on an ACL request. If the constraint is violated, a 403 (Forbidden) or 409 (Conflict) response MUST be returned and the indicated XML element MUST be returned as a child of a top level DAV:error element in an XML response body.

   Though these status elements are generally expressed as empty XML
   elements (and are defined as EMPTY in the DTD), implementations MAY
   return additional descriptive XML elements as children of the status

Though these status elements are generally expressed as empty XML elements (and are defined as EMPTY in the DTD), implementations MAY return additional descriptive XML elements as children of the status

Clemm, et al.               Standards Track                    [Page 40]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 40] RFC 3744 WebDAV Access Control Protocol May 2004

   element.  Clients MUST be able to accept children of these status
   elements.  Clients that do not understand the additional XML elements
   should ignore them.

element. Clients MUST be able to accept children of these status elements. Clients that do not understand the additional XML elements should ignore them.

   (DAV:no-ace-conflict): The ACEs submitted in the ACL request MUST NOT
   conflict with each other.  This is a catchall error code indicating
   that an implementation-specific ACL restriction has been violated.

(DAV:no-ace-conflict): The ACEs submitted in the ACL request MUST NOT conflict with each other. This is a catchall error code indicating that an implementation-specific ACL restriction has been violated.

   (DAV:no-protected-ace-conflict): The ACEs submitted in the ACL
   request MUST NOT conflict with the protected ACEs on the resource.
   For example, if the resource has a protected ACE granting DAV:write
   to a given principal, then it would not be consistent if the ACL
   request submitted an ACE denying DAV:write to the same principal.

(DAV:no-protected-ace-conflict): The ACEs submitted in the ACL request MUST NOT conflict with the protected ACEs on the resource. For example, if the resource has a protected ACE granting DAV:write to a given principal, then it would not be consistent if the ACL request submitted an ACE denying DAV:write to the same principal.

   (DAV:no-inherited-ace-conflict): The ACEs submitted in the ACL
   request MUST NOT conflict with the inherited ACEs on the resource.
   For example, if the resource inherits an ACE from its parent
   collection granting DAV:write to a given principal, then it would not
   be consistent if the ACL request submitted an ACE denying DAV:write
   to the same principal.  Note that reporting of this error will be
   implementation-dependent.  Implementations MUST either report this
   error or allow the ACE to be set, and then let normal ACE evaluation
   rules determine whether the new ACE has any impact on the privileges
   available to a specific principal.

(DAV:no-inherited-ace-conflict): The ACEs submitted in the ACL request MUST NOT conflict with the inherited ACEs on the resource. For example, if the resource inherits an ACE from its parent collection granting DAV:write to a given principal, then it would not be consistent if the ACL request submitted an ACE denying DAV:write to the same principal. Note that reporting of this error will be implementation-dependent. Implementations MUST either report this error or allow the ACE to be set, and then let normal ACE evaluation rules determine whether the new ACE has any impact on the privileges available to a specific principal.

   (DAV:limited-number-of-aces): The number of ACEs submitted in the ACL
   request MUST NOT exceed the number of ACEs allowed on that resource.
   However, ACL-compliant servers MUST support at least one ACE granting
   privileges to a single principal, and one ACE granting privileges to
   a group.

(DAV:limited-number-of-aces): The number of ACEs submitted in the ACL request MUST NOT exceed the number of ACEs allowed on that resource. However, ACL-compliant servers MUST support at least one ACE granting privileges to a single principal, and one ACE granting privileges to a group.

   (DAV:deny-before-grant): All non-inherited deny ACEs MUST precede all
   non-inherited grant ACEs.

(DAV:deny-before-grant): All non-inherited deny ACEs MUST precede all non-inherited grant ACEs.

   (DAV:grant-only): The ACEs submitted in the ACL request MUST NOT
   include a deny ACE.  This precondition applies only when the ACL
   restrictions of the resource include the DAV:grant-only constraint
   (defined in Section 5.6.1).

(DAV:grant-only): The ACEs submitted in the ACL request MUST NOT include a deny ACE. This precondition applies only when the ACL restrictions of the resource include the DAV:grant-only constraint (defined in Section 5.6.1).

   (DAV:no-invert):  The ACL request MUST NOT include a DAV:invert
   element.  This precondition applies only when the ACL semantics of
   the resource includes the DAV:no-invert constraint (defined in
   Section 5.6.2).

(DAV:no-invert): The ACL request MUST NOT include a DAV:invert element. This precondition applies only when the ACL semantics of the resource includes the DAV:no-invert constraint (defined in Section 5.6.2).

   (DAV:no-abstract): The ACL request MUST NOT attempt to grant or deny
   an abstract privilege (see Section 5.3).

(DAV:no-abstract): The ACL request MUST NOT attempt to grant or deny an abstract privilege (see Section 5.3).

Clemm, et al.               Standards Track                    [Page 41]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 41] RFC 3744 WebDAV Access Control Protocol May 2004

   (DAV:not-supported-privilege): The ACEs submitted in the ACL request
   MUST be supported by the resource.

(DAV:not-supported-privilege): The ACEs submitted in the ACL request MUST be supported by the resource.

   (DAV:missing-required-principal): The result of the ACL request MUST
   have at least one ACE for each principal identified in a
   DAV:required-principal XML element in the ACL semantics of that
   resource (see Section 5.5).

(DAV:missing-required-principal): The result of the ACL request MUST have at least one ACE for each principal identified in a DAV:required-principal XML element in the ACL semantics of that resource (see Section 5.5).

   (DAV:recognized-principal): Every principal URL in the ACL request
   MUST identify a principal resource.

(DAV:recognized-principal): Every principal URL in the ACL request MUST identify a principal resource.

   (DAV:allowed-principal): The principals specified in the ACEs
   submitted in the ACL request MUST be allowed as principals for the
   resource.  For example, a server where only authenticated principals
   can access resources would not allow the DAV:all or
   DAV:unauthenticated principals to be used in an ACE, since these
   would allow unauthenticated access to resources.

(DAV:allowed-principal): The principals specified in the ACEs submitted in the ACL request MUST be allowed as principals for the resource. For example, a server where only authenticated principals can access resources would not allow the DAV:all or DAV:unauthenticated principals to be used in an ACE, since these would allow unauthenticated access to resources.

8.1.2.  Example: the ACL method

8.1.2. Example: the ACL method

   In the following example, user "fielding", authenticated by
   information in the Authorization header, grants the principal
   identified by the URL http://www.example.com/users/esedlar (i.e., the
   user "esedlar") read and write privileges, grants the owner of the
   resource read-acl and write-acl privileges, and grants everyone read
   privileges.

In the following example, user "fielding", authenticated by information in the Authorization header, grants the principal identified by the URL http://www.example.com/users/esedlar (i.e., the user "esedlar") read and write privileges, grants the owner of the resource read-acl and write-acl privileges, and grants everyone read privileges.

   >> Request <<

>> Request <<

   ACL /top/container/ HTTP/1.1
   Host: www.example.com
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxxx
   Authorization: Digest username="fielding",
     realm="users@example.com", nonce="...",
     uri="/top/container/", response="...", opaque="..."

ACL /top/container/ HTTP/1.1 Host: www.example.com Content-Type: text/xml; charset="utf-8" Content-Length: xxxx Authorization: Digest username="fielding", realm="users@example.com", nonce="...", uri="/top/container/", response="...", opaque="..."

   <?xml version="1.0" encoding="utf-8" ?>
   <D:acl xmlns:D="DAV:">
     <D:ace>
       <D:principal>
         <D:href>http://www.example.com/users/esedlar</D:href>
       </D:principal>
       <D:grant>
         <D:privilege><D:read/></D:privilege>
         <D:privilege><D:write/></D:privilege>
       </D:grant>
     </D:ace>

<?xml version="1.0" encoding="utf-8" ?> <D:acl xmlns:D="DAV:"> <D:ace> <D:principal> <D:href>http://www.example.com/users/esedlar</D:href> </D:principal> <D:grant> <D:privilege><D:read/></D:privilege> <D:privilege><D:write/></D:privilege> </D:grant> </D:ace>

Clemm, et al.               Standards Track                    [Page 42]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 42] RFC 3744 WebDAV Access Control Protocol May 2004

     <D:ace>
       <D:principal>
         <D:property><D:owner/></D:property>
       </D:principal>
       <D:grant>
         <D:privilege><D:read-acl/></D:privilege>
         <D:privilege><D:write-acl/></D:privilege>
       </D:grant>
     </D:ace>
     <D:ace>
       <D:principal><D:all/></D:principal>
       <D:grant>
         <D:privilege><D:read/></D:privilege>
       </D:grant>
     </D:ace>
   </D:acl>

<D:ace> <D:principal> <D:property><D:owner/></D:property> </D:principal> <D:grant> <D:privilege><D:read-acl/></D:privilege> <D:privilege><D:write-acl/></D:privilege> </D:grant> </D:ace> <D:ace> <D:principal><D:all/></D:principal> <D:grant> <D:privilege><D:read/></D:privilege> </D:grant> </D:ace> </D:acl>

   >> Response <<

>> Response <<

   HTTP/1.1 200 OK

HTTP/1.1 200 OK

8.1.3.  Example: ACL method failure due to protected ACE conflict

8.1.3. Example: ACL method failure due to protected ACE conflict

   In the following request, user "fielding", authenticated by
   information in the Authorization header, attempts to deny the
   principal identified by the URL http://www.example.com/users/esedlar
   (i.e., the user "esedlar") write privileges.  Prior to the request,
   the DAV:acl property on the resource contained a protected ACE (see
   Section 5.5.3) granting DAV:owner the DAV:read and DAV:write
   privileges.  The principal identified by URL http://www.example.com/
   users/esedlar is the owner of the resource.  The ACL method
   invocation fails because the submitted ACE conflicts with the
   protected ACE, thus violating the semantics of ACE protection.

In the following request, user "fielding", authenticated by information in the Authorization header, attempts to deny the principal identified by the URL http://www.example.com/users/esedlar (i.e., the user "esedlar") write privileges. Prior to the request, the DAV:acl property on the resource contained a protected ACE (see Section 5.5.3) granting DAV:owner the DAV:read and DAV:write privileges. The principal identified by URL http://www.example.com/ users/esedlar is the owner of the resource. The ACL method invocation fails because the submitted ACE conflicts with the protected ACE, thus violating the semantics of ACE protection.

   >> Request <<

>> Request <<

   ACL /top/container/ HTTP/1.1
   Host: www.example.com
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxxx
   Authorization: Digest username="fielding",
     realm="users@example.com", nonce="...",
     uri="/top/container/", response="...", opaque="..."

ACL /top/container/ HTTP/1.1 Host: www.example.com Content-Type: text/xml; charset="utf-8" Content-Length: xxxx Authorization: Digest username="fielding", realm="users@example.com", nonce="...", uri="/top/container/", response="...", opaque="..."

   <?xml version="1.0" encoding="utf-8" ?>
   <D:acl xmlns:D="DAV:">
     <D:ace>
       <D:principal>

<?xml version="1.0" encoding="utf-8" ?> <D:acl xmlns:D="DAV:"> <D:ace> <D:principal>

Clemm, et al.               Standards Track                    [Page 43]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 43] RFC 3744 WebDAV Access Control Protocol May 2004

         <D:href>http://www.example.com/users/esedlar</D:href>
       </D:principal>
       <D:deny>
         <D:privilege><D:write/></D:privilege>
       </D:deny>
     </D:ace>
   </D:acl>

<D:href>http://www.example.com/users/esedlar</D:href> </D:principal> <D:deny> <D:privilege><D:write/></D:privilege> </D:deny> </D:ace> </D:acl>

   >> Response <<

>> Response <<

   HTTP/1.1 403 Forbidden
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

HTTP/1.1 403 Forbidden Content-Type: text/xml; charset="utf-8" Content-Length: xxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:error xmlns:D="DAV:">
     <D:no-protected-ace-conflict/>
   </D:error>

<?xml version="1.0" encoding="utf-8" ?> <D:error xmlns:D="DAV:"> <D:no-protected-ace-conflict/> </D:error>

8.1.4.  Example: ACL method failure due to an inherited ACE conflict

8.1.4. Example: ACL method failure due to an inherited ACE conflict

   In the following request, user "ejw", authenticated by information in
   the Authorization header, tries to change the access control list on
   the resource http://www.example.com/top/index.html.  This resource
   has two inherited ACEs.

In the following request, user "ejw", authenticated by information in the Authorization header, tries to change the access control list on the resource http://www.example.com/top/index.html. This resource has two inherited ACEs.

   Inherited ACE #1 grants the principal identified by URL http://
   www.example.com/users/ejw (i.e., the user "ejw") http://
   www.example.com/privs/write-all and DAV:read-acl privileges.  On this
   server, http://www.example.com/privs/write-all is an aggregate
   privilege containing DAV:write, and DAV:write-acl.

Inherited ACE #1 grants the principal identified by URL http:// www.example.com/users/ejw (i.e., the user "ejw") http:// www.example.com/privs/write-all and DAV:read-acl privileges. On this server, http://www.example.com/privs/write-all is an aggregate privilege containing DAV:write, and DAV:write-acl.

   Inherited ACE #2 grants principal DAV:all the DAV:read privilege.

Inherited ACE #2 grants principal DAV:all the DAV:read privilege.

   The request attempts to set a (non-inherited) ACE, denying the
   principal identified by the URL http://www.example.com/users/ejw
   (i.e., the user "ejw") DAV:write permission.  This conflicts with
   inherited ACE #1.  Note that the decision to report an inherited ACE
   conflict is specific to this server implementation.  Another server
   implementation could have allowed the new ACE to be set, and then
   used normal ACE evaluation rules to determine whether the new ACE has
   any impact on the privileges available to a principal.

The request attempts to set a (non-inherited) ACE, denying the principal identified by the URL http://www.example.com/users/ejw (i.e., the user "ejw") DAV:write permission. This conflicts with inherited ACE #1. Note that the decision to report an inherited ACE conflict is specific to this server implementation. Another server implementation could have allowed the new ACE to be set, and then used normal ACE evaluation rules to determine whether the new ACE has any impact on the privileges available to a principal.

Clemm, et al.               Standards Track                    [Page 44]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 44] RFC 3744 WebDAV Access Control Protocol May 2004

   >> Request <<

>> Request <<

   ACL /top/index.html HTTP/1.1
   Host: www.example.com
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxxx
   Authorization: Digest username="ejw",
     realm="users@example.com", nonce="...",
     uri="/top/index.html", response="...", opaque="..."

ACL /top/index.html HTTP/1.1 Host: www.example.com Content-Type: text/xml; charset="utf-8" Content-Length: xxxx Authorization: Digest username="ejw", realm="users@example.com", nonce="...", uri="/top/index.html", response="...", opaque="..."

   <?xml version="1.0" encoding="utf-8" ?>
   <D:acl xmlns:D="DAV:" xmlns:F="http://www.example.com/privs/">
     <D:ace>
       <D:principal>
          <D:href>http://www.example.com/users/ejw</D:href>
       </D:principal>
       <D:grant><D:write/></D:grant>
     </D:ace>
   </D:acl>

<?xml version="1.0" encoding="utf-8" ?> <D:acl xmlns:D="DAV:" xmlns:F="http://www.example.com/privs/"> <D:ace> <D:principal> <D:href>http://www.example.com/users/ejw</D:href> </D:principal> <D:grant><D:write/></D:grant> </D:ace> </D:acl>

   >> Response <<

>> Response <<

   HTTP/1.1 403 Forbidden
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

HTTP/1.1 403 Forbidden Content-Type: text/xml; charset="utf-8" Content-Length: xxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:error xmlns:D="DAV:">
     <D:no-inherited-ace-conflict/>
   </D:error>

<?xml version="1.0" encoding="utf-8" ?> <D:error xmlns:D="DAV:"> <D:no-inherited-ace-conflict/> </D:error>

8.1.5.  Example: ACL method failure due to an attempt to set grant and
        deny in a single ACE

8.1.5. Example: ACL method failure due to an attempt to set grant and deny in a single ACE

   In this example, user "ygoland", authenticated by information in the
   Authorization header, tries to change the access control list on the
   resource http://www.example.com/diamond/engagement-ring.gif.  The ACL
   request includes a single, syntactically and semantically incorrect
   ACE, which attempts to grant the group identified by the URL http://
   www.example.com/users/friends DAV:read privilege and deny the
   principal identified by URL http://www.example.com/users/ygoland-so
   (i.e., the user "ygoland-so") DAV:read privilege.  However, it is
   illegal to have multiple principal elements, as well as both a grant
   and deny element in the same ACE, so the request fails due to poor
   syntax.

In this example, user "ygoland", authenticated by information in the Authorization header, tries to change the access control list on the resource http://www.example.com/diamond/engagement-ring.gif. The ACL request includes a single, syntactically and semantically incorrect ACE, which attempts to grant the group identified by the URL http:// www.example.com/users/friends DAV:read privilege and deny the principal identified by URL http://www.example.com/users/ygoland-so (i.e., the user "ygoland-so") DAV:read privilege. However, it is illegal to have multiple principal elements, as well as both a grant and deny element in the same ACE, so the request fails due to poor syntax.

Clemm, et al.               Standards Track                    [Page 45]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 45] RFC 3744 WebDAV Access Control Protocol May 2004

   >> Request <<

>> Request <<

   ACL /diamond/engagement-ring.gif HTTP/1.1
   Host: www.example.com
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxxx
   Authorization: Digest username="ygoland",
     realm="users@example.com", nonce="...",
     uri="/diamond/engagement-ring.gif", response="...",
     opaque="..."

ACL /diamond/engagement-ring.gif HTTP/1.1 Host: www.example.com Content-Type: text/xml; charset="utf-8" Content-Length: xxxx Authorization: Digest username="ygoland", realm="users@example.com", nonce="...", uri="/diamond/engagement-ring.gif", response="...", opaque="..."

   <?xml version="1.0" encoding="utf-8" ?>
   <D:acl xmlns:D="DAV:">
     <D:ace>
       <D:principal>
         <D:href>http://www.example.com/users/friends</D:href>
       </D:principal>
       <D:grant><D:read/></D:grant>
       <D:principal>
         <D:href>http://www.example.com/users/ygoland-so</D:href>
       </D:principal>
       <D:deny><D:read/></D:deny>
     </D:ace>
   </D:acl>

<?xml version="1.0" encoding="utf-8" ?> <D:acl xmlns:D="DAV:"> <D:ace> <D:principal> <D:href>http://www.example.com/users/friends</D:href> </D:principal> <D:grant><D:read/></D:grant> <D:principal> <D:href>http://www.example.com/users/ygoland-so</D:href> </D:principal> <D:deny><D:read/></D:deny> </D:ace> </D:acl>

   >> Response <<

>> Response <<

   HTTP/1.1 400 Bad Request
   Content-Length: 0

HTTP/1.1 400 Bad Request Content-Length: 0

   Note that if the request had been divided into two ACEs, one to
   grant, and one to deny, the request would have been syntactically
   well formed.

Note that if the request had been divided into two ACEs, one to grant, and one to deny, the request would have been syntactically well formed.

9.  Access Control Reports

9. Access Control Reports

9.1.  REPORT Method

9.1. REPORT Method

   The REPORT method (defined in Section 3.6 of [RFC3253]) provides an
   extensible mechanism for obtaining information about a resource.
   Unlike the PROPFIND method, which returns the value of one or more
   named properties, the REPORT method can involve more complex
   processing.  REPORT is valuable in cases where the server has access
   to all of the information needed to perform the complex request (such
   as a query), and where it would require multiple requests for the
   client to retrieve the information needed to perform the same
   request.

The REPORT method (defined in Section 3.6 of [RFC3253]) provides an extensible mechanism for obtaining information about a resource. Unlike the PROPFIND method, which returns the value of one or more named properties, the REPORT method can involve more complex processing. REPORT is valuable in cases where the server has access to all of the information needed to perform the complex request (such as a query), and where it would require multiple requests for the client to retrieve the information needed to perform the same request.

Clemm, et al.               Standards Track                    [Page 46]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 46] RFC 3744 WebDAV Access Control Protocol May 2004

   A server that supports the WebDAV Access Control Protocol MUST
   support the DAV:expand-property report (defined in Section 3.8 of
   [RFC3253]).

A server that supports the WebDAV Access Control Protocol MUST support the DAV:expand-property report (defined in Section 3.8 of [RFC3253]).

9.2.  DAV:acl-principal-prop-set Report

9.2. DAV:acl-principal-prop-set Report

   The DAV:acl-principal-prop-set report returns, for all principals in
   the DAV:acl property (of the Request-URI) that are identified by
   http(s) URLs or by a DAV:property principal, the value of the
   properties specified in the REPORT request body.  In the case where a
   principal URL appears multiple times, the DAV:acl-principal-prop-set
   report MUST return the properties for that principal only once.
   Support for this report is REQUIRED.

The DAV:acl-principal-prop-set report returns, for all principals in the DAV:acl property (of the Request-URI) that are identified by http(s) URLs or by a DAV:property principal, the value of the properties specified in the REPORT request body. In the case where a principal URL appears multiple times, the DAV:acl-principal-prop-set report MUST return the properties for that principal only once. Support for this report is REQUIRED.

   One expected use of this report is to retrieve the human readable
   name (found in the DAV:displayname property) of each principal found
   in an ACL.  This is useful for constructing user interfaces that show
   each ACE in a human readable form.

One expected use of this report is to retrieve the human readable name (found in the DAV:displayname property) of each principal found in an ACL. This is useful for constructing user interfaces that show each ACE in a human readable form.

   Marshalling

Marshalling

      The request body MUST be a DAV:acl-principal-prop-set XML element.

The request body MUST be a DAV:acl-principal-prop-set XML element.

      <!ELEMENT acl-principal-prop-set ANY>
      ANY value: a sequence of one or more elements, with at most one
                 DAV:prop element.
      prop: see RFC 2518, Section 12.11

<!ELEMENT acl-principal-prop-set ANY> ANY value: a sequence of one or more elements, with at most one DAV:prop element. prop: see RFC 2518, Section 12.11

      This report is only defined when the Depth header has value "0";
      other values result in a 400 (Bad Request) error response.  Note
      that [RFC3253], Section 3.6, states that if the Depth header is
      not present, it defaults to a value of "0".

This report is only defined when the Depth header has value "0"; other values result in a 400 (Bad Request) error response. Note that [RFC3253], Section 3.6, states that if the Depth header is not present, it defaults to a value of "0".

      The response body for a successful request MUST be a
      DAV:multistatus XML element (i.e., the response uses the same
      format as the response for PROPFIND).  In the case where there are
      no response elements, the returned multistatus XML element is
      empty.

The response body for a successful request MUST be a DAV:multistatus XML element (i.e., the response uses the same format as the response for PROPFIND). In the case where there are no response elements, the returned multistatus XML element is empty.

      multistatus: see RFC 2518, Section 12.9

multistatus: see RFC 2518, Section 12.9

      The response body for a successful DAV:acl-principal-prop-set
      REPORT request MUST contain a DAV:response element for each
      principal identified by an http(s) URL listed in a DAV:principal
      XML element of an ACE within the DAV:acl property of the resource
      identified by the Request-URI.

The response body for a successful DAV:acl-principal-prop-set REPORT request MUST contain a DAV:response element for each principal identified by an http(s) URL listed in a DAV:principal XML element of an ACE within the DAV:acl property of the resource identified by the Request-URI.

Clemm, et al.               Standards Track                    [Page 47]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 47] RFC 3744 WebDAV Access Control Protocol May 2004

   Postconditions:

Postconditions:

      (DAV:number-of-matches-within-limits): The number of matching
      principals must fall within server-specific, predefined limits.
      For example, this condition might be triggered if a search
      specification would cause the return of an extremely large number
      of responses.

(DAV:number-of-matches-within-limits): The number of matching principals must fall within server-specific, predefined limits. For example, this condition might be triggered if a search specification would cause the return of an extremely large number of responses.

9.2.1.  Example: DAV:acl-principal-prop-set Report

9.2.1. Example: DAV:acl-principal-prop-set Report

   Resource http://www.example.com/index.html has an ACL with three
   ACEs:

Resource http://www.example.com/index.html has an ACL with three ACEs:

   ACE #1: All principals (DAV:all) have DAV:read and DAV:read-current-
   user-privilege-set access.

ACE #1: All principals (DAV:all) have DAV:read and DAV:read-current- user-privilege-set access.

   ACE #2: The principal identified by http://www.example.com/people/
   gstein (the user "gstein") is granted DAV:write,  DAV:write-acl,
   DAV:read-acl privileges.

ACE #2: The principal identified by http://www.example.com/people/ gstein (the user "gstein") is granted DAV:write, DAV:write-acl, DAV:read-acl privileges.

   ACE #3: The group identified by http://www.example.com/groups/authors
   (the "authors" group) is granted DAV:write and DAV:read-acl
   privileges.

ACE #3: The group identified by http://www.example.com/groups/authors (the "authors" group) is granted DAV:write and DAV:read-acl privileges.

   The following example shows a DAV:acl-principal-prop-set report
   requesting the DAV:displayname property.  It returns the value of
   DAV:displayname for resources http://www.example.com/people/gstein
   and http://www.example.com/groups/authors , but not for DAV:all,
   since this is not an http(s) URL.

The following example shows a DAV:acl-principal-prop-set report requesting the DAV:displayname property. It returns the value of DAV:displayname for resources http://www.example.com/people/gstein and http://www.example.com/groups/authors , but not for DAV:all, since this is not an http(s) URL.

   >> Request <<

>> Request <<

   REPORT /index.html HTTP/1.1
   Host: www.example.com
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxxx
   Depth: 0

REPORT /index.html HTTP/1.1 Host: www.example.com Content-Type: text/xml; charset="utf-8" Content-Length: xxxx Depth: 0

   <?xml version="1.0" encoding="utf-8" ?>
   <D:acl-principal-prop-set xmlns:D="DAV:">
     <D:prop>
       <D:displayname/>
     </D:prop>
   </D:acl-principal-prop-set>

<?xml version="1.0" encoding="utf-8" ?> <D:acl-principal-prop-set xmlns:D="DAV:"> <D:prop> <D:displayname/> </D:prop> </D:acl-principal-prop-set>

Clemm, et al.               Standards Track                    [Page 48]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 48] RFC 3744 WebDAV Access Control Protocol May 2004

   >> Response <<

>> Response <<

   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxxx

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:">
     <D:response>
       <D:href>http://www.example.com/people/gstein</D:href>
       <D:propstat>
         <D:prop>
           <D:displayname>Greg Stein</D:displayname>
         </D:prop>
         <D:status>HTTP/1.1 200 OK</D:status>
       </D:propstat>
     </D:response>
     <D:response>
       <D:href>http://www.example.com/groups/authors</D:href>
       <D:propstat>
         <D:prop>
           <D:displayname>Site authors</D:displayname>
         </D:prop>
         <D:status>HTTP/1.1 200 OK</D:status>
       </D:propstat>
     </D:response>
   </D:multistatus>

<?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:"> <D:response> <D:href>http://www.example.com/people/gstein</D:href> <D:propstat> <D:prop> <D:displayname>Greg Stein</D:displayname> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> <D:response> <D:href>http://www.example.com/groups/authors</D:href> <D:propstat> <D:prop> <D:displayname>Site authors</D:displayname> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>

9.3.  DAV:principal-match REPORT

9.3. DAV:principal-match REPORT

   The DAV:principal-match REPORT is used to identify all members (at
   any depth) of the collection identified by the Request-URI that are
   principals and that match the current user.  In particular, if the
   collection contains principals, the report can be used to identify
   all members of the collection that match the current user.
   Alternatively, if the collection contains resources that have a
   property that identifies a principal (e.g., DAV:owner), the report
   can be used to identify all members of the collection whose property
   identifies a principal that matches the current user.  For example,
   this report can return all of the resources in a collection hierarchy
   that are owned by the current user.  Support for this report is
   REQUIRED.

The DAV:principal-match REPORT is used to identify all members (at any depth) of the collection identified by the Request-URI that are principals and that match the current user. In particular, if the collection contains principals, the report can be used to identify all members of the collection that match the current user. Alternatively, if the collection contains resources that have a property that identifies a principal (e.g., DAV:owner), the report can be used to identify all members of the collection whose property identifies a principal that matches the current user. For example, this report can return all of the resources in a collection hierarchy that are owned by the current user. Support for this report is REQUIRED.

   Marshalling:

Marshalling:

      The request body MUST be a DAV:principal-match XML element.
      <!ELEMENT principal-match ((principal-property | self), prop?)>
      <!ELEMENT principal-property ANY>

The request body MUST be a DAV:principal-match XML element. <!ELEMENT principal-match ((principal-property | self), prop?)> <!ELEMENT principal-property ANY>

Clemm, et al.               Standards Track                    [Page 49]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 49] RFC 3744 WebDAV Access Control Protocol May 2004

      ANY value: an element whose value identifies a property.  The
      expectation is the value of the named property typically contains
      an href element that contains the URI of a principal
      <!ELEMENT self EMPTY>
      prop: see RFC 2518, Section 12.11

ANY value: an element whose value identifies a property. The expectation is the value of the named property typically contains an href element that contains the URI of a principal <!ELEMENT self EMPTY> prop: see RFC 2518, Section 12.11

      This report is only defined when the Depth header has value "0";
      other values result in a 400 (Bad Request) error response.  Note
      that [RFC3253], Section 3.6, states that if the Depth header is
      not present, it defaults to a value of "0".  The response body for
      a successful request MUST be a DAV:multistatus XML element.  In
      the case where there are no response elements, the returned
      multistatus XML element is empty.

This report is only defined when the Depth header has value "0"; other values result in a 400 (Bad Request) error response. Note that [RFC3253], Section 3.6, states that if the Depth header is not present, it defaults to a value of "0". The response body for a successful request MUST be a DAV:multistatus XML element. In the case where there are no response elements, the returned multistatus XML element is empty.

      multistatus: see RFC 2518, Section 12.9

multistatus: see RFC 2518, Section 12.9

      The response body for a successful DAV:principal-match REPORT
      request MUST contain a DAV:response element for each member of the
      collection that matches the current user.  When the
      DAV:principal-property element is used, a match occurs if the
      current user is matched by the principal identified by the URI
      found in the DAV:href element of the property identified by the
      DAV:principal-property element.  When the DAV:self element is used
      in a DAV:principal-match report issued against a group, it matches
      the group if a member identifies the same principal as the current
      user.

The response body for a successful DAV:principal-match REPORT request MUST contain a DAV:response element for each member of the collection that matches the current user. When the DAV:principal-property element is used, a match occurs if the current user is matched by the principal identified by the URI found in the DAV:href element of the property identified by the DAV:principal-property element. When the DAV:self element is used in a DAV:principal-match report issued against a group, it matches the group if a member identifies the same principal as the current user.

      If DAV:prop is specified in the request body, the properties
      specified in the DAV:prop element MUST be reported in the
      DAV:response elements.

If DAV:prop is specified in the request body, the properties specified in the DAV:prop element MUST be reported in the DAV:response elements.

9.3.1.  Example: DAV:principal-match REPORT

9.3.1. Example: DAV:principal-match REPORT

   The following example identifies the members of the collection
   identified by the URL http://www.example.com/doc that are owned by
   the current user.  The current user ("gclemm") is authenticated using
   Digest authentication.

The following example identifies the members of the collection identified by the URL http://www.example.com/doc that are owned by the current user. The current user ("gclemm") is authenticated using Digest authentication.

   >> Request <<

>> Request <<

   REPORT /doc/ HTTP/1.1
   Host: www.example.com
   Authorization: Digest username="gclemm",
     realm="users@example.com", nonce="...",
     uri="/papers/", response="...", opaque="..."
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxxx
   Depth: 0

REPORT /doc/ HTTP/1.1 Host: www.example.com Authorization: Digest username="gclemm", realm="users@example.com", nonce="...", uri="/papers/", response="...", opaque="..." Content-Type: text/xml; charset="utf-8" Content-Length: xxxx Depth: 0

Clemm, et al.               Standards Track                    [Page 50]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 50] RFC 3744 WebDAV Access Control Protocol May 2004

   <?xml version="1.0" encoding="utf-8" ?>
   <D:principal-match xmlns:D="DAV:">
     <D:principal-property>
       <D:owner/>
     </D:principal-property>
   </D:principal-match>

<?xml version="1.0" encoding="utf-8" ?> <D:principal-match xmlns:D="DAV:"> <D:principal-property> <D:owner/> </D:principal-property> </D:principal-match>

   >> Response <<

>> Response <<

   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxxx

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:">
     <D:response>
       <D:href>http://www.example.com/doc/foo.html</D:href>
       <D:status>HTTP/1.1 200 OK</D:status>
     </D:response>
     <D:response>
       <D:href>http://www.example.com/doc/img/bar.gif</D:href>
       <D:status>HTTP/1.1 200 OK</D:status>
     </D:response>
   </D:multistatus>

<?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:"> <D:response> <D:href>http://www.example.com/doc/foo.html</D:href> <D:status>HTTP/1.1 200 OK</D:status> </D:response> <D:response> <D:href>http://www.example.com/doc/img/bar.gif</D:href> <D:status>HTTP/1.1 200 OK</D:status> </D:response> </D:multistatus>

9.4.  DAV:principal-property-search REPORT

9.4. DAV:principal-property-search REPORT

   The DAV:principal-property-search REPORT performs a search for all
   principals whose properties contain character data that matches the
   search criteria specified in the request.  One expected use of this
   report is to discover the URL of a principal associated with a given
   person or group by searching for them by name.  This is done by
   searching over DAV:displayname, which is defined on all principals.

The DAV:principal-property-search REPORT performs a search for all principals whose properties contain character data that matches the search criteria specified in the request. One expected use of this report is to discover the URL of a principal associated with a given person or group by searching for them by name. This is done by searching over DAV:displayname, which is defined on all principals.

   The actual search method (exact matching vs. substring matching vs,
   prefix-matching, case-sensitivity) deliberately is left to the server
   implementation to allow implementation on a wide set of possible user
   management systems.  In cases where the implementation of
   DAV:principal-property-search is not constrained by the semantics of
   an underlying user management repository, preferred default semantics
   are caseless substring matches.

The actual search method (exact matching vs. substring matching vs, prefix-matching, case-sensitivity) deliberately is left to the server implementation to allow implementation on a wide set of possible user management systems. In cases where the implementation of DAV:principal-property-search is not constrained by the semantics of an underlying user management repository, preferred default semantics are caseless substring matches.

   For implementation efficiency, servers do not typically support
   searching on all properties.  A search requesting properties that are
   not searchable for a particular principal will not match that
   principal.

For implementation efficiency, servers do not typically support searching on all properties. A search requesting properties that are not searchable for a particular principal will not match that principal.

   Support for the DAV:principal-property-search report is REQUIRED.

Support for the DAV:principal-property-search report is REQUIRED.

Clemm, et al.               Standards Track                    [Page 51]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 51] RFC 3744 WebDAV Access Control Protocol May 2004

      Implementation Note: The value of a WebDAV property is a sequence
      of well-formed XML, and hence can include any character in the
      Unicode/ISO-10646 standard, that is, most known characters in
      human languages.  Due to the idiosyncrasies of case mapping across
      human languages, implementation of case-insensitive matching is
      non-trivial.  Implementors of servers that do perform substring
      matching are strongly encouraged to consult "The Unicode Standard"
      [UNICODE4], especially Section 5.18, Subsection "Caseless
      Matching", for guidance when implementing their case-insensitive
      matching algorithms.

Implementation Note: The value of a WebDAV property is a sequence of well-formed XML, and hence can include any character in the Unicode/ISO-10646 standard, that is, most known characters in human languages. Due to the idiosyncrasies of case mapping across human languages, implementation of case-insensitive matching is non-trivial. Implementors of servers that do perform substring matching are strongly encouraged to consult "The Unicode Standard" [UNICODE4], especially Section 5.18, Subsection "Caseless Matching", for guidance when implementing their case-insensitive matching algorithms.

      Implementation Note: Some implementations of this protocol will
      use an LDAP repository for storage of principal metadata.  The
      schema describing each attribute (akin to a WebDAV property) in an
      LDAP repository specifies whether it supports case-sensitive or
      caseless searching.  One of the benefits of leaving the search
      method to the discretion of the server implementation is the
      default LDAP attribute search behavior can be used when
      implementing the DAV:principal-property-search report.

Implementation Note: Some implementations of this protocol will use an LDAP repository for storage of principal metadata. The schema describing each attribute (akin to a WebDAV property) in an LDAP repository specifies whether it supports case-sensitive or caseless searching. One of the benefits of leaving the search method to the discretion of the server implementation is the default LDAP attribute search behavior can be used when implementing the DAV:principal-property-search report.

   Marshalling:

Marshalling:

      The request body MUST be a DAV:principal-property-search XML
      element containing a search specification and an optional list of
      properties.  For every principal that matches the search
      specification, the response will contain the value of the
      requested properties on that principal.

The request body MUST be a DAV:principal-property-search XML element containing a search specification and an optional list of properties. For every principal that matches the search specification, the response will contain the value of the requested properties on that principal.

      <!ELEMENT principal-property-search
       ((property-search+), prop?, apply-to-principal-collection-set?) >

<!ELEMENT principal-property-search ((property-search+), prop?, apply-to-principal-collection-set?) >

      By default, the report searches all members (at any depth) of the
      collection identified by the Request-URI.  If DAV:apply-to-
      principal-collection-set is specified in the request body, the
      request is applied instead to each collection identified by the
      DAV:principal-collection-set property of the resource identified
      by the Request-URI.

By default, the report searches all members (at any depth) of the collection identified by the Request-URI. If DAV:apply-to- principal-collection-set is specified in the request body, the request is applied instead to each collection identified by the DAV:principal-collection-set property of the resource identified by the Request-URI.

      The DAV:property-search element contains a prop element
      enumerating the properties to be searched and a match element,
      containing the search string.

The DAV:property-search element contains a prop element enumerating the properties to be searched and a match element, containing the search string.

      <!ELEMENT property-search (prop, match) >
      prop: see RFC 2518, Section 12.11

<!ELEMENT property-search (prop, match) > prop: see RFC 2518, Section 12.11

      <!ELEMENT match #PCDATA >

<!ELEMENT match #PCDATA >

Clemm, et al.               Standards Track                    [Page 52]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 52] RFC 3744 WebDAV Access Control Protocol May 2004

      Multiple property-search elements or multiple elements within a
      DAV:prop element will be interpreted with a logical AND.

Multiple property-search elements or multiple elements within a DAV:prop element will be interpreted with a logical AND.

      This report is only defined when the Depth header has value "0";
      other values result in a 400 (Bad Request) error response.  Note
      that [RFC3253], Section 3.6, states that if the Depth header is
      not present, it defaults to a value of "0".

This report is only defined when the Depth header has value "0"; other values result in a 400 (Bad Request) error response. Note that [RFC3253], Section 3.6, states that if the Depth header is not present, it defaults to a value of "0".

      The response body for a successful request MUST be a
      DAV:multistatus XML element.  In the case where there are no
      response elements, the returned multistatus XML element is empty.

The response body for a successful request MUST be a DAV:multistatus XML element. In the case where there are no response elements, the returned multistatus XML element is empty.

      multistatus: see RFC 2518, Section 12.9

multistatus: see RFC 2518, Section 12.9

      The response body for a successful DAV:principal-property-search
      REPORT request MUST contain  a DAV:response element for each
      principal whose property values satisfy the search specification
      given in DAV:principal-property-search.

The response body for a successful DAV:principal-property-search REPORT request MUST contain a DAV:response element for each principal whose property values satisfy the search specification given in DAV:principal-property-search.

      If DAV:prop is specified in the request body, the properties
      specified in the DAV:prop element MUST be reported in the
      DAV:response elements.

If DAV:prop is specified in the request body, the properties specified in the DAV:prop element MUST be reported in the DAV:response elements.

   Preconditions:

Preconditions:

      None

None

   Postconditions:

Postconditions:

      (DAV:number-of-matches-within-limits): The number of matching
      principals must fall within server-specific, predefined limits.
      For example, this condition might be triggered if a search
      specification would cause the return of an extremely large number
      of responses.

(DAV:number-of-matches-within-limits): The number of matching principals must fall within server-specific, predefined limits. For example, this condition might be triggered if a search specification would cause the return of an extremely large number of responses.

9.4.1.  Matching

9.4.1. Matching

   There are several cases to consider when matching strings.  The
   easiest case is when a property value is "simple" and has only
   character information item content (see [REC-XML-INFOSET]).  For
   example, the search string "julian" would match the DAV:displayname
   property with value "Julian Reschke".  Note that the on-the-wire
   marshaling of DAV:displayname in this case is:

There are several cases to consider when matching strings. The easiest case is when a property value is "simple" and has only character information item content (see [REC-XML-INFOSET]). For example, the search string "julian" would match the DAV:displayname property with value "Julian Reschke". Note that the on-the-wire marshaling of DAV:displayname in this case is:

   <D:displayname xmlns:D="DAV:">Julian Reschke</D:displayname>

<D:displayname xmlns:D="DAV:">Julian Reschke</D:displayname>

Clemm, et al.               Standards Track                    [Page 53]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 53] RFC 3744 WebDAV Access Control Protocol May 2004

   The name of the property is encoded into the XML element information
   item, and the character information item content of the property is
   "Julian Reschke".

The name of the property is encoded into the XML element information item, and the character information item content of the property is "Julian Reschke".

   A more complicated case occurs when properties have mixed content
   (that is, compound values consisting of multiple child element items,
   other types of information items, and character information item
   content).  Consider the property "aprop" in the namespace "http://
   www.example.com/props/", marshaled as:

A more complicated case occurs when properties have mixed content (that is, compound values consisting of multiple child element items, other types of information items, and character information item content). Consider the property "aprop" in the namespace "http:// www.example.com/props/", marshaled as:

   <W:aprop xmlns:W="http://www.example.com/props/">
     {cdata 0}<W:elem1>{cdata 1}</W:elem1>
     <W:elem2>{cdata 2}</W:elem2>{cdata 3}
   </W:aprop>

<W:aprop xmlns:W="http://www.example.com/props/"> {cdata 0}<W:elem1>{cdata 1}</W:elem1> <W:elem2>{cdata 2}</W:elem2>{cdata 3} </W:aprop>

   In this case, matching is performed on each individual contiguous
   sequence of character information items.  In the example above, a
   search string would be compared to the four following strings:

In this case, matching is performed on each individual contiguous sequence of character information items. In the example above, a search string would be compared to the four following strings:

   {cdata 0}
   {cdata 1}
   {cdata 2}
   {cdata 3}

{cdata 0} {cdata 1} {cdata 2} {cdata 3}

   That is, four individual matches would be performed, one each for
   {cdata 0}, {cdata 1}, {cdata 2}, and {cdata 3}.

That is, four individual matches would be performed, one each for {cdata 0}, {cdata 1}, {cdata 2}, and {cdata 3}.

9.4.2.  Example: successful DAV:principal-property-search REPORT

9.4.2. Example: successful DAV:principal-property-search REPORT

   In this example, the client requests the principal URLs of all users
   whose DAV:displayname property contains the substring "doE" and whose
   "title" property in the namespace "http://BigCorp.com/ns/" (that is,
   their professional title) contains "Sales".  In addition, the client
   requests five properties to be returned with the matching principals:

In this example, the client requests the principal URLs of all users whose DAV:displayname property contains the substring "doE" and whose "title" property in the namespace "http://BigCorp.com/ns/" (that is, their professional title) contains "Sales". In addition, the client requests five properties to be returned with the matching principals:

   In the DAV: namespace: displayname

In the DAV: namespace: displayname

   In the http://www.example.com/ns/ namespace: department, phone,
   office, salary

In the http://www.example.com/ns/ namespace: department, phone, office, salary

Clemm, et al.               Standards Track                    [Page 54]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 54] RFC 3744 WebDAV Access Control Protocol May 2004

   The response shows that two principal resources meet the search
   specification, "John Doe" and "Zygdoebert Smith".  The property
   "salary" in namespace "http://www.example.com/ns/" is not returned,
   since the principal making the request does not have sufficient
   access permissions to read this property.

The response shows that two principal resources meet the search specification, "John Doe" and "Zygdoebert Smith". The property "salary" in namespace "http://www.example.com/ns/" is not returned, since the principal making the request does not have sufficient access permissions to read this property.

   >> Request <<

>> Request <<

   REPORT /users/ HTTP/1.1
   Host: www.example.com
   Content-Type: text/xml; charset=utf-8
   Content-Length: xxxx
   Depth: 0

REPORT /users/ HTTP/1.1 Host: www.example.com Content-Type: text/xml; charset=utf-8 Content-Length: xxxx Depth: 0

   <?xml version="1.0" encoding="utf-8" ?>
   <D:principal-property-search xmlns:D="DAV:">
     <D:property-search>
       <D:prop>
         <D:displayname/>
       </D:prop>
       <D:match>doE</D:match>
     </D:property-search>
     <D:property-search>
       <D:prop xmlns:B="http://www.example.com/ns/">
         <B:title/>
       </D:prop>
       <D:match>Sales</D:match>
     </D:property-search>
     <D:prop xmlns:B="http://www.example.com/ns/">
       <D:displayname/>
       <B:department/>
       <B:phone/>
       <B:office/>
       <B:salary/>
     </D:prop>
   </D:principal-property-search>

<?xml version="1.0" encoding="utf-8" ?> <D:principal-property-search xmlns:D="DAV:"> <D:property-search> <D:prop> <D:displayname/> </D:prop> <D:match>doE</D:match> </D:property-search> <D:property-search> <D:prop xmlns:B="http://www.example.com/ns/"> <B:title/> </D:prop> <D:match>Sales</D:match> </D:property-search> <D:prop xmlns:B="http://www.example.com/ns/"> <D:displayname/> <B:department/> <B:phone/> <B:office/> <B:salary/> </D:prop> </D:principal-property-search>

   >> Response <<

>> Response <<

   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml; charset=utf-8
   Content-Length: xxxx

HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset=utf-8 Content-Length: xxxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:" xmlns:B="http://BigCorp.com/ns/">
     <D:response>
       <D:href>http://www.example.com/users/jdoe</D:href>
       <D:propstat>

<?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:" xmlns:B="http://BigCorp.com/ns/"> <D:response> <D:href>http://www.example.com/users/jdoe</D:href> <D:propstat>

Clemm, et al.               Standards Track                    [Page 55]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 55] RFC 3744 WebDAV Access Control Protocol May 2004

         <D:prop>
           <D:displayname>John Doe</D:displayname>
           <B:department>Widget Sales</B:department>
           <B:phone>234-4567</B:phone>
           <B:office>209</B:office>
         </D:prop>
         <D:status>HTTP/1.1 200 OK</D:status>
       </D:propstat>
       <D:propstat>
         <D:prop>
           <B:salary/>
         </D:prop>
         <D:status>HTTP/1.1 403 Forbidden</D:status>
       </D:propstat>
     </D:response>
     <D:response>
       <D:href>http://www.example.com/users/zsmith</D:href>
       <D:propstat>
         <D:prop>
           <D:displayname>Zygdoebert Smith</D:displayname>
           <B:department>Gadget Sales</B:department>
           <B:phone>234-7654</B:phone>
           <B:office>114</B:office>
         </D:prop>
         <D:status>HTTP/1.1 200 OK</D:status>
       </D:propstat>
       <D:propstat>
         <D:prop>
           <B:salary/>
         </D:prop>
         <D:status>HTTP/1.1 403 Forbidden</D:status>
       </D:propstat>
     </D:response>
   </D:multistatus>

<D:prop> <D:displayname>John Doe</D:displayname> <B:department>Widget Sales</B:department> <B:phone>234-4567</B:phone> <B:office>209</B:office> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> <D:propstat> <D:prop> <B:salary/> </D:prop> <D:status>HTTP/1.1 403 Forbidden</D:status> </D:propstat> </D:response> <D:response> <D:href>http://www.example.com/users/zsmith</D:href> <D:propstat> <D:prop> <D:displayname>Zygdoebert Smith</D:displayname> <B:department>Gadget Sales</B:department> <B:phone>234-7654</B:phone> <B:office>114</B:office> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> <D:propstat> <D:prop> <B:salary/> </D:prop> <D:status>HTTP/1.1 403 Forbidden</D:status> </D:propstat> </D:response> </D:multistatus>

9.5.  DAV:principal-search-property-set REPORT

9.5. DAV:principal-search-property-set REPORT

   The DAV:principal-search-property-set REPORT identifies those
   properties that may be searched using the DAV:principal-property-
   search REPORT (defined in Section 9.4).

The DAV:principal-search-property-set REPORT identifies those properties that may be searched using the DAV:principal-property- search REPORT (defined in Section 9.4).

   Servers MUST support the DAV:principal-search-property-set REPORT on
   all collections identified in the value of a DAV:principal-
   collection-set property.

Servers MUST support the DAV:principal-search-property-set REPORT on all collections identified in the value of a DAV:principal- collection-set property.

   An access control protocol user agent could use the results of the
   DAV:principal-search-property-set REPORT to present a query interface
   to the user for retrieving principals.

An access control protocol user agent could use the results of the DAV:principal-search-property-set REPORT to present a query interface to the user for retrieving principals.

Clemm, et al.               Standards Track                    [Page 56]

RFC 3744             WebDAV Access Control Protocol             May 2004

Clemm, et al. Standards Track [Page 56] RFC 3744 WebDAV Access Control Protocol May 2004

   Support for this report is REQUIRED.

Support for this report is REQUIRED.

      Implementation Note: Some clients will have only limited screen
      real estate for the display of lists of searchable properties.  In
      this case, a user might appreciate having the most frequently
      searched properties be displayed on-screen, rather than having to
      scroll through a long list of searchable properties.  One
      mechanism for signaling the most frequently searched properties is
      to return them towards the start of a list of properties.  A
      client can then preferentially display the list of properties in
      order, increasing the likelihood that the most frequently searched
      properties will appear on-screen, and will not require scrolling
      for their selection.

Implementation Note: Some clients will have only limited screen real estate for the display of lists of searchable properties. In this case, a user might appreciate having the most frequently searched properties be displayed on-screen, rather than having to scroll through a long list of searchable properties. One mechanism for signaling the most frequently searched properties is to return them towards the start of a list of properties. A client can then preferentially display the list of properties in order, increasing the likelihood that the most frequently searched properties will appear on-screen, and will not require scrolling for their selection.

   Marshalling:

Marshalling:

      The request body MUST be an empty DAV:principal-search-property-
      set XML element.

The request body MUST be an empty DAV:principal-search-property- set XML element.

      This report is only defined when the Depth header has value "0";
      other values result in a 400 (Bad Request) error response.  Note
      that [RFC3253], Section 3.6, states that if the Depth header is
      not present, it defaults to a value of "0".

このレポートはDepthヘッダーに値があるときの「0インチ」という定義されるだけであって、ことです。 他の値は400(悪いRequest)誤り応答をもたらします。 [RFC3253](セクション3.6)が、Depthヘッダーが出席していないなら、それが「0インチ」の値をデフォルトとすると述べることに注意してください。

      The response body MUST be  a DAV:principal-search-property-set XML
      element, containing a DAV:principal-search-property XML element
      for each property that may be searched with the DAV:principal-
      property-search REPORT.  A server MAY limit its response to just a
      subset of the searchable properties, such as those likely to be
      useful to an interactive access control client.

応答本体はDAVであるに違いありません: 主要な検索特性のセットXML要素DAVを含みます: (DAV: 主体特性検索REPORTと共に捜されるかもしれない各特性のための主要な検索の特性のXML要素)。 サーバは応答をまさしく探せる特性の部分集合に制限するかもしれません、対話的なアクセス制御クライアントの役に立つ傾向があるそれらなどのように。

      <!ELEMENT principal-search-property-set
       (principal-search-property*) >

<!のELEMENTの主要な検索特性のセット(主要な検索特性*) >。

      Each DAV:principal-search-property XML element contains exactly
      one searchable property, and a description of the property.

各DAV: 主要な検索の特性のXML要素はまさに1つの探せる特性、および特性の記述を含んでいます。

      <!ELEMENT principal-search-property (prop, description) >

<!のELEMENTの主要な検索の特性(支柱、記述) >。

      The DAV:prop element contains one principal property on which the
      server is able to perform a DAV:principal-property-search REPORT.

DAV: 支柱要素はサーバがDAVを実行できる1つの主要な所有地を含んでいます: 主要な特性の検索REPORT。

      prop: see RFC 2518, Section 12.11

以下を支えてください。 RFC2518、セクション12.11を見てください。

Clemm, et al.               Standards Track                    [Page 57]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[57ページ]。

      The description element is a human-readable description of what
      information this property represents.  Servers MUST indicate the
      human language of the description using the xml:lang attribute and
      SHOULD consider the HTTP Accept-Language request header when
      selecting one of multiple available languages.

記述要素はこの特性がどんな情報を表すかに関する人間読み込み可能な記述です。 xmlを使用して、サーバは記述の人間の言語を示さなければなりません: 複数の利用可能な言語の1つを選択するとき、lang属性とSHOULDはHTTP Accept-言語要求ヘッダーを考えます。

      <!ELEMENT description #PCDATA >

<!ELEMENT記述#PCDATA>。

9.5.1.  Example: DAV:principal-search-property-set REPORT

9.5.1. 例: DAV: 主要な検索特性のセットレポート

   In this example, the client determines the set of searchable
   principal properties by requesting the DAV:principal-search-
   property-set REPORT on the root of the server's principal URL
   collection set, identified by http://www.example.com/users/.

この例では、クライアントはDAVを要求することによって、探せる主要な特性のセットを決定します: http://www.example.com/users/ によって特定されたサーバの主要なURL収集セットの根の主体特性に検索で設定されたREPORT。

   >> Request <<

>>要求<<。

   REPORT /users/ HTTP/1.1
   Host: www.example.com
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx
   Accept-Language: en, de
   Authorization: BASIC d2FubmFtYWs6cGFzc3dvcmQ=
   Depth: 0

/users/ HTTP/1.1ホストを報告してください: www.example.comコンテントタイプ: テキスト/xml。 charsetが等しい、「utf-8インチのContent-長さ:」 xxx Accept-言語: アン、de Authorization: 基本的なd2FubmFtYWs6cGFzc3dvcmQは深さと等しいです: 0

   <?xml version="1.0" encoding="utf-8" ?>
   <D:principal-search-property-set xmlns:D="DAV:"/>

<?xmlバージョンが等しい、「1インチのコード化=「utf8インチ?><D: 主要な検索特性のセットxmlns: Dは「DAV:」 />と等しいです」。

   >> Response <<

>>応答<<。

   HTTP/1.1 200 OK
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxx

HTTP/1.1 200はコンテントタイプを承認します: テキスト/xml。 charsetが等しい、「utf-8インチのContent-長さ:」 xxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:principal-search-property-set xmlns:D="DAV:">
     <D:principal-search-property>
       <D:prop>
         <D:displayname/>
       </D:prop>
       <D:description xml:lang="en">Full name</D:description>
     </D:principal-search-property>
     <D:principal-search-property>
       <D:prop xmlns:B="http://BigCorp.com/ns/">
         <B:title/>

<?xmlバージョンが等しい、「=をコード化する1インチ、「utf-8インチ?><D: 主要な検索特性のセットxmlns: Dが等しい、「DAV: 「><D: 主要な検索特性の><D: ><D: displayname/></Dを支えてください: xml: ><D: 記述lang=を支えてください」というアン、「>Fullが</D: 記述></D: 主要な検索している特性の><D: 主要な検索している特性の><D: 支柱xmlns: Bを=と命名する、「 http://BigCorp.com/ns/ 、「><B: タイトル/>」

Clemm, et al.               Standards Track                    [Page 58]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[58ページ]。

       </D:prop>
       <D:description xml:lang="en">Job title</D:description>
     </D:principal-search-property>
   </D:principal-search-property-set>

</D: xml: ><D: 記述lang=を支えてください、「アン「></D: >役職</D: 記述></D: 主要な検索特性の検索特性に主体で設定された>」

10.  XML Processing

10. XML処理

   Implementations of this specification MUST support the XML element
   ignore rule, as specified in Section 23.3.2 of [RFC2518], and the XML
   Namespace recommendation [REC-XML-NAMES].

仕様がXML要素を支えなければならないこの実装は規則を無視します、.2セクション23.3[RFC2518]、およびXML Namespace推薦[REC-XML-NAMES]で指定されるように。

   Note that use of the DAV namespace is reserved for XML elements and
   property names defined in a standards-track or Experimental IETF RFC.

DAV名前空間の使用が標準化過程かExperimental IETF RFCで定義されたXML要素と特性の名のために控えられることに注意してください。

11.  Internationalization Considerations

11. 国際化問題

   In this specification, the only human-readable content can be found
   in the description XML element, found within the DAV:supported-
   privilege-set property.  This element contains a human-readable
   description of the capabilities controlled by a privilege.  As a
   result, the description element must be capable of representing
   descriptions in multiple character sets.  Since the description
   element is found within a WebDAV property, it is represented on the
   wire as XML [REC-XML], and hence can leverage XML's language tagging
   and character set encoding capabilities.  Specifically, XML
   processors at minimum must be able to read XML elements encoded using
   the UTF-8 [RFC3629] encoding of the ISO 10646 multilingual plane.
   XML examples in this specification demonstrate use of the charset
   parameter of the Content-Type header, as defined in [RFC3023], as
   well as the XML "encoding" attribute, which together provide charset
   identification information for MIME and XML processors.  Furthermore,
   this specification requires server implementations to tag description
   fields with the xml:lang attribute (see Section 2.12 of [REC-XML]),
   which specifies the human language of the description.  Additionally,
   server implementations should take into account the value of the
   Accept-Language HTTP header to determine which description string to
   return.

この仕様では、DAVの中で見つけられた記述XML要素で唯一の人間読み込み可能な内容を見つけることができます: 特権セット所有地であるとサポートされます。 この要素は特権によって制御された能力の人間読み込み可能な記述を含んでいます。 その結果、記述要素は複数の文字集合における記述を表すことができなければなりません。 記述要素がWebDAV所有地の中で見つけられるので、それは、XML[REC-XML]としてワイヤの上に表されて、したがって、能力をコード化するXMLの言語タグ付けと文字集合を利用することができます。 明確に、最小限におけるXMLプロセッサはISOの10646の多言語飛行機のUTF-8[RFC3629]コード化を使用することでコード化された要素をXMLに読み込むことができなければなりません。 この仕様によるXMLの例はコンテントタイプヘッダーのcharsetパラメタの使用を示して、「コード化XML」属性と同じくらい良い[RFC3023]でどれを一緒に定義するようにMIMEとXMLプロセッサのためのcharset識別情報を提供してくださいか。 その上、この仕様は記述分野にxmlをタグ付けするためにサーバ実装を必要とします: lang属性([REC-XML]のセクション2.12を見ます)。(その属性は記述の人間の言語を指定します)。 さらに、サーバ実装は、どの記述ストリングを返したらよいかを決定するためにAccept-言語HTTPヘッダの値を考慮に入れるべきです。

   For XML elements other than the description element, it is expected
   that implementations will treat the property names, privilege names,
   and values as tokens, and convert these tokens into human-readable
   text in the user's language and character set when displayed to a
   person.  Only a generic WebDAV property display utility would display
   these values in their raw form to a human user.

記述要素以外のXML要素において、人に表示すると、実装がトークンとして特性の名、特権名、および値を扱って、ユーザの言語と文字集合で人間読み込み可能なテキストにこれらのトークンを変換すると予想します。 ジェネリックWebDAV特性のディスプレイユーティリティだけがそれらの生のフォームに人間のユーザにこれらの値を表示するでしょう。

   For error reporting, we follow the convention of HTTP/1.1 status
   codes, including with each status code a short, English description
   of the code (e.g., 200 (OK)).  While the possibility exists that a

誤り報告のために、私たちはHTTP/1.1のステータスコードのコンベンションに続きます、各ステータスコードでコード(例えば、200(OK))の短くて、イギリスの記述を含んでいて。 可能性が存在している、そのa

Clemm, et al.               Standards Track                    [Page 59]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[59ページ]。

   poorly crafted user agent would display this message to a user,
   internationalized applications will ignore this message, and display
   an appropriate message in the user's language and character set.

不十分に作られたユーザエージェントがこのメッセージをユーザに表示して、国際化しているアプリケーションは、ユーザの言語と文字集合でこのメッセージを無視して、適切なメッセージを表示するでしょう。

   Further internationalization considerations for this protocol are
   described in the WebDAV Distributed Authoring protocol specification
   [RFC2518].

このプロトコルのためのさらなる国際化問題はWebDAV Distributed Authoringプロトコル仕様[RFC2518]で説明されます。

12.  Security Considerations

12. セキュリティ問題

   Applications and users of this access control protocol should be
   aware of several security considerations, detailed below.  In
   addition to the discussion in this document, the security
   considerations detailed in the HTTP/1.1 specification [RFC2616], the
   WebDAV Distributed Authoring Protocol specification [RFC2518], and
   the XML Media Types specification [RFC3023] should be considered in a
   security analysis of this protocol.

このアクセス制御プロトコルのアプリケーションとユーザは、いくつかのセキュリティ問題を意識していて、以下で詳細であるべきです。 このドキュメント、HTTP/1.1仕様で詳細なセキュリティ問題[RFC2616]、WebDAV Distributed Authoringプロトコル仕様[RFC2518]、およびXMLメディアTypesにおける議論に加えて、仕様[RFC3023]はこのプロトコルの証券分析で考えられるべきです。

12.1.  Increased Risk of Compromised Users

12.1. 感染しているユーザの増強されたリスク

   In the absence of a mechanism for remotely manipulating access
   control lists, if a single user's authentication credentials are
   compromised, only those resources for which the user has access
   permission can be read, modified, moved, or deleted.  With the
   introduction of this access control protocol, if a single compromised
   user has the ability to change ACLs for a broad range of other users
   (e.g., a super-user), the number of resources that could be altered
   by a single compromised user increases.  This risk can be mitigated
   by limiting the number of people who have write-acl privileges across
   a broad range of resources.

シングルユーザーの認証資格証明書が感染されるならアクセスコントロールリストを離れて操るためのメカニズムがないとき、ユーザが参照許可を持っているそれらのリソースしか読むか、変更されるか、動かされるか、または削除できません。 このアクセス制御プロトコルの導入によると、独身の感染しているユーザに広範囲な他のユーザ(例えば、スーパーユーザ)のためにACLsを変える能力があるなら、独身の感染しているユーザが変更できたリソースの数は増加します。 広範囲なリソースの向こう側にaclに書いている特権を持っている人々の数を制限することによって、この危険を緩和できます。

12.2.  Risks of the DAV:read-acl and DAV:current-user-privilege-set
       Privileges

12.2. DAVのリスク: aclを読んで、DAV: 設定された現在のユーザ特権特権

   The ability to read the access privileges (stored in the DAV:acl
   property), or the privileges permitted the currently authenticated
   user (stored in the DAV:current-user-privilege-set property) on a
   resource may seem innocuous, since reading an ACL cannot possibly
   affect the resource's state.  However, if all resources have world-
   readable ACLs, it is possible to perform an exhaustive search for
   those resources that have inadvertently left themselves in a
   vulnerable state, such as being world-writable.  In particular, the
   property retrieval method PROPFIND, executed with Depth infinity on
   an entire hierarchy, is a very efficient way to retrieve the DAV:acl
   or DAV:current-user-privilege-set properties.  Once found, this
   vulnerability can be exploited by a denial of service attack in which
   the open resource is repeatedly overwritten.  Alternately, writable
   resources can be modified in undesirable ways.

アクセス権(DAV: acl所有地では、保存される)、またはリソースで現在認証されたユーザ(DAV: 現在のユーザ特権セット所有地では、保存される)に受入れられた特権を読む能力は無毒に見えるかもしれません、ACLを読む場合リソースの状態に影響できないので。 しかしながら、すべてのリソースに世界の読み込み可能なACLsがあるなら、被害を受け易い状態にうっかり自分たちを置き去りにしたそれらのリソースの徹底的な検索を実行するのは可能です、世界書き込み可能であるのなどように。 全体の階層構造に関するDepth無限で実行された特性の検索メソッドPROPFINDは特に、DAV: aclかDAVを検索する非常に効率的な方法です: 現在のユーザ特権セット所有地。 いったん見つけられると、開いているリソースが繰り返して上書きされるサービス不能攻撃でこの脆弱性を利用できます。 交互に、望ましくない方法で書き込み可能なリソースを変更できます。

Clemm, et al.               Standards Track                    [Page 60]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[60ページ]。

   To reduce this risk, read-acl privileges should not be granted to
   unauthenticated principals, and restrictions on read-acl and read-
   current-user-privilege-set privileges for authenticated principals
   should be carefully analyzed when deploying this protocol.  Access to
   the current-user-privilege-set property will involve a tradeoff of
   usability versus security.  When the current-user-privilege-set is
   visible, user interfaces are expected to provide enhanced information
   concerning permitted and restricted operations, yet this information
   may also indicate a vulnerability that could be exploited.
   Deployment of this protocol will need to evaluate this tradeoff in
   light of the requirements of the deployment environment.

この危険を減少させるために、aclを読むところでaclを読んでいる特権を非認証された主体、および制限に与えるべきではありません、そして、このプロトコルを配布するとき、読まれて、慎重に認証された主体のための現在のユーザ特権セット特権を分析するべきです。 現在のユーザ特権セット所有地へのアクセスはセキュリティに対してユーザビリティの見返りにかかわるでしょう。 現在のユーザ特権セットが目に見えるとき、ユーザインタフェースが受入れられて制限された操作に関して高められた情報を提供すると予想されて、しかし、また、この情報は利用できた脆弱性を示すかもしれません。 このプロトコルの展開は、展開環境の要件の観点からこの見返りを評価する必要があるでしょう。

12.3.  No Foreknowledge of Initial ACL

12.3. 初期のACLの予言がありません。

   In an effort to reduce protocol complexity, this protocol
   specification intentionally does not address the issue of how to
   manage or discover the initial ACL that is placed upon a resource
   when it is created.  The only way to discover the initial ACL is to
   create a new resource, then retrieve the value of the DAV:acl
   property.  This assumes the principal creating the resource also has
   been granted the DAV:read-acl privilege.

プロトコルの複雑さを減少させる取り組みでは、このプロトコル仕様は故意にそれが作成されるときリソースに置かれる初期のACLを管理するか、またはどう発見するかに関する問題を扱いません。 初期のACLを発見する唯一の方法は、新しいリソースを作成して、次に、DAVの値を検索することです: aclの特性。 これは、リソースを作成する校長にもDAVを与えました: aclを読んでいる特権と仮定します。

   As a result, it is possible that a principal could create a resource,
   and then discover that its ACL grants privileges that are
   undesirable.  Furthermore, this protocol makes it possible (though
   unlikely) that the creating principal could be unable to modify the
   ACL, or even delete the resource.  Even when the ACL can be modified,
   there will be a short period of time when the resource exists with
   the initial ACL before its new ACL can be set.

その結果、元本が、リソースを作成して、次に、ACLが望ましくない特権を与えると発見できたのは、可能です。 その上、このプロトコルで、作成主体がACLを変更するか、またはリソースを削除さえできないかもしれないのが可能に(ありそうもないのですが)なります。 ACLを変更さえできるとき、新しいACLが用意ができることができる前にリソースが初期のACLと共に存在する短期間があるでしょう。

   Several factors mitigate this risk.  Human principals are often aware
   of the default access permissions in their editing environments and
   take this into account when writing information.  Furthermore,
   default privilege policies are usually very conservative, limiting
   the privileges granted by the initial ACL.

いくつかの要素がこの危険を緩和します。 人間の校長は、環境を編集する際にデフォルトアクセス許容をしばしば意識していて、情報を書くとき、これを考慮に入れます。 その上、初期のACLによって与えられた特権を制限して、通常、デフォルト特権方針は非常に保守的です。

13.  Authentication

13. 認証

   Authentication mechanisms defined for use with HTTP and WebDAV also
   apply to this WebDAV Access Control Protocol, in particular the Basic
   and Digest authentication mechanisms defined in [RFC2617].
   Implementation of the ACL spec requires that Basic authentication, if
   used, MUST only be supported over secure transport such as TLS.

また、HTTPとWebDAVとの使用のために定義された認証機構は特に認証機構が[RFC2617]で定義したこのWebDAV Access Controlプロトコル、Basic、およびDigestに適用されます。 ACL仕様の実装は、使用されるならTLSなどの安全な輸送の上でBasic認証をサポートするだけでよいのを必要とします。

Clemm, et al.               Standards Track                    [Page 61]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[61ページ]。

14.  IANA Considerations

14. IANA問題

   This document uses the namespace defined by [RFC2518] for XML
   elements.  That is, this specification uses the "DAV:" URI namespace,
   previously registered in the URI schemes registry.  All other IANA
   considerations mentioned in [RFC2518] are also applicable to this
   specification.

このドキュメントはXML要素のために[RFC2518]によって定義された名前空間を使用します。 それがそうであり、この仕様が用途である、「DAV:」 以前にURI体系登録に登録されたURI名前空間。 また、[RFC2518]で言及された他のすべてのIANA問題もこの仕様に適切です。

15.  Acknowledgements

15. 承認

   This protocol is the collaborative product of the WebDAV ACL design
   team: Bernard Chester, Geoff Clemm, Anne Hopkins, Barry Lind, Sean
   Lyndersay, Eric Sedlar, Greg Stein, and Jim Whitehead.  The authors
   are grateful for the detailed review and comments provided by Jim
   Amsden, Dylan Barrell, Gino Basso, Murthy Chintalapati, Lisa
   Dusseault, Stefan Eissing, Tim Ellison, Yaron Goland, Dennis
   Hamilton, Laurie Harper, Eckehard Hermann, Ron Jacobs, Chris Knight,
   Remy Maucherat, Larry Masinter, Joe Orton, Peter Raymond, and Keith
   Wannamaker.  We thank Keith Wannamaker for the initial text of the
   principal property search sections.  Prior work on WebDAV access
   control protocols has been performed by Yaron Goland, Paul Leach,
   Lisa Dusseault, Howard Palmer, and Jon Radoff.  We would like to
   acknowledge the foundation laid for us by the authors of the DeltaV,
   WebDAV and HTTP protocols upon which this protocol is layered, and
   the invaluable feedback from the WebDAV working group.

このプロトコルはWebDAV ACLデザインチームの協力的な製品です: バーナード・チェスター、ジェフ・クレム、アン・ホプキン、Barryリンド、ショーンLyndersay、エリックSedlar、グレッグ・シタイン、およびジム・ホワイトヘッド。 作者はジムAmsden、ディランBarrell、ジーノBasso、Murthy Chintalapati、リサDusseault、ステファンEissing、ティム・エリソン、ヤロンGoland、デニス・ハミルトン、ローリーHarper、Eckehardハーマン、ロンジェイコブズ、クリスKnight、レミMaucherat、ラリーMasinter、ジョー・オートン、ピーター・レイモンド、およびキースWannamakerによって提供された詳細なレビューとコメントに感謝しています。 私たちは主要な特性の検索部分の初期のテキストについてキースWannamakerに感謝します。 WebDAVアクセス制御プロトコルに対する先の仕事がヤロンGoland、ポール・リーチ、リサDusseault、ハワード・パーマー、およびジョンRadoffによって行われました。 WebDAVワーキンググループから私たちのためにこのプロトコルが層にされるDeltaV、WebDAV、およびHTTPプロトコルの作者によって築かれた基礎、および非常に貴重なフィードバックを承認したいと思います。

16.  References

16. 参照

16.1.  Normative References

16.1. 引用規格

   [REC-XML]         Bray, T., Paoli, J., Sperberg-McQueen, C. and E.
                     Maler, "Extensible Markup Language (XML) 1.0
                     ((Third ed)", W3C REC REC-xml-20040204, February
                     2004, <http://www.w3.org/TR/2004/REC-xml-20040204>.

[REC-XML] ロバの鳴き声とT.とパオリとJ.とSperberg-マックィーンとC.とE.Maler、「拡張マークアップ言語(XML)1.0(3番目の教育)」、W3C REC REC-xml-20040204(<http://www.w3.org/TR/2004/REC-xml-20040204 2004年2月の>)。

   [REC-XML-INFOSET] Cowan, J. and R. Tobin, "XML Information Set
                     (Second Edition)", W3C REC REC-xml-infoset-
                     20040204, February 2004,
                     <http://www.w3.org/TR/2004/REC-xml-infoset-
                     20040204/>.

[REC-XML-INFOSET] カウァンとJ.とR.トビン、「XML一組の情報(第2版)」、W3C REC REC-xml-infoset20040204、2004年2月、<http://www.w3.org/TR/2004/REC-xml-infoset20040204/>。

   [REC-XML-NAMES]   Bray, T., Hollander, D. and A. Layman, "Namespaces
                     in XML", W3C REC REC-xml-names-19990114, January
                     1999, <http://www.w3.org/TR/1999/REC-xml-names-
                     19990114>.

W3C REC REC-xmlが19990114を命名していた状態で、[REC-XML-名前]は、1999年1月にT.とオランダ人、D.とA.俗人、「XMLの名前空間」をいななかせて、<はhttp://www.w3.org/TR/1999/REC-xml名前-19990114>です。

   [RFC2119]         Bradner, S., "Key words for use in RFCs to Indicate
                     Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119] ブラドナー、S.、「Indicate Requirement LevelsへのRFCsにおける使用のためのキーワード」、BCP14、RFC2119、1997年3月。

Clemm, et al.               Standards Track                    [Page 62]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[62ページ]。

   [RFC2518]         Goland, Y., Whitehead, E., Faizi, A., Carter, S.
                     and D. Jensen, "HTTP Extensions for Distributed
                     Authoring -- WEBDAV", RFC 2518, February 1999.

[RFC2518] Goland、Y.、ホワイトヘッド、E.、Faizi、A.、カーター、S.、およびD.ジェンセン、「分配されたオーサリングのためのHTTP拡大--、WEBDAV、」、RFC2518(1999年2月)

   [RFC2616]         Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
                     Masinter, L., Leach, P. and T. Berners-Lee,
                     "Hypertext Transfer Protocol -- HTTP/1.1", RFC
                     2616, June 1999.

[RFC2616] フィールディング、R.、Gettys、J.、ムガール人、J.、Frystyk、H.、Masinter、L.、リーチ、P.、およびT.バーナーズ・リー、「HTTP/1.1インチ、RFC2616、1999年ハイパーテキスト転送プロトコル--6月」。

   [RFC2617]         Franks, J., Hallam-Baker, P., Hostetler, J.,
                     Lawrence, S., Leach, P., Luotonen, A. and L.
                     Stewart, "HTTP Authentication: Basic and Digest
                     Access Authentication", RFC 2617, June 1999.

[RFC2617] フランクス、J.、ハラム-ベイカー、P.、Hostetler、J.、ローレンス、S.、リーチ、P.、Luotonen、A.、およびL.スチュワート、「HTTP認証:」 「基本的、そして、ダイジェストアクセス認証」、RFC2617、1999年6月。

   [RFC3023]         Murata, M., St.Laurent, S. and D. Kohn, "XML Media
                     Types", RFC 3023, January 2001.

[RFC3023] ムラタとM.と聖ローランとS.とD.コーン、「XMLメディアタイプ」、RFC3023、2001年1月。

   [RFC3253]         Clemm, G., Amsden, J., Ellison, T., Kaler, C. and
                     J. Whitehead, "Versioning Extensions to WebDAV",
                     RFC 3253, March 2002.

[RFC3253] クレムとG.とAmsdenとJ.とエリソンとT.とKalerとC.とJ.ホワイトヘッド、「WebDAVへのVersioning拡張子」、RFC3253、2002年3月。

   [RFC3530]         Shepler, S., Ed., Callaghan, B., Robinson, D.,
                     Thurlow, R., Beame, C., Eisler, M. and D. Noveck,
                     "Network File System (NFS) version 4 Protocol", RFC
                     3530, April 2003.

[RFC3530]Shepler、S.(エド)、キャラハン、B.、ロビンソン、D.、サーロウ、R.、Beame(C.、アイスラー、M.、およびD.Noveck)は「File System(NFS)バージョン4プロトコルをネットワークでつなぎます」、RFC3530、2003年4月。

   [RFC3629]         Yergeau, F., "UTF-8, a transformation format of ISO
                     10646", STD 63, RFC 3629 November 2003.

[RFC3629] RFC3629 2003年11月のYergeau、F.、「UTF-8、ISO10646の変換形式」STD63。

16.2.  Informative References

16.2. 有益な参照

   [RFC2251]         Wahl, M., Howes, T. and S. Kille, "Lightweight
                     Directory Access Protocol (v3)", RFC 2251, December
                     1997.

[RFC2251]ウォールとM.とハウズとT.とS.Kille、「ライトウェイト・ディレクトリ・アクセス・プロトコル(v3)」、RFC2251 1997年12月。

   [RFC2255]         Howes, T. and M. Smith, "The LDAP URL Format", RFC
                     2255, December 1997.

[RFC2255] ハウズとT.とM.スミス、「LDAP URL形式」、RFC2255、1997年12月。

   [UNICODE4]        The Unicode Consortium, "The Unicode Standard -
                     Version 4.0", Addison-Wesley , August 2003,
                     <http://www.unicode.org/versions/Unicode4.0.0/>.
                     ISBN 0321185781.

[UNICODE4] ユニコード共同体であり、「ユニコード規格--バージョン4インチ、アディソン-ウエスリー、2003年8月、<は://www.unicode.org/バージョン/Unicode4.0.0/>ISBN0321185781をhttpします」。

Clemm, et al.               Standards Track                    [Page 63]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[63ページ]。

Appendix A. WebDAV XML Document Type Definition Addendum

付録A.WebDAV XMLドキュメント型定義付加物

   All XML elements defined in this Document Type Definition (DTD)
   belong to the DAV namespace. This DTD should be viewed as an addendum
   to the DTD provided in [RFC2518], section 23.1.

このDocument Type Definition(DTD)で定義されたすべてのXML要素がDAV名前空間に属します。 DTDへの付加物が[RFC2518]、セクション23.1に供給されたので、このDTDは見られるべきです。

   <!-- Privileges -- (Section 3)>

<(特権)!(セクション3)>。

   <!ELEMENT read EMPTY>
   <!ELEMENT write EMPTY>
   <!ELEMENT write-properties EMPTY>
   <!ELEMENT write-content EMPTY>
   <!ELEMENT unlock EMPTY>
   <!ELEMENT read-acl EMPTY>
   <!ELEMENT read-current-user-privilege-set EMPTY>
   <!ELEMENT write-acl EMPTY>
   <!ELEMENT bind EMPTY>
   <!ELEMENT unbind EMPTY>
   <!ELEMENT all EMPTY>

<!ELEMENTは><!ELEMENTがEMPTY><!ELEMENTを解くと特性を書いている内容を書いているEMPTYの<!ELEMENTアンロックEMPTY>><!ELEMENT EMPTY><!ELEMENT EMPTY><!現在のユーザ特権セットを読んでいるEMPTY><!ELEMENTが書くacl EMPTY><!ELEMENTを読んでいるacl EMPTYのELEMENTのELEMENTひものEMPTY><!><!ELEMENTに書くEMPTYにすべてのEMPTY>を読み込みます。

   <!-- Principal Properties (Section 4) -->

<!--主要な特性(セクション4)-->。

   <!ELEMENT principal EMPTY>

<!のELEMENTの主要なEMPTY>。

   <!ELEMENT alternate-URI-set (href*)>
   <!ELEMENT principal-URL (href)>
   <!ELEMENT group-member-set (href*)>
   <!ELEMENT group-membership (href*)>

<!のELEMENTの代替のURIセット(href*)の>の<!のELEMENTの主要なURL(href)><!ELEMENTグループメンバーセット(href*)><!ELEMENTグループ会員資格(href*)>。

   <!-- Access Control Properties (Section 5) -->

<!--アクセス制御の特性(セクション5)-->。

   <!-- DAV:owner Property (Section 5.1) -->

<!--DAV: 所有者の特性(セクション5.1)-->。

   <!ELEMENT owner (href?)>

<!ELEMENT所有者(href)?>。

   <!-- DAV:group Property (Section 5.2) -->

<!--DAV: グループ所有地(セクション5.2)-->。

   <!ELEMENT group (href?)>

ELEMENTが分類する<!(href)?>。

   <!-- DAV:supported-privilege-set Property (Section 5.3) -->

<!--DAV: サポートしている特権セット所有地(セクション5.3)-->。

   <!ELEMENT supported-privilege-set (supported-privilege*)>
   <!ELEMENT supported-privilege
    (privilege, abstract?, description, supported-privilege*)>

<!ELEMENTサポートしている特権セット(サポートしている特権*)><!ELEMENTのサポートしている特権(特権、要約?、記述、サポートしている特権*)>。

   <!ELEMENT privilege ANY>
   <!ELEMENT abstract EMPTY>
   <!ELEMENT description #PCDATA>

<!ELEMENT特権はあらゆる抽象的な>のEMPTY><!ELEMENT記述#PCDATA<!ELEMENT>です。

Clemm, et al.               Standards Track                    [Page 64]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[64ページ]。

   <!-- DAV:current-user-privilege-set Property (Section 5.4) -->

<!--DAV: 現在のユーザ特権セット所有地(セクション5.4)-->。

   <!ELEMENT current-user-privilege-set (privilege*)>

<!のELEMENTの現在のユーザ特権セット(特権*)>。

   <!-- DAV:acl Property (Section 5.5) -->

<!--DAV: aclの特性(セクション5.5)-->。

   <!ELEMENT acl (ace)* >
   <!ELEMENT ace ((principal | invert), (grant|deny), protected?,
    inherited?)>

ELEMENTが負かす<!ELEMENT acl(エース)*><!(主体|、逆にする、)、(|与えてください、否定、)、保護されて、引き継がれる、)>。

   <!ELEMENT principal (href)
    | all | authenticated | unauthenticated
    | property | self)>

<!ELEMENT主体(href)| すべて| 認証されます。| 非認証しました。| 特性| 自己)>。

   <!ELEMENT all EMPTY>
   <!ELEMENT authenticated EMPTY>
   <!ELEMENT unauthenticated EMPTY>
   <!ELEMENT property ANY>
   <!ELEMENT self EMPTY>

<!ELEMENT、すべてのEMPTY><!ELEMENTがEMPTY><!ELEMENT unauthenticated EMPTY><!ELEMENTの特性の>の<!のELEMENTの自己のEMPTYのいずれも>を認証しました。

   <!ELEMENT invert principal>

<!ELEMENTは主要な>を逆にします。

   <!ELEMENT grant (privilege+)>
   <!ELEMENT deny (privilege+)>
   <!ELEMENT privilege ANY>

ELEMENTが><!ELEMENT特権に対してどんな>も否定するのを(特権+)><!ELEMENTに与える(特権+)<!

   <!ELEMENT protected EMPTY>

<!ELEMENTはEMPTY>を保護しました。

   <!ELEMENT inherited (href)>

ELEMENTが引き継いだ<!(href)>。

   <!-- DAV:acl-restrictions Property (Section 5.6) -->

<!--DAV: acl-制限の特性(セクション5.6)-->。

   <!ELEMENT acl-restrictions (grant-only?, no-invert?,
    deny-before-grant?, required-principal?)>

<!ELEMENT acl-制限(交付金唯一か、逆にしないか、以前、交付金を否定していて必要な主体、)>。

   <!ELEMENT grant-only EMPTY>
   <!ELEMENT no-invert EMPTY>
   <!ELEMENT deny-before-grant EMPTY>

<!ELEMENT交付金だけEMPTY><!ELEMENTはELEMENTが交付金の前にEMPTY>を否定するEMPTY><!を逆にしません。

   <!ELEMENT required-principal
    (all? | authenticated? | unauthenticated? | self? | href*
    |property*)>

<!のELEMENTの必要な主体(すべて? | 認証されていますか? | 非認証されていますか? | 自己? | href*|特性*)>。

   <!-- DAV:inherited-acl-set Property (Section 5.7) -->

<!--DAV: 引き継いでいるaclセット所有地(セクション5.7)-->。

   <!ELEMENT inherited-acl-set (href*)>

<!のELEMENTの引き継いでいるaclセット(href*)>。

   <!-- DAV:principal-collection-set Property (Section 5.8) -->

<!--DAV: 主要な収集セット所有地(セクション5.8)-->。

Clemm, et al.               Standards Track                    [Page 65]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[65ページ]。

   <!ELEMENT principal-collection-set (href*)>

<!のELEMENTの主要な収集セット(href*)>。

   <!-- Access Control and Existing Methods (Section 7) -->

<!--アクセスコントロールと既存の方法(セクション7)-->。

   <!ELEMENT need-privileges (resource)* >
   <!ELEMENT resource ( href, privilege )

<!ELEMENT必要性特権(リソース)*><!ELEMENTリソース(href、特権)

   <!-- ACL method preconditions (Section 8.1.1) -->

<!--ACLメソッド前提条件(セクション8.1.1)-->。

   <!ELEMENT no-ace-conflict EMPTY>
   <!ELEMENT no-protected-ace-conflict EMPTY>
   <!ELEMENT no-inherited-ace-conflict EMPTY>
   <!ELEMENT limited-number-of-aces EMPTY>
   <!ELEMENT grant-only EMPTY>
   <!ELEMENT no-invert EMPTY>
   <!ELEMENT deny-before-grant EMPTY>
   <!ELEMENT no-abstract EMPTY>
   <!ELEMENT not-supported-privilege EMPTY>
   <!ELEMENT missing-required-principal EMPTY>
   <!ELEMENT recognized-principal EMPTY>
   <!ELEMENT allowed-principal EMPTY>

<!ELEMENTエース闘争がないEMPTY><!ELEMENT保護されたエース闘争がないEMPTY><!ELEMENT引き継いでいるエース闘争がないEMPTY><!ELEMENT限られた数のエースEMPTY><!ELEMENT交付金だけEMPTY><!ELEMENTはEMPTY>を逆にしません; ELEMENTが交付金の前にEMPTY><!ELEMENT要約がないEMPTY><!ELEMENTサポートしていない特権EMPTY><!ELEMENTなくなった必要な主体EMPTY><!ELEMENT認識された主体EMPTY><!ELEMENT許容主体EMPTY>を否定する<!

   <!-- REPORTs (Section 9) -->

<!--レポート(セクション9)-->。

   <!ELEMENT acl-principal-prop-set ANY>
   ANY value: a sequence of one or more elements, with at most one
   DAV:prop element.

ELEMENT aclの主要な支柱がセットしている<!いずれも>は少しも以下を評価します。 高々1DAVがある1つ以上の要素の系列: 要素を支えてください。

   <!ELEMENT principal-match ((principal-property | self), prop?)>
   <!ELEMENT principal-property ANY>
   ANY value: an element whose value identifies a property. The
   expectation is the value of the named property typically contains
   an href element that contains the URI of a principal
   <!ELEMENT self EMPTY>

<!ELEMENTは((主要な特性| 自己)、支柱?)に主体で合っています。>の<!のELEMENTの主要な特性のいずれも>は少しも以下を評価します。 値が特性を特定する要素。 期待は命名された属性の価値が主要な<!ELEMENT自己EMPTY>のURIを含むhref要素を通常含んでいるということです。

   <!ELEMENT principal-property-search ((property-search+), prop?) >
   <!ELEMENT property-search (prop, match) >
   <!ELEMENT match #PCDATA >

<!のELEMENTの主要な特性の検索((特性検索+)、支柱?) ><!ELEMENT特性検索(支柱、マッチ)><!ELEMENTは#PCDATA>に合っています。

   <!ELEMENT principal-search-property-set (
    principal-search-property*) >
   <!ELEMENT principal-search-property (prop, description) >
   <!ELEMENT description #PCDATA >

<!のELEMENTの主要な検索特性のセット(主要な検索特性*)の>の<!のELEMENTの主要な検索所有地(支柱、記述)><!ELEMENT記述#PCDATA>。

Clemm, et al.               Standards Track                    [Page 66]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[66ページ]。

Appendix B. WebDAV Method Privilege Table (Normative)

付録B.WebDAVメソッド特権テーブル(標準)です。

   The following table of WebDAV methods (as defined in RFC 2518, 2616,
   and 3253) clarifies which privileges are required for access for each
   method.  Note that the privileges listed, if denied, MUST cause
   access to be denied.  However, given that a specific implementation
   MAY define an additional custom privilege to control access to
   existing methods, having all of the indicated privileges does not
   mean that access will be granted.  Note that lack of the indicated
   privileges does not imply that access will be denied, since a
   particular implementation may use a sub-privilege aggregated under
   the indicated privilege to control access.  Privileges required refer
   to the current resource being processed unless otherwise specified.

WebDAVメソッド(RFC2518、2616年、および3253年に定義されるように)の以下のテーブルは、どの特権が各メソッドのためのアクセスに必要であるかをはっきりさせます。 否定されるなら記載された特権でアクセスを拒絶しなければならないことに注意してください。 しかしながら、特定の実装が既存の方法へのアクセスを制御するために追加カスタム特権を定義するかもしれないなら、示された特権のすべてを持っているのは、アクセスが承諾されることを意味しません。 示された特権の不足が、アクセスが拒絶されるのを含意しないことに注意してください、特定の実装がアクセサリーを制御するために示された特権の下で集められたサブ特権を使用するかもしれないので 必要である特権は別の方法で指定されない場合処理される現在のリソースを示します。

Clemm, et al.               Standards Track                    [Page 67]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス制御プロトコル2004年5月にRFC3744を追跡します[67ページ]。

   +---------------------------------+---------------------------------+
   | METHOD                          | PRIVILEGES                      |
   +---------------------------------+---------------------------------+
   | GET                             | <D:read>                        |
   | HEAD                            | <D:read>                        |
   | OPTIONS                         | <D:read>                        |
   | PUT (target exists)             | <D:write-content> on target     |
   |                                 | resource                        |
   | PUT (no target exists)          | <D:bind> on parent collection   |
   |                                 | of target                       |
   | PROPPATCH                       | <D:write-properties>            |
   | ACL                             | <D:write-acl>                   |
   | PROPFIND                        | <D:read> (plus <D:read-acl> and |
   |                                 | <D:read-current-user-privilege- |
   |                                 | set> as needed)                 |
   | COPY (target exists)            | <D:read>, <D:write-content> and |
   |                                 | <D:write-properties> on target  |
   |                                 | resource                        |
   | COPY (no target exists)         | <D:read>, <D:bind> on target    |
   |                                 | collection                      |
   | MOVE (no target exists)         | <D:unbind> on source collection |
   |                                 | and <D:bind> on target          |
   |                                 | collection                      |
   | MOVE (target exists)            | As above, plus <D:unbind> on    |
   |                                 | the target collection           |
   | DELETE                          | <D:unbind> on parent collection |
   | LOCK (target exists)            | <D:write-content>               |
   | LOCK (no target exists)         | <D:bind> on parent collection   |
   | MKCOL                           | <D:bind> on parent collection   |
   | UNLOCK                          | <D:unlock>                      |
   | CHECKOUT                        | <D:write-properties>            |
   | CHECKIN                         | <D:write-properties>            |
   | REPORT                          | <D:read> (on all referenced     |
   |                                 | resources)                      |
   | VERSION-CONTROL                 | <D:write-properties>            |
   | MERGE                           | <D:write-content>               |
   | MKWORKSPACE                     | <D:write-content> on parent     |
   |                                 | collection                      |
   | BASELINE-CONTROL                | <D:write-properties> and        |
   |                                 | <D:write-content>               |
   | MKACTIVITY                      | <D:write-content> on parent     |
   |                                 | collection                      |
   +---------------------------------+---------------------------------+

+---------------------------------+---------------------------------+ | 方法| 特権| +---------------------------------+---------------------------------+ | 得てください。| <D: >を読んでください。| | ヘッド| <D: >を読んでください。| | オプション| <D: >を読んでください。| | PUT(目標は存在しています)| <D: 目標の上の内容を書いている>。| | | リソース| | PUT(目標は全く存在していません)| <D: 親収集のときに>を縛ってください。| | | 目標について| | PROPPATCH| <D: 特性を書いている>。| | ACL| <D: aclに書いている>。| | PROPFIND| <D: >(プラス<D: | | | 読書aclな>と<D: 必要であるとしての読書現在のユーザ| | | セットに特権を与えさせている>)を読んでください。| | COPY(目標は存在しています)| そして<D: <D: >、内容を書いている>を読んでください。| | | <D: 目標の上の特性を書いている>。| | | リソース| | COPY(目標は全く存在していません)| <D: >、<Dを読んでください: 目標の上の>を縛ってください。| | | 収集| | MOVE(目標は全く存在していません)| <D: ソース収集のときに>を解いてください。| | | <D: そして、目標の上の>を縛ってください。| | | 収集| | MOVE(目標は存在しています)| プラス<D: 同じくらい上に、>を解いてください、オン| | | ターゲット収集| | 削除します。| <D: 親収集のときに>を解いてください。| | LOCK(目標は存在しています)| <D: 内容を書いている>。| | LOCK(目標は全く存在していません)| <D: 親収集のときに>を縛ってください。| | MKCOL| <D: 親収集のときに>を縛ってください。| | アンロック| <D: >をアンロックしてください。| | チェックアウト| <D: 特性を書いている>。| | チェックイン| <D: 特性を書いている>。| | レポート| <D: >(参照をつけられるすべて| | | リソースの)を読んでください。| | バージョンコントロール| <D: 特性を書いている>。| | マージ| <D: 内容を書いている>。| | MKWORKSPACE| <D: 親の上の内容を書いている>。| | | 収集| | 基線コントロール| そして<D: 特性を書いている>。| | | <D: 内容を書いている>。| | MKACTIVITY| <D: 親の上の内容を書いている>。| | | 収集| +---------------------------------+---------------------------------+

Clemm, et al.               Standards Track                    [Page 68]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス管理プロトコル2004年5月にRFC3744を追跡します[68ページ]。

Index

インデックス

   A
      ACL method  40

ACL方法40

   C
      Condition Names
         DAV:allowed-principal (pre)  42
         DAV:deny-before-grant (pre)  41
         DAV:grant-only (pre)  41
         DAV:limited-number-of-aces (pre)  41
         DAV:missing-required-principal (pre)  42
         DAV:no-abstract (pre)  41
         DAV:no-ace-conflict (pre)  41
         DAV:no-inherited-ace-conflict (pre)  41
         DAV:no-invert (pre)  41
         DAV:no-protected-ace-conflict (pre)  41
         DAV:not-supported-privilege (pre)  42
         DAV:number-of-matches-within-limits (post)  48, 53
         DAV:recognized-principal (pre)  42

C Condition Names DAV:allowed-principal (pre) 42 DAV:deny-before-grant (pre) 41 DAV:grant-only (pre) 41 DAV:limited-number-of-aces (pre) 41 DAV:missing-required-principal (pre) 42 DAV:no-abstract (pre) 41 DAV:no-ace-conflict (pre) 41 DAV:no-inherited-ace-conflict (pre) 41 DAV:no-invert (pre) 41 DAV:no-protected-ace-conflict (pre) 41 DAV:not-supported-privilege (pre) 42 DAV:number-of-matches-within-limits (post) 48, 53 DAV:recognized-principal (pre) 42

   D
      DAV header
         compliance class 'access-control'  38
      DAV:acl property  23
      DAV:acl-principal-prop-set report  48
      DAV:acl-restrictions property  27
      DAV:all privilege  13
      DAV:allowed-principal precondition  42
      DAV:alternate-URI-set property  14
      DAV:bind privilege  12
      DAV:current-user-privilege-set property  21
      DAV:deny-before-grant precondition  41
      DAV:grant-only precondition  41
      DAV:group property  18
      DAV:group-member-set property  14
      DAV:group-membership property  14
      DAV:inherited-acl-set property  29
      DAV:limited-number-of-aces precondition  41
      DAV:missing-required-principal precondition  42
      DAV:no-abstract precondition  41
      DAV:no-ace-conflict precondition  41
      DAV:no-inherited-ace-conflict precondition  41
      DAV:no-invert precondition  41
      DAV:no-protected-ace-conflict precondition  41
      DAV:not-supported-privilege precondition  42
      DAV:number-of-matches-within-limits postcondition  48, 53
      DAV:owner property  15

23DAV: aclの主要な支柱セットは48DAV: acl-制限の特性を報告します。14DAV: ひもは12DAV: 現在のユーザ特権セット資産に特権を与えさせます。D DAVヘッダー承諾クラス'アクセス管理'38DAV: aclの特性、27DAV: すべてが13DAVに特権を与えさせます: 許容校長は42DAVをあらかじめ調整します:、交互のURIセット所有地、21DAV: 交付金の前に41DAVをあらかじめ調整してください: 交付金だけが41DAVをあらかじめ調整することを否定してください:、特性を分類してください、18DAV: グループメンバーセット所有地、14DAV: グループ会員資格の特性、14DAV:; 29DAV: 限られた数のエースが41DAVをあらかじめ調整します: 必要な校長がいなくて寂しくて、42DAVをあらかじめ調整してください: どんな要約も41DAVをあらかじめ調整しません: どんなエース闘争も41DAVをあらかじめ調整しません: どんな引き継いでいるエース闘争も41DAVをあらかじめ調整しません: 41DAV: どんな保護されたエース闘争もあらかじめ調整しない前提条件を逆にしないでください。引き継いでいるaclセット所有地、41DAV: 支持されなかった特権は42DAV: 限界の中のマッチの数のpostcondition48、53DAVをあらかじめ調整します:、所有者特性15

Clemm, et al.               Standards Track                    [Page 69]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス管理プロトコル2004年5月にRFC3744を追跡します[69ページ]。

      DAV:principal resource type  13
      DAV:principal-collection-set property  30
      DAV:principal-match report  50
      DAV:principal-property-search  51
      DAV:principal-search-property-set  56
      DAV:principal-URL property  14
      DAV:read privilege  10
      DAV:read-acl privilege  11
      DAV:read-current-user-privilege-set privilege  12
      DAV:recognized-principal precondition  42
      DAV:supported-privilege-set property  18
      DAV:unbind privilege  12
      DAV:unlock privilege  11
      DAV:write privilege  10
      DAV:write-acl privilege  12
      DAV:write-content privilege  10
      DAV:write-properties privilege  10

DAV: 10DAV: 主要なリソースタイプ13DAV: 主要な収集セット所有地30DAV: 主要なマッチレポート50DAV: 主要な特性の検索51DAV: 主要な検索特性のセット56DAV: 主要なURLの特性の14DAV: 読書特権読書-aclは11DAVに特権を与えさせます:; 現在のユーザ特権セットに読み込まれて、12DAVに特権を与えさせてください: 認識された校長が42DAV: 支持された特権セット所有地をあらかじめ調整する、18DAV:、解く、12DAVに特権を与えさせてください: アンロックは11DAVに特権を与えさせます: 10DAVを特権があることのように書いてください: -aclに12DAV: 内容を書いている特権を特権があることのように書いてください、10DAV: 特性を書いている特権10

   M
      Methods
         ACL  40

M方法ACL40

   P
      Privileges
         DAV:all  13
         DAV:bind  12
         DAV:read  10
         DAV:read-acl  11
         DAV:read-current-user-privilege-set  12
         DAV:unbind  12
         DAV:unlock  11
         DAV:write  10
         DAV:write-acl  12
         DAV:write-content  11
         DAV:write-properties  10
      Properties
         DAV:acl  23
         DAV:acl-restrictions  27
         DAV:alternate-URI-set  14
         DAV:current-user-privilege-set  21
         DAV:group  18
         DAV:group-member-set  14
         DAV:group-membership  14
         DAV:inherited-acl-set  29
         DAV:owner  15
         DAV:principal-collection-set  30
         DAV:principal-URL  14
         DAV:supported-privilege-set  18

P Privileges DAV:all 13 DAV:bind 12 DAV:read 10 DAV:read-acl 11 DAV:read-current-user-privilege-set 12 DAV:unbind 12 DAV:unlock 11 DAV:write 10 DAV:write-acl 12 DAV:write-content 11 DAV:write-properties 10 Properties DAV:acl 23 DAV:acl-restrictions 27 DAV:alternate-URI-set 14 DAV:current-user-privilege-set 21 DAV:group 18 DAV:group-member-set 14 DAV:group-membership 14 DAV:inherited-acl-set 29 DAV:owner 15 DAV:principal-collection-set 30 DAV:principal-URL 14 DAV:supported-privilege-set 18

Clemm, et al.               Standards Track                    [Page 70]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス管理プロトコル2004年5月にRFC3744を追跡します[70ページ]。

   R
      Reports
         DAV:acl-principal-prop-set  47
         DAV:principal-match  49
         DAV:principal-property-search  51
         DAV:principal-search-property-set  56
      Resource Types
         DAV:principal  13

RレポートDAV: aclの主要な支柱セット47DAV: 主要なマッチ49DAV: 主要な特性の検索51DAV: 主要な検索特性のセット56リソースはDAV: 主要な13をタイプします。

Authors' Addresses

作者のアドレス

   Geoffrey Clemm
   IBM
   20 Maguire Road
   Lexington, MA  02421

ジェフリークレムIBM20マグワイア・Roadレキシントン、MA 02421

   EMail: geoffrey.clemm@us.ibm.com

メール: geoffrey.clemm@us.ibm.com

   Julian F. Reschke
   greenbytes GmbH
   Salzmannstrasse 152
   Muenster, NW  48159
   Germany

ジュリアンF.Reschke greenbytes GmbH Salzmannstrasse152Muenster、NW48159ドイツ

   EMail: julian.reschke@greenbytes.de

メール: julian.reschke@greenbytes.de

   Eric Sedlar
   Oracle Corporation
   500 Oracle Parkway
   Redwood Shores, CA  94065

エリックSedlarオラクル株式会社500オラクル公園道路アカスギ岸、カリフォルニア 94065

   EMail: eric.sedlar@oracle.com

メール: eric.sedlar@oracle.com

   Jim Whitehead
   U.C. Santa Cruz, Dept. of Computer Science
   1156 High Street
   Santa Cruz, CA  95064

ジム・ホワイトヘッド・U.C.サンタクルス、サンタクルス、コンピュータサイエンス1156本通りカリフォルニア 95064人の部

   EMail: ejw@cse.ucsc.edu

メール: ejw@cse.ucsc.edu

Clemm, et al.               Standards Track                    [Page 71]

RFC 3744             WebDAV Access Control Protocol             May 2004

クレム、他 規格はWebDAVアクセス管理プロトコル2004年5月にRFC3744を追跡します[71ページ]。

Full Copyright Statement

完全な著作権宣言文

   Copyright (C) The Internet Society (2004).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.

Copyright(C)インターネット協会(2004)。 このドキュメントはBCP78に含まれた権利、ライセンス、および制限を受けることがあります、そして、そこに詳しく説明されるのを除いて、作者は彼らのすべての権利を保有します。

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
   REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
   INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
   IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

このドキュメントと「そのままで」という基礎と貢献者、その人が代表する組織で提供するか、または後援されて、インターネット協会とインターネット・エンジニアリング・タスク・フォースはすべての保証を放棄します、と急行ORが含意したということであり、他を含んでいて、ここに含まれて、情報の使用がここに侵害しないどんな保証も少しもまっすぐになるという情報か市場性か特定目的への適合性のどんな黙示的な保証。

Intellectual Property

知的所有権

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed
   to pertain to the implementation or use of the technology
   described in this document or the extent to which any license
   under such rights might or might not be available; nor does it
   represent that it has made any independent effort to identify any
   such rights.  Information on the procedures with respect to
   rights in RFC documents can be found in BCP 78 and BCP 79.

IETFはどんなIntellectual Property Rightsの正当性か範囲、実現に関係すると主張されるかもしれない他の権利、本書では説明された技術の使用またはそのような権利の下におけるどんなライセンスも利用可能であるかもしれない、または利用可能でないかもしれない範囲に関しても立場を全く取りません。 または、それはそれを表しません。どんなそのような権利も特定するためのどんな独立している努力もしました。 BCP78とBCP79でRFCドキュメントの権利に関する手順に関する情報を見つけることができます。

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use
   of such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository
   at http://www.ietf.org/ipr.

IPR公開のコピーが利用可能に作られるべきライセンスの保証、または一般的な免許を取得するのが作られた試みの結果をIETF事務局といずれにもしたか、または http://www.ietf.org/ipr のIETFのオンラインIPR倉庫からこの仕様のimplementersかユーザによるそのような所有権の使用のために許可を得ることができます。

   The IETF invites any interested party to bring to its attention
   any copyrights, patents or patent applications, or other
   proprietary rights that may cover technology that may be required
   to implement this standard.  Please address the information to the
   IETF at ietf-ipr@ietf.org.

IETFはこの規格を実行するのに必要であるかもしれない技術をカバーするかもしれないどんな著作権もその注目していただくどんな利害関係者、特許、特許出願、または他の所有権も招待します。 ietf-ipr@ietf.org のIETFに情報を記述してください。

Acknowledgement

承認

   Funding for the RFC Editor function is currently provided by the
   Internet Society.

RFC Editor機能のための基金は現在、インターネット協会によって提供されます。

Clemm, et al.               Standards Track                    [Page 72]

クレム、他 標準化過程[72ページ]

一覧

 RFC 1〜100  RFC 1401〜1500  RFC 2801〜2900  RFC 4201〜4300 
 RFC 101〜200  RFC 1501〜1600  RFC 2901〜3000  RFC 4301〜4400 
 RFC 201〜300  RFC 1601〜1700  RFC 3001〜3100  RFC 4401〜4500 
 RFC 301〜400  RFC 1701〜1800  RFC 3101〜3200  RFC 4501〜4600 
 RFC 401〜500  RFC 1801〜1900  RFC 3201〜3300  RFC 4601〜4700 
 RFC 501〜600  RFC 1901〜2000  RFC 3301〜3400  RFC 4701〜4800 
 RFC 601〜700  RFC 2001〜2100  RFC 3401〜3500  RFC 4801〜4900 
 RFC 701〜800  RFC 2101〜2200  RFC 3501〜3600  RFC 4901〜5000 
 RFC 801〜900  RFC 2201〜2300  RFC 3601〜3700  RFC 5001〜5100 
 RFC 901〜1000  RFC 2301〜2400  RFC 3701〜3800  RFC 5101〜5200 
 RFC 1001〜1100  RFC 2401〜2500  RFC 3801〜3900  RFC 5201〜5300 
 RFC 1101〜1200  RFC 2501〜2600  RFC 3901〜4000  RFC 5301〜5400 
 RFC 1201〜1300  RFC 2601〜2700  RFC 4001〜4100  RFC 5401〜5500 
 RFC 1301〜1400  RFC 2701〜2800  RFC 4101〜4200 

スポンサーリンク

各ストレージの速度一覧 規格速度や実効速度(HDD/SSD/M2/NVMe/USBメモリ)

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る