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: README.md
+11
Original file line number
Diff line number
Diff line change
@@ -75,3 +75,14 @@ The repository contains:
75
75
-**a specification draft describing our current idea of WebDAV-Push** (see above)
76
76
- discussion and exchange about the WebDAV Push topic (in [Discussions](https://github.com/bitfireAT/webdav-push/discussions))
77
77
- specific tasks (in [Issues](https://github.com/bitfireAT/webdav-push/issues)) and related patches (in [Pull requests](https://github.com/bitfireAT/webdav-push/pulls))
78
+
79
+
80
+
## Additional content / FAQ
81
+
82
+
There are some additional explanations that are non-normative and thus not found in the specification draft.
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 information that the client needs to provide to the server so that the server can send push notifications.
54
54
55
-
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.
55
+
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.
56
56
57
57
(Push) topic
58
58
: 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.
@@ -223,7 +223,7 @@ How to subscribe to collections on the WebDAV server. Required information:
223
223
- Expiration? how long by default, min/max (24 h), server decides (and can impose limits)
224
224
- (End-to-end-encryption? Or should it be defined per transport?)
225
225
226
-
> **TODO:** By now, only updates in direct members (equals `Depth: 1`) are sent. Maybe it could be specified that servers can send one notification per path segment? Implications?
226
+
[^todo] By now, only updates in direct members (equals `Depth: 1`) are sent. Maybe it could be specified that servers can send one notification per path segment? Implications?
227
227
228
228
To subscribe to a collection, the client sends a POST request with
229
229
`Content-Type: application/xml` to the collection it wants to subscribe. The root XML element of the XML body is `push-register` in the WebDAV-Push name space (`DAV:Push`) and can be used to distinguish between a WebDAV-Push and other requests.
@@ -236,7 +236,7 @@ Allowed response codes:
236
236
* 204 if the subscription was registered
237
237
* other response code with usual HTTP/WebDAV semantics (if possible, with `DAV:error` XML body)
238
238
239
-
> **TODO**: Always return expiration
239
+
[^todo] Always return expiration
240
240
241
241
In any case, when a subscription is registered the first time, the server creates a URL that identifies that registration (_registration URL_). That URL is sent in the `Location` header and can be used to remove the subscription.
242
242
@@ -389,7 +389,7 @@ A server MAY use some logic like remembering the last successful delivery plus s
389
389
390
390
## Element definitions
391
391
392
-
TODO`push-message`
392
+
[^todo]`push-message`
393
393
394
394
395
395
@@ -442,9 +442,6 @@ Usage of message encryption {{RFC8291}} and VAPID {{RFC8292}} is RECOMMENDED. If
442
442
443
443
A WebDAV-Push server SHOULD use the collection topic as `Topic` header in push messages to replace previous notifications for the same collection.
444
444
445
-
> [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.
> **TODO:** message encryption as defined in RFC 8291
479
-
480
475
481
476
## Push message
482
477
@@ -513,7 +508,7 @@ VAPID {{RFC8292}} SHOULD be used to restrict push subscriptions to the specific
513
508
514
509
A WebDAV server which supports VAPID stores a key pair. The server exposes an additional transport property:
515
510
516
-
*`server-public-key` – VAPID public key in uncompressed point form
511
+
*`server-public-key` – VAPID public key in uncompressed form and base64url encoded; attribute `type="p256dh"` MUST be added to allow different key types in the future
517
512
518
513
Example service detection of a WebDAV server that supports VAPID:
519
514
@@ -526,7 +521,7 @@ Example service detection of a WebDAV server that supports VAPID:
@@ -536,7 +531,7 @@ Example service detection of a WebDAV server that supports VAPID:
536
531
</multistatus>
537
532
~~~
538
533
539
-
The client uses this key to create a restricted subscription at the push service.
534
+
If available, the client SHOULD use this key to create a restricted subscription at the push service.
540
535
541
536
When the server sends a push message, it includes a corresponding `Authorization` header to prove its identity.
542
537
@@ -545,20 +540,20 @@ When the server sends a push message, it includes a corresponding `Authorization
545
540
546
541
Message encryption SHOULD be used to hide details of push messages from the push services.
547
542
548
-
When creating the subscription, the client generates a key pair as defined in {{RFC8291}}.
543
+
Before creating the subscription, the client generates a key pair as defined in {{RFC8291}}.
549
544
550
545
When the client then registers this subscription at the server, it includes additional subscription properties:
551
546
552
-
*`client-public-key` – public key of the user agent's key pair in uncompressed point form
553
-
*`auth` – authentication secret
547
+
*`client-public-key` – public key of the user agent's key pair in uncompressed form and base64url encoded; attribute `type="p256dh"` MUST be added to allow different key types in the future
548
+
*`auth-secret` – authentication secret
554
549
555
-
Example for a subscription as it could be registered at the server:
550
+
Example for a subscription registration requesting message encryption:
0 commit comments