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
WAYF Page: Add description of the network JSON Document (#184)
* WAYF Page: Add description of the network JSON Document
This patch descripbes the format and utility of the network JSON Document,
that is a fixed list of servers that can be used as a basis for
discovery on the wayf page.
Signed-off-by: Micke Nordin <[email protected]>
* Fixed typo
* Expanded description of a Directory Service and corresponding JSON payload
* Make consistent use of "WAYF"
* Explicited invite flow steps with WAYF page and added capability
* Moved Directory Service spec to appendix
---------
Signed-off-by: Micke Nordin <[email protected]>
Co-authored-by: Giuseppe Lo Presti <[email protected]>
Copy file name to clipboardExpand all lines: IETF-RFC.md
+39-7Lines changed: 39 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -88,6 +88,8 @@ unique at the server. `<fqdn>` is the Fully Qualified Domain Name by which the s
88
88
* __Share Name__ - a human-readable string, provided by the Sending Party or the Sending Server, to help the Receiving Party understand which Resource the Share grants access to
89
89
* __Share Permissions__ - protocol-specific allowances granted to the Receiving Party on the modes of accessing the Resource
90
90
* __Share Requirements__ - protocol-specific restrictions on the modes of accessing the Resource
91
+
* __WAYF Page__ - a Where-Are-You-From page is a discovery service used to identify the OCM Server of an Invite Receiver
92
+
* __Directory Service__ - a third-party service that exposes a list of trusted OCM Servers
91
93
92
94
# General Flow
93
95
The lifecycle of an Open Cloud Mesh Share starts with prerequisites such as
@@ -127,7 +129,7 @@ OCM Servers MAY enforce a policy to only accept Shares between such trusted cont
127
129
128
130
* the Invite Sender OCM Server generates a unique Invite Token and helps the Invite Sender to create the Invite Message
129
131
* the Invite Sender uses some out-of-band communication to send the Invite Message, containing the Invite Token and the Invite Sender OCM Server FQDN, to the Invite Receiver
130
-
* the Invite Receiver navigates to the Invite Receiver OCM Server (possibly using a Where-Are-You-From page provided as part of the Invite Message) and makes the Invite Acceptance Gesture
132
+
* the Invite Receiver navigates to the Invite Receiver OCM Server and makes the Invite Acceptance Gesture. This step MAY be facilitated if the Invite Sender OCM Server implements a WAYF Page, such that the Invite Message would include a link to it for the Invite Receiver to navigate to: the Invite Receiver would then be able to indicate their OCM Server and proceed with the Invite Acceptance Gesture without manually copying the Invite Token.
131
133
* the Invite Receiver OCM Server discovers the OCM API of the Invite Sender OCM Server using generic OCM API Discovery (see section below)
132
134
* the Invite Receiver OCM Server sends the Invite Acceptance Request to the Invite Sender OCM Server
133
135
@@ -151,6 +153,10 @@ Since the Invite Flow does not require either Party to type or remember the `use
151
153
152
154
Also, a different `userID` could be given out to each contact, to avoid correlation of identities.
153
155
156
+
If the Invite Sender OCM Server implements a WAYF Page, such a page MAY include a fixed list of servers, in addition to, or instead of, a free-text input where any OCM Server can be entered. This is especially useful if the Invite Sender is part of a federation of associated OCM Servers. In order to populate the list of associated OCM Servers, the Invite Sender's server MAY make use of a Directory Service, which is expected to follow the specification detailed in Appendix C.
157
+
158
+
Implementors that provide a WAYF Page SHOULD make the URL for the API endpoint of such a Directory Service configurable, allowing the OCM Server to be part of a network of associated OCM Servers. The configuration mechanism MAY allow an OCM Server to be part of multiple networks, thus displaying a union of multiple lists in its WAYF Page.
159
+
154
160
### Invite Acceptance Response Details
155
161
The Invite Acceptance Response SHOULD be a HTTP response:
156
162
@@ -276,11 +282,12 @@ itself be an object containing the following fields:
276
282
As implementations MUST accept Share Creation Notifications to be compliant,
277
283
it is not necessary to expose that as a capability.
278
284
Example: `["receive-code", "webdav-uri"]`. The array MAY include for instance:
279
-
* `"enforce-mfa"` - to indicate that this OCM server can apply a Sending Server's MFA requirements for a Share on their behalf.
280
-
* `"webdav-uri"` - to indicate that this OCM server can append a relative URI to the path listed for WebDAV in the appropriate `resourceTypes` entry
281
-
* `"protocol-object"` - to indicate that this OCM server can receive a Share Creation Notification whose `protocol` object contains one property per supported protocol instead of containing the standard `name` and `options` properties.
285
+
* `"enforce-mfa"` - to indicate that this OCM Server can apply a Sending Server's MFA requirements for a Share on their behalf.
286
+
* `"webdav-uri"` - to indicate that this OCM Server can append a relative URI to the path listed for WebDAV in the appropriate `resourceTypes` entry
287
+
* `"protocol-object"` - to indicate that this OCM Server can receive a Share Creation Notification whose `protocol` object contains one property per supported protocol instead of containing the standard `name` and `options` properties.
282
288
* `"invites"` - to indicate the server would support acting as an Invite Sender or Invite Receiver OCM Server. This might be useful for suggesting to a user that existing contacts might be upgraded to the more secure (and possibly required) invite flow.
283
-
* `"receive-code"` - to indicate that this OCM server can receive a `code` as part of a Share Creation Notification, and exchange it for a bearer token at the Sending Server's `/token` API endpoint.
289
+
* `"receive-code"` - to indicate that this OCM Server can receive a `code` as part of a Share Creation Notification, and exchange it for a bearer token at the Sending Server's `/token` API endpoint.
290
+
* `"invite-wayf"` - to indicate that this OCM Server exposes a WAYF Page to facilitate the Invite flow.
284
291
* OPTIONAL: criteria (array of string) - The criteria for accepting a Share Creation Notification.
285
292
As all Receiving Servers should require the use of TLS in API calls,
286
293
it is not necessary to expose that as a criterium.
@@ -299,7 +306,7 @@ itself be an object containing the following fields:
* REQUIRED publicKeyPem (string) - PEM-encoded version of the public key.
301
308
Example: "-----BEGIN PUBLIC KEY-----\nMII...QDD\n-----END PUBLIC KEY-----\n"
302
-
* OPTIONAL: inviteAcceptDialog (string) - URL path of a web page where a user can accept an invite, when query parameters `"token"` and `"providerDomain"` are provided. Implementations that offer the `"invites"` capability SHOULD provide this URL as well in order to enhance the UX of the Invite Flow. If for example `"/index.php/apps/sciencemesh/accept"` is specified here then a Where-Are-You-From page could redirect the end-user to `/index.php/apps/sciencemesh/accept?token=zi5kooKu3ivohr9a&providerDomain=example.com`.
309
+
* OPTIONAL: inviteAcceptDialog (string) - URL path of a web page where a user can accept an invite, when query parameters `"token"` and `"providerDomain"` are provided. Implementations that offer the `"invites"` capability SHOULD provide this URL as well in order to enhance the UX of the Invite Flow. If for example `"/index.php/apps/sciencemesh/accept"` is specified here then a WAYF Page SHOULD redirect the end-user to `/index.php/apps/sciencemesh/accept?token=zi5kooKu3ivohr9a&providerDomain=example.com`.
303
310
304
311
# Share Creation Notification
305
312
To create a share, the sending server SHOULD make a HTTP POST request
The first step would be to confirm the validity of each properties:
583
590
@@ -613,6 +620,31 @@ Following the validation of the signature, the host should also confirm the vali
613
620
614
621
As an example, if the payload is about initiating a new share the file owner has to be an account from the instance at the origin of the request.
615
622
623
+
# Appendix C: Directory Service
624
+
625
+
A third-party Directory Service is a back-end service used to federate multiple OCM Servers and facilitate the Invite flow. It is expected to expose, via anonymous HTTP GET, a JSON document with the following format:
626
+
* REQUIRED: `federation` - a human-readable name for the list of OCM Servers exposed by the Directory Service
627
+
* REQUIRED: `servers` - a JSON array of objects to describe the list of OCM Servers with the following string fields:
628
+
* REQUIRED: `url` - the OCM Server's FQDN
629
+
* REQUIRED: `displayName` - a human-readable name for the OCM Server
630
+
Example:
631
+
```json
632
+
{
633
+
"federation" : "The ScienceMesh Directory",
634
+
"servers" : [
635
+
{
636
+
"url" : "https://ocm-server-1.fqdn",
637
+
"displayName" : "OCM Server 1"
638
+
},
639
+
{
640
+
"url" : "https://ocm-server-2.fqdn",
641
+
"displayName" : "OCM Server 2"
642
+
}
643
+
]
644
+
}
645
+
```
646
+
647
+
616
648
# Acknowledgements
617
649
618
650
Our deepest thanks and appreciation go to the people who started the work on what would become this specification in 2015. In particular we want to thank (in alphabetical order) Guido Aben, Russell Albert, Holger Angenent, David Antoš, Hrachya Astsatryan, Kurt Bauer, Charles du Jeu, Andreas Eckey, David Gillard, Andranik Hayrapetyan Wahi, Christoph Herzog, David Jericho, Frank Karlitschek, Christian Kracher, Ralph Krimmel, Massimo Lamanna, Simon Leinen, Jari Miettinen, Jakub Moscicki, Frederik Orellana, Vlad Roman, Christian Schmitz, Woojin Seok, Rogier Spoor, Christian Sprajc, Peter Szegedi, Ron Trompert, Benedikt Wegmann and Johnatan Xu.
0 commit comments