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 Bearbeiten

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 Bearbeiten

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 Bearbeiten

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 Bearbeiten

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 Bearbeiten

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]

  1. Das lokale Synonym !4C72.6C81.D78F.90B2. Dies ist ein XRI Synonym, welches als relativ zum Anbieter des XRDS Dokuments zu verstehen ist.
  2. Das URL-Synonym http://example.com/example-user mit Priorität 10 (1 ist die höchste Priorität).
  3. Das URL-Synonym http://example.net/blog mit Priorität 15 (niedriger als das obige URL Synonym).
  4. 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 Bearbeiten

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]

  1. Ein XRI Auflösungsdienst (Diensttyp xri://$res*auth*($v*2.0)).
  2. Ein OpenID 2.0 Authentifizierungsdienst (Diensttyp http://openid.net/signon/2.0).
  3. Ein OpenID 1.0 Authentifizierungsdienst (Diensttyp http://openid.net/server/1.0).
  4. Ein Dienst für Dateien des Typs JPEG Medientyp image/jpeg.

Diensttypen Bearbeiten

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 Bearbeiten

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 Bearbeiten

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 Bearbeiten

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 Bearbeiten

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 Bearbeiten

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.

Siehe auch Bearbeiten

Weblinks Bearbeiten

Einzelnachweise Bearbeiten

  1. Yadis.org (Memento vom 10. Juni 2015 im Internet Archive) (URL nicht mehr aktuell)
  2. XRDS-Synonyme werden ausführlich in XRI Resolution 2.0 (Abschnitt 5) beschrieben.
  3. Beschreibungen von Diensten werden ausführlich in XRI Resolution 2.0 (Abschnitte 4.2 und 13) beschrieben
  4. Announcing xrdstype.net
  5. I-Services wiki (Memento vom 19. April 2008 im Internet Archive)
  6. http://www.oasis-open.org/committees/xri/charter.php