[mdx] Metadata Retrieval From Aggregate Protocol
Chad La Joie
chad.lajoie at switch.ch
Sun May 24 08:21:02 PDT 2009
Sorry, this is later than I wanted, but here are my initial thoughts on
the protocol for retrieving metadata from an aggregate:
First, I decided to go for a RESTful protocol currently supporting two
resources. A singular entity descriptor and a collection thereof.
Base URL:
In the following descriptions of HTTP GET retrieval operations a URL
path format is given. This path is assumed to be relative to a single
base URL which MUST include at least a URL scheme and hostname. A port
and path are allowed, but not required. Query parameters and fragements
are not allowed. If a path is provided the URL path for operation is
appended to the end of that path.
Retrieval of Unique Descriptor (RUD) Operation:
- URL Path Format 'entity/{id}'
The 'id' is a unique identifier for the entity. In our case this
may be either the URL encoded entity ID or the sha1 hash thereof. All
IDs starting with an '@' are reserved.
Retrieval of Descriptor Collection (RDC) Operation:
- URL Path Format 'entity-collection/{id}
The 'id' is the unique identifier for the collection. All IDs
starting with an '@' are reserved. The id '@all' designates the entire
collection of entities within the aggregate.
Common Query Parameter:
- requester - optional - The ID of the requester. This ID should be
treated as informational only
Headers:
- Content-Type - required - Only SAML metadata content type
(application/samlmetadata+xml) would be supported initially
- etag - required for RUD, optional for RDC operations - Supports
intelligent caching and more efficient retrieval given our pull model
Efficient Retrieval:
ETags in conjunction with the 'If-None-Match' header in the request are
the preferred method for performing conditional retrieval of data. The
'Last-Modified' and 'If-Modified-Since' headers provide an additional,
but less preferred, method of conditional data retrieval.
Caching:
All responses SHOULD carry the header 'Cache-Control: no-cache' such
that any intermediary, transparent, HTTP caches between the aggregate
and requester are instructed not cache this information.
Content Encodings:
All aggregate publishers MUST support gzip compression of transfered data
Authentication:
All aggregate published MUST support HTTP BASIC authentication and
SHOULD support mutual SSL/TLS authentication.
Security Considerations:
- Any identity claimed by the requester via the 'requester' query
parameter should not be trusted until it can be verified. Transport
level authentication provides one possible mechanism for this verification.
- A metadata entity, or a collection entities, may be restricted such
that only a subset of requesters may view them.
--
SWITCH
Serving Swiss Universities
--------------------------
Chad La Joie, Software Engineer, Net Services
Werdstrasse 2, P.O. Box, 8021 Zürich, Switzerland
phone +41 44 268 15 75, fax +41 44 268 15 68
chad.lajoie at switch.ch, http://www.switch.ch
More information about the mdx
mailing list