Unter Yadis versteht man ein Protokoll und ein Datenformat, mit denen Informationen über unterstützte Dienste einer HTTP-URL im Konzept der URL-basierten Identität beschrieben und abgerufen werden können.
Hintergrund
YADIS war der ursprüngliche Arbeitstitel des OpenID-Konzeptes von Brad Fitzpatrick. Der Titel wurde, jetzt in Kleinschreibung (da er nicht mehr als Akronym von „Yet another distributed identity system“ verstanden werden sollte), im Sommer 2005 wieder aufgegriffen und bezeichnet eine Interoperabilitätsoffensive zwischen OpenID und LID. Das XRI-Team (i-names) unterstützte das Konzept und steuerte XRDS als Datenformat bei. Neben den Gründerfirmen SixApart, NetMesh und Cordance unterstützen derzeit vor allem mehrere kleine amerikanische Unternehmen die Initiative, aber auch Größen wie VeriSign experimentieren bereits mit Yadis und OpenID.
Yadis 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.
Protokoll
Eine URL wird zur Yadis-URL, indem sie ein XRDS-Dokument vorweist. Dieses kann auf drei verschiedene Arten gefunden werden:
- Über eine spezielle HTTP-Anfrage, die den Header Accept:application/xrds+xml enthält.
- Über einen X-XRDS-Location-Header in der HTTP-Antwort.
- Über ein Meta-Tag mit http-equiv="X-XRDS-Location".
Im ersten Fall hat man das XRDS-Dokument schon erhalten, in den beiden letzten Fällen muss es mit einer zweiten HTTP-Abfrage angefragt werden.
Datenformat
Das Datenformat basiert auf XML und besteht aus Service-Deklarationen (Dienste). Jeder Dienst hat einen durch einen URI gekennzeichneten Typ und, falls notwendig, eine URL, unter der der Dienst angeboten wird.
Ein typisches XRDS-Dokument, wie es beispielsweise bei Livejournal ausgeliefert wird, sieht wie folgt aus:
<?xml version="1.0" encoding="UTF-8"?> <xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)"> <XRD> <Service> <Type>http://openid.net/signon/1.0</Type> <URI>http://www.livejournal.com/openid/server.bml</URI> </Service> </XRD> </xrds:XRDS>