You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content.mkd
+18-33Lines changed: 18 additions & 33 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,7 +60,7 @@ Rewrite proxy
60
60
When however the server and clients are not in control of the same entity (like it's typically the case in WebDAV context), client and server can't share the same private key to authenticate against the push service. In that case, the client vendor may need to operate a rewrite proxy that receives each push message from the WebDAV-Push server, signs it with the same private key as the client and forwards it to the push service.
61
61
62
62
Web Push
63
-
: "Protocol for the delivery of real-time events to user agents", defined by {{RFC8030}}. Usually implemented in browsers (which means that major browser vendors provide their own push services), but there are also other implementations like {{UnifiedPush}}. Some parts of {{RFC8030}} (namely chapter 6 and HTTP/2 delivery between push service and client) specify implementation details that may be done by other means without changing the meaning of the RFC for WebDAV-Push servers and clients.
63
+
: "Protocol for the delivery of real-time events to user agents", defined by {{RFC8030}}. Usually implemented in browsers (which means that major browser vendors provide their own push services), but there are also other implementations like {{UnifiedPush}}. Some parts of {{RFC8030}} (namely how Push clients receive the push messages and HTTP/2 delivery between push service and client) specify implementation details that may be done by other means without changing the meaning of the RFC for WebDAV-Push servers and clients.
64
64
65
65
There are also additional standards that can be considered to belong to Web Push, especially VAPID ({{RFC8292}}) and Message Encryption ({{RFC8291}}).
66
66
@@ -133,10 +133,7 @@ To provide information about WebDAV-Push support, new collection properties are
133
133
134
134
The `transports` element contains push transports are supported by the server (one child element per transport). Within the scope of this document, the only supported transport is `web-push` (see {{transport-web-push}}).
135
135
136
-
The `topic` is a globally unique identifier for the collection. A specific collection could be reachable at different URLs, but it can only have one push topic. Because push services may be able to see push messages in clear text, the topic SHOULD NOT allow to draw conclusions about the synchronized collection. For instance, a server could use:
137
-
138
-
- a random UUID for each collection; or
139
-
- a salted hash (server-specific salt) of the canonical collection URL, encoded with base64.
136
+
The `topic` is a globally unique identifier for the collection. A specific collection could be reachable at different URLs, but it can only have one push topic. A server could for instance use a server-internal ID that is not going to change or a random UUID per collection.
140
137
141
138
[^todo] The `supported-triggers` element contains supported trigger methods (see {{content-updates}} and {{property-updates}}). Do we even need it? Is it optional? Default value? Specify all depths, max depths?
142
139
@@ -177,7 +174,7 @@ The `push-register` element contains:
177
174
178
175
* exactly one `subscription` element, which contains all information the server needs to send a push message,
179
176
* an optional `trigger` element to specify the types of events the client wants to be notified about, and
180
-
* an optional `expires` element that contains the requested expiration time in the `IMF-fixdate` format (as defined in {{RFC9110}}).
177
+
* an optional `expires` element that contains the requested expiration time in the `IMF-fixdate` format (as defined in {{Section 5.6.7 of RFC9110}}).
181
178
182
179
The `subscription` element specifies a subscription that shall be notified on updates and contains exactly one element with details about a specific subscription type. Within the scope of this document, only the `web-push-subscription` child element is defined (see {{transport-web-push}}).
183
180
@@ -206,23 +203,23 @@ If the `trigger` element is missing or empty, the following default will be assu
206
203
207
204
### Content Updates {#content-updates}
208
205
209
-
A _content update_ occurs when a member is changed or removed, as defined in {{RFC6578}} _3.5 Types of Changes Reported on Subsequent Synchronizations_ (typically when a member is added or removed or its contents are modified). If the server supports {{RFC6578}}, a content update implies that the `{DAV:}sync-token` changes.
206
+
A _content update_ occurs when a member is changed or removed, as defined in {{Section 3.5 of RFC6578}} (typically when a member is added or removed or its contents are modified). If the server supports {{RFC6578}}, a content update implies that the `{DAV:}sync-token` changes.
210
207
211
208
The `content` element can contain an optional `{DAV:}sync-level` element (default value when missing: `1`) that specifies whether the client is interested only in changes of internal members or of all members.
212
209
213
-
A server MUST support a `{DAV:}sync-level` of `1` and MAY support `infinite`. In case of `infinite`, the limitations described in {{RFC6578}} _3.3 Depth Behavior_ apply: notifications about changes in members which are not supported by the `DAV:sync-collection` report may not be sent. [^todo] XML error when not supported
210
+
A server MUST support a `{DAV:}sync-level` of `1` and MAY support `infinite`. In case of `infinite`, the limitations described in {{Section 3.3 of RFC6578}} apply: notifications about changes in members which are not supported by the `DAV:sync-collection` report may not be sent. [^todo] XML error when not supported
214
211
215
212
### Property Updates {#property-updates}
216
213
217
214
A _property update_ occurs when the WebDAV properties of the collection or its members are modified. Notifications about properties update are controlled by two elements within `properties`:
218
215
219
-
1. The optional `{DAV:}depth` element (as defined in {{RFC4918}}, value if missing: `0`) specifies the depth:
216
+
1. The optional `{DAV:}depth` element (as defined in {{Section 10.2 of RFC4918}}, value if missing: `0`) specifies the depth:
220
217
221
218
* A depth of `0` means that the client is only interested in property updates of the subscribed collection itself.
222
219
* A depth of `1` means that the client is interested in property updates of the subscribed collection and its internal members.
223
220
* A depth of `infinite` means that the client is interested in property updates of the subscribed collection and all its members.
224
221
225
-
A server MUST support a `depth` of 0 and MAY support `1` and `infinite`. In case of `infinite`, the limitations described in {{RFC6578}} _3.3 Depth Behavior_ apply: notifications about changes in members which are not supported by the `DAV:sync-collection` report may not be sent. [^todo] XML error when not supported.
222
+
A server MUST support a `depth` of 0 and MAY support `1` and `infinite`. In case of `infinite`, the limitations described in {{Section 3.3 of RFC6578}} apply: notifications about changes in members which are not supported by the `DAV:sync-collection` report may not be sent. [^todo] XML error when not supported.
226
223
227
224
2. The optional `{DAV:}prop` element (as it may be used in a `PROPFIND` request) specified a list of properties that the client is interested in. The list of properties MUST NOT contain properties that represent a content update, especially `{DAV:}getetag`, `{DAV:}getlastmodified` and `{DAV:}sync-token`. If the `{DAV:}prop` element is not present or empty, the server chooses the properties that it considers to be useful for the client. [^todo] XML error when not supported.
228
225
@@ -236,7 +233,7 @@ Allowed response codes:
236
233
237
234
When a subscription is registered the first time, the server creates a URL that identifies that registration (registration URL) which can be used to remove the subscription. The server MUST send the registration URL in the `Location` header.
238
235
239
-
The server MUST return a HTTP `Expires` header (as defined in {{RFC9111}}) in the `IMF-fixdate` format with the actual expiration date on the server, which may be shorter than the expiration requested by the client.
236
+
The server MUST return a HTTP `Expires` header (as defined in {{Section 5.3 of RFC9111}}) in the `IMF-fixdate` format with the actual expiration date on the server, which may be shorter than the expiration requested by the client.
240
237
241
238
Example:
242
239
@@ -317,7 +314,7 @@ A WebDAV-Push server MUST notify registered subscriptions of a subscribed collec
317
314
318
315
The push message body consists of a `push-message` element, which contains information about the affected collection:
319
316
320
-
- a `topic` element with the collection topic,
317
+
- a `topic` element with the push topic,
321
318
- a `content-update` element in case of a content update, and/or
322
319
- a `property-update` element in case of a property update.
323
320
@@ -361,39 +358,27 @@ A server MAY use some logic like remembering the last successful delivery plus s
361
358
362
359
# Security Considerations
363
360
364
-
See RFC 3552.
365
-
366
-
Which information is shared with which party, especially public ones like the push transport?
367
-
Implications? Involved parties:
361
+
The general requirements from {{Section 8 of RFC8030}} apply regardless of which transport is used. Especially:
368
362
369
-
* WebDAV server
370
-
* WebDAV client
371
-
* push transports / push service
363
+
- HTTP over TLS MUST be used for all communications, and
364
+
- mechanisms that provide end-to-end confidentiality, integrity and data origin authentication MUST be used.
372
365
373
-
Without message encryption, push transports can collect some data:
366
+
Push services could relate clients over metadata and heuristics. For instance, clients which are at the same time notified by a specific WebDAV-Push server have probably subscribed the same collection.
374
367
375
-
* which WebDAV server notifies which clients,
376
-
* which clients are subscribed to the same collection (because they receive the same topic in the
377
-
push message),
378
-
* at which times the collection is changed,
379
-
* other metadata (IP addresses etc.)
368
+
[^todo] See RFC 3552 and RFC 6973.
380
369
381
-
With message encryption, every push message is different and push transports can only relate clients over
382
-
metadata and heuristics, like the clients that are notified at the same time have probably subscribed the same
383
-
collection.
370
+
[^todo]`Topic` header, don't use insecure hashes
384
371
385
372
[^todo] How sensitive are the data, how to minimize risks
386
373
387
374
[^todo] What happens when information leaks
388
375
389
376
[^todo] What happens when some component is hacked
390
377
391
-
[^todo] Topic header, don't use insecure hashes
392
-
393
378
394
379
# Web Push Transport {#transport-web-push}
395
380
396
-
WebDAV-Push can be used with Web Push {{RFC8030}} as a transport to deliver WebDAV-Push notifications directly to compliant user agents, like Web browsers which come with their own push service infrastructure. Currently (2024), all major browsers support Web Push.
381
+
WebDAV-Push can be used with Web Push {{RFC8030}} as a transport to deliver WebDAV-Push notifications directly to compliant user agents, like Web browsers which come with their own push service infrastructure.
397
382
398
383
When the Web Push transport is used for WebDAV-Push,
399
384
@@ -407,9 +392,9 @@ Corresponding terminology:
407
392
* (WebDAV-Push) push server ↔ (Web Push) application server
Usage of message encryption {{RFC8291}} and VAPID {{RFC8292}} is RECOMMENDED. If future protocol extensions become used by push services, WebDAV-Push servers should implement them as well, if applicable.
395
+
Message encryption {{RFC8291}} and VAPID {{RFC8292}} MUST be used. (If other methods to provide a security context for Web Push become established, those ones shall be used and add required WebDAV properties should be added to this document. If future protocol extensions become available used by push services, WebDAV-Push servers should implement them as well, if applicable.)
411
396
412
-
Support for the Web Push transport is indicated by the `web-push` element in the `transports` collection property.
397
+
A server that supports the Web Push transport MUST list the `web-push` element in the `transports` property.
0 commit comments