Overview
The service catalogue, as described in DP-REC-002 - Service Catalogue, provides the root of all further Data Portability operations, discovery is essential to a seamless user experience. Performed via a number of methods, it is intended that this may later be extensible so as to ensure that the experience remains seamless.
This implementation describes methods for locating a service catalogue from three possible locations:
- XRDS (XRDS-Simple) Discovery. Possibly as part of discovery of the user's Identity URL (be that OpenID enabled or otherwise)
- OpenID Attribute Exchange
- A user specified location
Implementation Details
The following sections describe each of the potential methods for discovering the location of a Service Catalogue for a given user.
Discovery via XRDS(-Simple)-Auto-Discovery as for discovery of Identity endpoints
Discovery is initiated by any application that wishes to access the DataPortability Endpoints for a user. When processing either the login for the user, or an action that requires information from the user's portable catalogue, the application MUST retrieve the content available at the normalised Identity Endpoint, where the normalisation is the same as that performed for OpenID 2.0 endpoints.
This process is as described in XRDS-Simple and OpenID-Yadis and uses the discovery mechanisms described there. The XRDS file found is probably the same XRDS file used for OpenID Delegation.
If XRDS discovery falls back to reading the HEAD section of the HTML document at the location provided, then optionally an additional key may be included "dataportability.discovery1.0.catalogue". If this key is included, then this URL MUST be considered as the authoritative location of the user's Service Catalogue.
Discovery via OpenID Attribute Exchange
Discovery is initiated by any application that wishes to access the DataPortability Endpoints for a user. When processing the login for the user, the consumer application MUST utilise OpenID Attribute Exchange, and request the http://axschema.org/x/discovery/xrdsattribute. The OpenID server, if it supports this attribute, MUST return a valid URL. If the OpenID server does not support the attribute, it MUST fail as per the OpenID Attribute Exchange specification.
Discovery from User Specified Location
Discovery is initiated by any application that wishes to access the DataPortability Endpoints for a user. When processing the login for the user, or at any point, the application requests the user enter the location of their Service Catalogue. This catalogue may then be accessed by the requesting application.
Selection Rationale
XRDS-Simple and OpenID-Yadis is fairly well understood and gaining traction as a way of associating or delegating a well known URL (eg My blog url) with an OpenID (eg an OpenID provider like MyOpenID). As this XRDS is already being found for OpenID use, it's natural to add additional services to it. It's effectively an extension of the third option of simply asking the user because it allows the user to put in a well known URL and then using that to find the actual location of the XRDS. It is anticipated that the actual creation of the XRDS file and insertion of the discovery parts would be handled by code such as a Blog plugin or by the social network that provides the home page that the user points to.
Discovery via OpenID Attribute Exchange is included to allow for situations where the user's home page and OpenID provider are one and the same. Even there though, the OpenID Service Provider could also provide the XRDS and XRDS Discovery. It also allows for the situation where the Service catalogue is only provided once the User and Relying Party have been verified. Although this technique has appeal it also has problems. Not least of which is that OpenID AX is poorly supported with very few current implementations.
Why this implementation was selected over other possible implementations, including:
- Brief details of other possible implementations.
- Why this implementations is better.
Details of Adoption
Forming a vital component of the final approval process, this section should detail actual real-world implementations of this suggested method; hence showing adoption of the proposal.
Action Group Backing
Members of the action groups that back this implementation should be listed here, as a formal tracking of support for the implementation.
Is it appropriate to fill in what you might expect in the XRDS file (expected types) and what the endpoints might look like. Even if it is just a collection of links to the other docs?