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.md
+43-25Lines changed: 43 additions & 25 deletions
Original file line number
Diff line number
Diff line change
@@ -28,39 +28,57 @@ Typical use cases:
28
28
29
29
## Terminology
30
30
31
-
_(Push) backend:_ Part of a WebDAV-Push server that interacts with a specific push transport. In context of this document, there's only one backend for Web Push.
31
+
If parts of a term are in brackets, it means that those parts may or may not be written together with the other parts. However it means the same in any case.
32
32
33
-
_Push notification:_ push message or delivery of a push message
33
+
(Push) backend
34
+
: Part of a WebDAV-Push server that interacts with a specific push transport. In context of this document, there's only one backend for Web Push.
34
35
35
-
_Push message:_ Actual network message that is sent from the WebDAV-Push server over a push service to the WebDAV-Push client. Notifies the client that a specific collection (identified by its push topic) has changed.
36
+
Push notification
37
+
: push message or delivery of a push message
36
38
37
-
In Web Push context, a server can send a push message (more exact, "request delivery of a push message") by `POST`ing the message to the client's subscription URL.
39
+
Push message
40
+
: Actual network message that is sent from the WebDAV-Push server over a push service to the WebDAV-Push client. Notifies the client that a specific collection (identified by its push topic) has changed.
41
+
42
+
In Web Push context, a server can send a push message (more exact, "request delivery of a push message") by `POST`ing the message to the client's subscription URL.
38
43
39
-
_Push service:_ Infrastructure that implements a specific push transport. The push service is the actual network service between WebDAV-Push server and WebDAV-Push client. For instance, if the push transport is Web Push and the client is a Web app, the push service would be provided by the vendor of the browser that the client runs in.
44
+
Push service
45
+
: Infrastructure that implements a specific push transport. The push service is the actual network service between WebDAV-Push server and WebDAV-Push client.
46
+
47
+
For instance, if the push transport is Web Push and the client is a Web app, the push service would be provided by the vendor of the browser that the client runs in.
40
48
41
-
_(Push) subscription (URL)_: The information that the client needs to provide to the server so that the server can send push notifications.
49
+
(Push) subscription (URL)
50
+
: The information that the client needs to provide to the server so that the server can send push notifications.
51
+
52
+
If the transport is Web Push, the term _(push) subscription (URL)_ as used in this document is equivalent to the Web Push term _push resource_. So for instance, a client could have connected to its Web Push service and receive `https://push.example.net/push/JzLQ3raZJfFBR0aqvOMsLrt54w4rJUsV` as the subscription URL.
42
53
43
-
If the transport is Web Push, the term _(push) subscription (URL)_ as used in this document is equivalent to the Web Push term _push resource_. So for instance, a client could have connected to its Web Push service and receive `https://push.example.net/push/JzLQ3raZJfFBR0aqvOMsLrt54w4rJUsV` as the subscription URL.
54
+
(Push) topic
55
+
: Character sequence that identifies a WebDAV collection for push purposes (unique per WebDAV server). A specific collection could be reachable at different URLs, but it can only have one push topic.
44
56
45
-
_(Push) topic:_ Character sequence that identifies a WebDAV collection for push purposes (unique per WebDAV server). A specific collection could be reachable at different URLs, but it can only have one push topic.
57
+
(Push) transport
58
+
: Protocol that defines an actual push mechanism. In this document, Web Push is the only defined push transport. However, WebDAV-Push may also be used with other push transports like proprietary or yet unknown protocols. In that case, it has to be specified how to use that protocol with WebDAV-Push (like it's done for Web Push in Appendix A). A push transport implementation may or may not involve a push service.
46
59
47
-
_(Push) transport:_ Protocol that defines an actual push mechanism. In this document, Web Push is the only defined push transport. However, WebDAV-Push may also be used with other push transports like proprietary or yet unknown protocols. In that case, it has to be specified how to use that protocol with WebDAV-Push (like it's done for Web Push in Appendix A). A push transport implementation may or may not involve a push service.
60
+
Rewrite proxy
61
+
: Push services sometimes require authentication from their users and consider their user to be an application vendor who has control over both the server and the client. For instance, a push service could be used by the vendor of a weather app who controls both the servers that deliver weather data and the clients, which are mobile apps that show the weather data. Both servers and clients can authenticate against the push service with the same private key.
62
+
63
+
When however the server and clients are not in control of the same entity, like when the server is a WebDAV-Push server and the client is a mobile app that is not related to the server vendor, client and server can't have 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 delivery request from a server, sign it with the same private key as the client and forwards it to the push service.
48
64
49
-
_Rewrite proxy:_ Push services sometimes require authentication from their users and consider their user to be an application vendor who has control over both the server and the client. For instance, a push service could be used by the vendor of a weather app who controls both the servers that deliver weather data and the clients, which are mobile apps that show the weather data. Both servers and clients can authenticate against the push service with the same private key.
65
+
{{UnifiedPush}}
66
+
: Implementation of Web Push that is not bound to browsers or infrastructure of browser vendors. Can be used by desktop and mobile applications and with various custom (also self-hosted) push services.
50
67
51
-
When however the server and clients are not in control of the same entity, like when the server is a WebDAV-Push server and the client is a mobile app that is not related to the server vendor, client and server can't have 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 delivery request from a server, sign it with the same private key as the client and forwards it to the push service.
68
+
(W3C) Push API
69
+
: API for Web applications to use push notifications over Web Push
52
70
53
-
_UnifiedPush:_ Implementation of Web Push that is not bound to browsers or infrastructure of browser vendors. Can be used by desktop and mobile applications and with various custom (also self-hosted) push services.
71
+
Web Push
72
+
: "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 RFC 8030 (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. There are also additional standards that can be considered to belong to Web Push (like VAPID, RFC 8292 and Message Encryption, RFC 8291).
54
73
55
-
_W3C Push API:_ API for Web applications to use push notifications over Web Push
74
+
WebDAV-Push
75
+
: WebDAV-based protocol to notify clients about updates in collections using a push transport (vs. polling)
56
76
57
-
_Web Push:_ "protocol for the delivery of real-time events to user agents", defined by RFC 8030. 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 RFC 8030 (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. There are also additional standards that can be considered to belong to Web Push (like VAPID, RFC 8292 and Message Encryption, RFC 8291).
77
+
(WebDAV-Push) client
78
+
: WebDAV client that supports WebDAV-Push, for instance a CalDAV/CardDAV app on a mobile device
58
79
59
-
_WebDAV-Push:_ WebDAV-based protocol to notify clients about updates in collections using a push transport (vs. polling)
60
-
61
-
_(WebDAV-Push) client:_ WebDAV client that supports WebDAV-Push, for instance a CalDAV/CardDAV app on a mobile device
62
-
63
-
_(WebDAV-Push) server:_ WebDAV server (for instance a CalDAV/CardDAV server) that implements WebDAV-Push
80
+
(WebDAV-Push) server
81
+
: WebDAV server (for instance a CalDAV/CardDAV server) that implements WebDAV-Push
64
82
65
83
66
84
## WebDAV server with support for WebDAV-Push
@@ -230,7 +248,7 @@ Sample request for Web Push:
230
248
POST https://example.com/webdav/collection/
231
249
Content-Type: application/xml; charset="utf-8"
232
250
233
-
\<?xml version="1.0" encoding="utf-8" ?\>
251
+
<?xml version="1.0" encoding="utf-8" ?>
234
252
<push-register xmlns="DAV:Push">
235
253
<subscription>
236
254
<web-push-subscription>
@@ -339,7 +357,7 @@ The push message body contains the topic of the changed collection.
339
357
Sample push message body:
340
358
341
359
~~~
342
-
\<?xml version="1.0" encoding="utf-8" ?\>
360
+
<?xml version="1.0" encoding="utf-8" ?>
343
361
<push-message xmlns="DAV:Push">
344
362
<topic>O7M1nQ7cKkKTKsoS_j6Z3w</topic>
345
363
</push-message>
@@ -356,7 +374,7 @@ Shall multiple enqueued (and not yet delivered) push messages for the same colle
356
374
single one (like _Replacing push messages_ with the `Topic` header in RFC 8030)? Maybe use a
357
375
timestamp? Shall this be specified in general, per transport or not at all?
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
443
+
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
426
444
applicable.
427
445
428
446
A WebDAV-Push server should use the collection topic as `Topic` header in push messages to replace previous notifications for the same collection.
429
447
430
-
> **NOTE**: [UnifiedPush](https://unifiedpush.org/) (UP) is a specification which is intentionally designed as a 100% compatible subset of Web Push, together with a software that can be used to implement these documents. From a WebDAV-Push server perspective, UP endpoints can be seen as Web Push resources.
448
+
> [Non-normative, should probably be removed]**NOTE**: {{UnifiedPush}} (UP) is a specification which is intentionally designed as a 100% compatible subset of Web Push, together with a software that can be used to implement these documents. From a WebDAV-Push server perspective, UP endpoints can be seen as Web Push resources.
The push message is delivered via `POST` to the push resource, with `Content-Type: application/xml; charset="UTF-8"`.
472
490
473
-
The push topic SHOULD be used to generate the `Topic` header. Since RFC 8030 limits the `Topic` header to 32 characters from the URL and filename-safe Base64 alphabet, it's _recommended_ to use a hash of the push topic that meets these requirements as the header value.
491
+
The push topic SHOULD be used to generate the `Topic` header. Since RFC 8030 limits the `Topic` header to 32 characters from the URL and filename-safe Base64 alphabet, it's RECOMMENDED to use a hash of the push topic that meets these requirements as the header value.
474
492
475
493
The exact algorithm to derive the `Topic` header from the push topic can be chosen by the server.
0 commit comments