XRDS
XRDS (Kurzform für: Extensible Resource Descriptor Sequence) ist ein XML-basiertes Dateiformat, um Metadaten über eine Web Resource zu beschreiben und abrufbar zu machen (engl. „Discovery“) – insbesondere Dienste, die unter dieser Ressource verfügbar sind (engl. „Service discovery“). Beispielsweise kann ein OpenID-Anbieter XRDS-Dokumente benutzen, um die Adresse und die Fähigkeiten seines OpenID-Dienstes zu beschreiben.
Hintergrund
Das von XRDS verwendete XML-Format wurde ursprünglich im Jahr 2004 vom OASIS für XRI (Extensible Resource Identifier) als Beschreibungsformat für XRIs entwickelt. Die Abkürzung XRDS wurde während darauf folgender Diskussionen zwischen Mitgliedern des XRI Technischen Komitees und OpenID-Entwicklern beim ersten Internet Identity Workshop in Berkeley (Kalifornien, USA) im Oktober 2005 geprägt.
Ein Protokoll, mit dem XRDS-Dokumente von einer URL abgerufen werden können, wurde Yadis genannt und im März 2006 veröffentlicht.[1] Yadis wurde das Beschreibungsformat für OpenID 1.1.
Ein solches Beschreibungsformat stellte sich in weiterer Folge als so nützlich für URLs und XRIs heraus, dass im November 2007 die URL-basierte Verwendung von XRDS formell zur XRI Resolution 2.0 Spezifikation hinzugefügt wurde. Dieses Format und Protokoll wurde dann Teil der OpenID-Authentication-2.0-Spezifikation.
XRDS Simple
Zu Beginn des Jahres 2008 führten die Arbeiten am OAuth-Protokoll von Eran Hammer-Lahav zur Entwicklung von XRDS Simple, welches ein spezielles Profil von XRDS ist, das XRDS auf die wesentlichsten Elemente beschränkt und somit einfacher anwendbar macht. Des Weiteren wurden einige Erweiterungen definiert, um OAuth und andere HTTP-basierte Protokolle zu unterstützen. Ende 2008 wurden weitere Arbeiten an XRDS Simple eingestellt. Die bis dahin erzielten Ergebnisse wurden in das XRDS Projekt zurückgeführt und fließen in die XRD 1.0 Spezifikation ein.
Anwendungen
Neben der Hauptanwendung XRI wird XRDS unter anderem in folgenden Bereichen benutzt:
- OpenID: Beschreibung von Authentifizierungsdiensten sowie von Erweiterungen mancher Anbieter.
- OAuth: Beschreibung von OAuth-Diensten und Fähigkeiten.
- Higgins Projekt: Beschreibung von Higgins „Context Providers“.
- XDI.org: Für I-name und I-number Adressen und darauf basierende Identitätsdienste.
- XDI Protokoll: Beschreibung von XDI-Diensten und Fähigkeiten.
Beispiel
Das folgende Beispiel zeigt ein XRDS-Dokument für den XRI i-name =example. Wie darin zu erkennen ist, dient ein äußeres <XRDS> Element als Container für ein oder mehrere <XRD> (eXtensible Resource Descriptor) Elemente. Viele XRDS-Dokumente beinhalten nur ein einziges XRD-Element. Manche Anwendungen wie z. B. XRI Auflösung können zu mehreren <XRD> Elementen in einem <XRDS> Element führen, um eine Metadata-Sequenz mehrerer zusammenhängender Ressourcen zu beschreiben.
<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)"
xmlns:openid="http://openid.net/xmlns/1.0">
<XRD ref="xri://=example">
<Query>*example</Query>
<Status ceid="off" cid="verified" code="100"/>
<Expires>2008-05-05T00:15:00.000Z</Expires>
<ProviderID>xri://=</ProviderID>
<!-- Synonyme -->
<LocalID priority="10">!4C72.6C81.D78F.90B2</LocalID>
<EquivID priority="10">http://example.com/example-user</EquivID>
<EquivID priority="15">http://example.net/blog</EquivID>
<CanonicalID>xri://=!4C72.6C81.D78F.90B2</CanonicalID>
<!-- Dienste -->
<Service>
<!-- XRI Auflösungsdienst -->
<ProviderID>xri://=!F83.62B1.44F.2813</ProviderID>
<Type>xri://$res*auth*($v*2.0)</Type>
<MediaType>application/xrds+xml</MediaType>
<URI priority=”10”>http://resolve.example.com/</URI>
<URI priority=”15”>http://resolve2.example.com/</URI>
<URI>https://resolve.example.com/</URI>
</Service>
<!-- OpenID 2.0 Authentifizierungsdienst -->
<Service priority="10">
<Type>http://specs.openid.net/auth/2.0/signon</Type>
<URI>http://www.myopenid.com/server</URI>
<LocalID>http://example.myopenid.com/</LocalID>
</Service>
<!-- OpenID 1.0 Authentifizierungsdienst -->
<Service priority="20">
<Type>http://openid.net/server/1.0</Type>
<URI>http://www.livejournal.com/openid/server.bml</URI>
<openid:Delegate>http://www.livejournal.com/users/example/</openid:Delegate>
</Service>
<!-- Dienst für Dateien des Typs JPEG -->
<Service priority="10">
<Type match="null" />
<Path select="true">/media/pictures</Path>
<MediaType select="true">image/jpeg</MediaType>
<URI append="path" >http://pictures.example.com/</URI>
</Service>
</XRD>
</xrds:XRDS>
Synonyme
XRDS-Dokumente unterstützen die Beschreibung von Synonymen einer Ressource. In diesem Zusammenhang kann ein Synonym ein URI oder XRI sein, welches die gleiche Ressource bezeichnet. Beispielsweise beschreibt das obige XRDS-Dokument die folgenden Synonyme:[2]
- Das lokale Synonym !4C72.6C81.D78F.90B2. Dies ist ein XRI Synonym, welches als relativ zum Anbieter des XRDS Dokuments zu verstehen ist.
- Das URL-Synonym http://example.com/example-user mit Priorität 10 (1 ist die höchste Priorität).
- Das URL-Synonym http://example.net/blog mit Priorität 15 (niedriger als das obige URL Synonym).
- Das kanonische Synonym xri://=!4C72.6C81.D78F.90B2. Das ist eine absolute XRI i-number für die Resource -- ein dauerhafter Bezeichner, der nicht wieder einer anderen Resource zugewiesen werden kann (ähnlich einem URN).
Dienste
Der wichtigste Teil des XRDS-Dokuments beinhaltet die Beschreibung von Diensten (engl. „Service Endpoints“), die mit der Ressource verbunden sind. Beispielsweise beschreibt das obige XRDS-Dokument die folgenden Dienste:[3]
Diensttypen
In XRDS wird der Typ eines Dienstes mittels eines URI oder XRI beschrieben. Die folgende Liste zeigt einige bekannte Diensttypen. Unter xrdstype.net läuft seit Mai 2008 ein Projekt,[4] um solche Diensttypen zu katalogisieren.
XRI Auflösung
Name | URI oder XRI | Herkunft | Seit |
---|---|---|---|
Direkte Auflösung | xri://$res*auth*($v*2.0)/ | XRI Resolution 2.0 | März 2005 |
Proxy Auflösung | xri://$res*proxy*($v*2.0)/ | XRI Resolution 2.0 | März 2005 |
OpenID
Name | URI oder XRI | Herkunft | Seit |
---|---|---|---|
OpenID 1.0 | http://openid.net/server/1.0 | OpenID Authentication 2.0, Section 14.2.1 | Juni 2005 |
OpenID 1.1 | http://openid.net/server/1.1 | OpenID Authentication 2.0, Section 14.2.1 | Mai 2006 |
OpenID 2.0 – Standard Login | http://specs.openid.net/auth/2.0/signon | OpenID Authentication 2.0, Section 7.3.2.1.2 | December 2007 |
OpenID 2.0 – OP Identifier Login | http://specs.openid.net/auth/2.0/server | OpenID Authentication 2.0, Section 7.3.2.1.1 | Dezember 2007 |
OpenID Attribute Exchange 1.0 | http://openid.net/srv/ax/1.0 | OpenID Attribute Exchange 1.0, Section 2 | Dezember 2007 |
OAuth
Name | URI oder XRI | Herkunft | Seit |
---|---|---|---|
OAuth Discovery | http://oauth.net/discovery/1.0 | OAuth Discovery Draft 2 | März 2008 |
XDI.org I-Services
I-Services sind mit XRIs verbundene Identitätsdienste.[5]
Name | URI oder XRI | Herkunft | Seit |
---|---|---|---|
Kontaktseite (engl. „Contact Service“) | xri://+i-service*(+contact)*($v*1.0)/ | XDI.org Contact Service 1.0 (Memento vom 8. Februar 2012 im Internet Archive) | August 2006 |
Weiterleitung (engl. „Forwarding Service“) | xri://+i-service*(+forwarding)*($v*1.0)/ | XDI.org Forwarding Service 1.0 (Memento vom 8. Februar 2012 im Internet Archive) | August 2006 |
Lizenz
XRDS ist eine freie Open-Source-Spezifikation von OASIS. Das OASIS für XRI hat von Beginn seiner Arbeit an (im Jahr 2003) unter einer freien Lizenz gearbeitet, wie unter der XRI Charter[6] nachgelesen werden kann.
Weblinks
- XRI Resolution 2.0 – Für XRDS Documents siehe Abschnitt 4.
- OASIS XRI Technisches Komitee
- XRDS Type – Ein Katalog von XRDS Diensttypen.
- Einführung zu XRI und XRDS Internet Identity Workshop
Einzelnachweise
- Yadis.org (Memento vom 10. Juni 2015 im Internet Archive) (URL nicht mehr aktuell)
- XRDS-Synonyme werden ausführlich in XRI Resolution 2.0 (Abschnitt 5) beschrieben.
- Beschreibungen von Diensten werden ausführlich in XRI Resolution 2.0 (Abschnitte 4.2 und 13) beschrieben
- Announcing xrdstype.net
- I-Services wiki (Memento vom 19. April 2008 im Internet Archive)
- http://www.oasis-open.org/committees/xri/charter.php