
Davon habe ich schon ganz lange geträumt: OpenID-Login in das Backend (und Frontend mit der Systemextension felogin) von TYPO3!
Das Ganze hat Dmitry Dulepov im Rahmen des Hackontest 2008 implementiert. Der Hackontest ist ein 24 Stunden Programmierwettbewerb zwischen drei Open Source-Projekten, mit dem Ziel, in erster Linie im Team viele Features in das jeweilige Produkt zu integrieren. Eine Jury bewertet dann die Codes und die Qualität der Implementierung. Heute um 16:00 Uhr wird in Zürich/Schweiz der Gewinner des diesjährigen Wettbewerbs bekannt gegeben.
Zurück zum Thema: die OpenID-Unterstützung ist natürlich noch nicht in einem Release veröffentlicht worden, die Änderungen kann man sich aber im aktuellen Entwicklungszweig herunterladen. In Live-Systeme sollte man das Feature also auch noch nicht integrieren (oder auf eigene Gefahr).
Update: Laut inoffiziellen Meldungen hat TYPO3 beim Hackontest 2008 den zweiten Platz erreicht. Immerhin besser als den letzten von drei möglichen Plätzen zu machen, aber ich glaube, darauf kam es bei allen Beteiligten auch gar nicht an. :)
Yahoo ist schon länger als OpenID-Provider unterwegs (seit Anfang diesen Jahres). Leider akzeptieren sie zur Anmeldung an ihre Dienste (Yahoo, flickr usw.) immer noch keine OpenIDs von fremden Anbietern. An flickr kann man sich noch nicht einmal mit der Yahoo-OpenID anmelden, sondern muss sich mit seinen alten Yahoo-Daten anmelden.
Jetzt möchte auch MySpace auf den OpenID-Zug aufspringen. Aber auch dieser Riese im Webgeschäft möchte erstmal nur selber als Provider auftreten und bietet deshalb nicht die Möglichkeit an, sich mit schon vorhandenen OpenIDs anzumelden, geschweige denn MySpace-Accounts zu erstellen.
Jetzt fehlt eigentlich nur noch Google (zur Zeit nur mit einem Blogger.com-Account als Provider unterwegs) und Facebook als OpenID-Provider. Wenn die großen Dienste nur langsam mal nicht anfangen auch fremde OpenIDs zu akzeptieren, wird es das mit dem eigentlich nicht schlechten SingleSignOn-System gewesen sein. Zur Zeit hat man für jeden dieser Dienste eine Username-/Passwort-Kombination. In Zukunft wird man dann auch genau so viele OpenIDs sein Eigen nennen. Und das sollte ja nicht Sinn von OpenID sein. Oder habe ich es einfach mal wieder nur falsche verstanden?

Wie in diesem Artikel schon erwähnt, kann man OpenID auch bei einigen Providern mit Information Card beziehungsweise Cardspace koppeln.
Cardspace ist eine Technologie aus dem Hause Microsoft, die es einem anhand von virtuellen Identitätskarten ermöglicht, sich gegenüber Diensten zu authentifizieren. Information Card ist die Open Source-Alternative, mit der man die Karten auf Systemen wie Linux und Mac OS X nutzen kann.
OpenID-Provider wie myOpenID oder PIP Verisign Labs erzeugen für die einzelnen Identitäten Information Cards. Beim Anmelden an einen Dienst wählt man nur noch die Karte aus, mit der man sich authentifizieren möchte. Der OpenID-Provider identifiziert diese Karte, sendet das Ergebnis an die anfragende Stelle zurück und man ist angemeldet.
Cardspace ist in Windows Vista und Windows XP Service Pack 2 enthalten. Für Mac OS X und diverse Linux-Distributionen gibt es das Higgins-Projekt. DigitalMe basiert auf letzterem und bietet unter Mac OS X einen funktionierenden Identity Selector, sowie ein Plugin für Firefox.
Der OpenID-Provider myOpenID stellt für OpenID-Accounts auch Client-SSL-Zertifikate aus. Seine Zertifikate kann man unter Kontoeinstellungen –> Authentication settings verwalten und anlegen.

Mit Safari unter Mac OS X 10.5.2 hatte ich Schwierigkeiten mich mit dem im Schlüsselmanager gespeicherte Zertifikat anzumelden. Zwar weist myOpenID auf Schwierigkeiten im Zusammenspiel mit Safari hin, die aber keine Gemeinsamkeiten mit meinen hatten. Ich musste im Schlüsselmanager das Zertifikat immer mit der Login-URL von myOpenID verbinden. Da die URL aber bei jeder Anmeldung mit einem Hash versehen wird, ist dieses unmöglich. Meine Wahl des Standardbrowsers fällt also wieder zu Firefox zurück, da dieser (eigentlich leider) ein eigenes Zertifikatsmodul mit sich bringt.

Beim ersten Einloggen mit dem Client-Zertifikat kann man myOpenID mitteilen, dass man immer eingeloggt sein möchte. Wenn man den Haken setzt, muss man bei Anmeldevorgängen nur noch seine OpenID dem jeweiligen Dienst angeben. Es sind keine weiteren Angaben oder Klicks nötig. Das Zertifikat wird an myOpenID übertragen, authentifiziert und bestätigt. Und schon ist man angemeldet.
Einen großen Nachteil hat OpenID als Identifizierungsmethode: das Stehlen des Accounts mittels Phishing.
Der normale Anmeldeprozess einer Website über OpenID leitet einen an den zuständigen OpenID-Provider weiter, an dem man sich authentifizieren muss. Diese Weiterleitung liegt in der Verantwortung der Website, an der man sich anmelden möchte. Es ist also problemlos möglich, die verschiedenen Anmeldeseiten der OpenID-Provider nachzubauen, um so den Usernamen und Passwort abzufangen.
Mit diesen Daten hat der Dieb Zugriff auf alle Identitäten, die in der OpenID enthalten sind.
Um dem Phishing zu entgehen, gibt es verschiedene Ansätze, die man mit OpenID kombinieren kann. Information Card/CardSpace ist zum Beispiel eine Technologie, mit der man sich anhand von Identitätskarten authentifizieren kann. Vergleichbar mit den unzähligen Mitgliedschaftskarten im EC-Format, die man so im Portemonnaie mit sich herumträgt. Auf solch einer Karte ist ein persönliches Zertifikat hinterlegt, die gesamte Karte wird von einer Zertifizierungsstelle mit einem Zertifikat versehen. Die Angabe von Usernamen und Passwort wird mit Information Cards hinfällig.
Einen ähnlichen Weg verfolgen Client-SSL-Zertifikate. Mit solch einem Zertifikat identifiziert man sich bei seinem OpenID-Provider und muss keinerlei Passwortinformationen mitteilen. Der Client sendet das Zertifikat und der Provider nach erfolgreicher Authentifizierung die Bestätigung. Und schon ist man angemeldet. Einfacher geht es eigentlich nicht mehr. Nachteil ist nur noch, dass jeder Client ein eigenes Zertifikat benötigt. Aber dieser Umstand sollte einem die eigene Sicherheit schon wert sein.

Da ich mich zur Zeit vermehrt um Identitätsmanagement im Web und im speziellen mit OpenID und Information cards/Cardspace beschäftige, möchte ich die Gelegenheit nutzen, eine Artikelserie ins Leben zu rufen, die sich erst einmal mit OpenID beschäftigt.
1. Was ist OpenID?
OpenID ist ein dezentrales Single-Sign-On-System (SSO). Man meldet sich nicht direkt bei dem Dienst an, den man nutzen möchte, sondern wird von seinem OpenID-Provider authentifiziert.
Bei seinem Provider hat man Daten wie Name, Nickname, E-Mail-Adresse und so weiter hinterlassen, so dass man nicht mehr gezwungen ist, diese dem Dienst bei einer Registrierung erneut mitzuteilen. Eine Steuerung, welche Daten bei der Registrierung übermittelt werden, ist zusätzlich möglich. Man möchte ja nicht jedem Betreiber sein Geschlecht oder Geburtsdatum offenbaren. Bei manchen OpenID-Providern ist es zusätzlich möglich in einem OpenID-Account mehrere Identitäten zusammen zu fassen. Dadurch kann man zum Beispiel die selbe OpenID verwenden, um den anfragenden Dienst entweder private, geschäftliche oder halbwegs anonyme Daten zu übermitteln.
Bei der Anmeldung an einen Dienst per OpenID gibt man lediglich seine Kennung an. Der Dienst leitet einen an seinen OpenID-Provider weiter, bei dem (wenn noch nicht erfolgt) die eigentliche Anmeldung mittels Usernamen und Kennwort erfolgt. Nach erfolgreicher Anmeldung wird man zum ursprünglichen Dienst weitergeleitet und ist angemeldet.
2. Warum OpenID?
Ein Grund wäre manische Faulheit. Persönlich habe ich nur eine Handvoll unterschiedliche Passwörter, die ich mir merken kann/möchte. Zwar benutze ich auch Passwortmanager wie KeePass/KeePassX, in dem ich aber eher Passwörter von Kunden verwalte. Zum Bewegen in Foren und Portalen selber benutze ich fast immer dieselben Passwörter, die sich aber (das muss ich zu meiner Verteidigung noch anmerken) von Passwörtern für Mail, FTP und so weiter unterscheiden. Ich nehme jetzt einfach mal dreist an, dass dieses Verhaltensmuster auf 90 Prozent aller Webbenutzer passt.
Mit OpenID pflegt man nur eine Identität, dessen Daten man aber selektiv übertragen lassen kann. Man ist also quasi immer Herr seiner Daten. Desweiteren benötigt man nur noch das Passwort für seinen OpenID-Provider. Hier liegt meiner Meinung nach auch die größte Gefahr von OpenID, auf die ich aber in einem folgenden Artikel zu sprechen komme.
Ein Vorteil von OpenID als Verwalter seiner Identitäten ist, dass zwischen OpenID-Provider und dem Dienst, an dem man sich anmelden möchte, selber keine Passwortdaten ausgetauscht werden. Man meldet sich nur bei seinem OpenID-Provider an und dieser teilt dann dem anfragenden Diensten mit, ob ich authentifiziert bin oder nicht.
3. Wie bekomme ich eine OpenID?
OpenID-Provider gibt es mittlerweile mehr als genug. Yahoo bietet seit mehreren Wochen an, Accounts zusätzlich mit einer OpenID auszustatten, unterstützt aber nur die OpenID 2.0-Spezifikation. Bisher bieten aber nur wenige Seiten die Anmeldung mit der zweiten Version von OpenID an. Hier ist man also besser dran, sich an Anbieter wie myOpenID oder Verisign PIP zu halten. Eine etwas größere Liste findet man hier.
Je länger ich mich mit dem Thema OpenID beschäftige, desto schneller komme ich wieder zu meinen anfänglichen Zweifeln zurück. Heute: das gesamte Konstrukt ist einfach zu kompliziert.
OpenID-Provider gibt es mittlerweile fast wie Sand am Meer und somit hat man die Qual der Wahl, welchem man seine Identität(en) anvertraut. Viele Provider habe ich mir noch nicht angeschaut. Bei Yahoo habe ich zwar eine OpenID mit meinem Account verbinden können, nur konnte ich mich weder bei meinem Yahoo-Webmail noch bei Flickr (was ja zu Yahoo gehört) mit diesem anmelden. Vielleicht habe ich den Extra-Button zur OpenID-Anmeldung aber einfach schlichtweg übersehen.
Verisign spielt auch in der Liga der OpenID-Provider mit. Mit dem PIP-Dienst ist man zusätzlich in der Lage verschiedene Identitäten anzulegen, um zum Beispiel nicht jedem Dienst die selben Daten zu übermitteln. Jede Identität bekommt eine eigene URL zugewiesen.
Hierbei stellt sich mir dann schon einmal die Frage, ob ein normaler, nicht so technikaffiner Benutzer des Internets sich diesem Krampf aussetzt, URLs wie "https://schnickschnack.pip.verisignlabs.com" auswendig zu lernen, zusätzlich noch seine Accountdaten von Verisign im Kopf hat und nicht dem altbewährten System hinterher weint, in dem er bei jeder Seite den gleichen Usernamen und Passwort hatte (und nur diese angeben musste). Und nicht jeder hat eine Domain zur Hand, um seine Anmeldung über diese an seinen Provider zu delegieren.
Der gemeine User ist faul. Richtig faul. Passwörter werden im browsereigenen Manager gespeichert und stehen beim Aufrufen der Seite sofort zur Verfügung. Ohne eine meist kryptische URL einzutippen und sich daraufhin noch zu authentifizieren. Information Card/InfoCard/Cardspace ist zwar eine Technologie von Microsoft, würde aber auch im Zusammenspiel mit OpenID eine Alternative zu herkömmlichen Authentifizierungsmechanismen bilden. Hierbei muss sich der Anwender keine URLs merken, sondern kann leicht seine Identität am Bildschirm auswählen, die dem Server danach übertragen wird. Hört sich jedenfalls schon einmal einfach und komfortabel an.

Das Thema OpenID ging ja mit dem Beitreten von Microsoft, IBM, Verisign und Google in den Vorstand des OpenID-Gremiums Ende letzter Woche durch die Netzgemeinde und hat mich mal wieder mit dem Thema beschäftigen lassen. Meine erste (fest eingebaute) Ablehnung, die durch Skepsis abgelöst wurde, ist schließlich technischer Begeisterung gewichen.
Yahoo bietet seit kurzem an, Accounts mit einer OpenID-Kennung zu erweitern, um sich an die eigenen Dienste (Yahoo, Flickr) aber auch an alle anderen Dienste im Web anzumelden. Es ist aber (noch) nicht möglich, sich mit einer fremden OpenID an seinem Yahoo-Account anzumelden. Da sollte man also mal abwarten, wie Microsoft und Google OpenID implementieren werden. Wenn beide Firmen ähnlich agieren handelt es sich in meinen Augen nur um das Wettrennen, wer die meisten OpenID-Accounts sammeln kann und dient nur dem Ziel den Markt zu beherrschen. Aber was soll ich mit einer Microsoft-OpenID, wenn ich mich nicht bei GMail anmelden kann und hierfür wieder eine Google-OpenID benötige? Da kann ich gleich bei meinen Passwörtern bleiben.
Wenn es so mit den Erfolgsmeldungen von OpenID weitergeht, wird OpenID auf jeden Fall eine Alternative zu bestehenden Registrations- und Anmeldeprozeduren. Jetzt kommt es nur noch drauf an, dass es nicht nur vermehrt OpenID-Provider gibt, sondern die Anzahl der Consumer (Webseiten, auf denen man sich per OpenID anmelden kann) steigt.
Ich bin im Netz auf die Seite eines Inders gestossen, der anonyme OpenID-Kennungen zur Verfügung stellt. Anonym in der Hinsicht, dass man selber keine Daten preisgeben muss. Man könnte höchstens noch zwischen IP-Adresse und OpenID einen Zusammenhang knüpfen. In Verbindung mit TOR fällt dies aber auch schwerer. Trotzdem sollte man dieses Angebot der anonymen OpenID-Kennungen nicht für sicherheitskritische Dinge benutzen. Ich verstehe es eher als eine Art Bugmenot für OpenID.
Vor ein paar Wochen ist OpenID 2.0 verabschiedet worden. Neuerungen sind unter anderem die Unterstützung von Directed Identity, womit man nur noch den OpenID-Provider angeben muss und auf dessen Seite dann aus seinen Profilen das wählen kann, mit dem man sich anmelden möchte. Dies ermöglicht die Nutzung von verschiedenen Profilen mittels einer OpenID-Kennung.
Die Erweiterung OpenID Attribute Exchange 1.0 tauscht die hinterlegten Daten mit den jeweiligen Websites aus, um diese auf den neuesten Stand zu halten. OpenID wird also noch bequemer. Die gesamte Spezifikation kann man sich hier anschauen.
Zwei Artikel beschäftigen sich mit dem Phishingproblem, das mit OpenID einherkommt. In "The problem(s) with OpenID" beschreibt Stefan Brands die allgemeinen Sicherheits- und Privacybedenken, Marco Slot geht detailliert in seinen Ausführungen auf das phishen von Anmeldevorgängen ein. Beides ist sehr lesenswert.
Wer sich dennoch nicht abschrecken lässt, aber den mittlerweile vielfältigen OpenID-Providern nicht über den Weg traut, kann sich mit phpMyID einen eigenen OpenID-Provider zimmern. Voraussetzung ist einzig und allein PHP-Webspace. Natürlich sollte man für genügend Sicherheit sorgen und an eine SSL-Verschlüsselung denken. phpMyID ist seit neuestem in der Version 0.8 erhältlich und unterstützt die OpenID 1.1-Spezifikation.
Ich gebe es zu: ich habe den Überblick verloren, bei wie vielen und welchen Websites/Shops/Portalen ich mittlerweile in der einen oder anderen Form eine Anmeldung vollzogen habe. Nach mehr als 13 Jahren im World wide web verzeihe ich mir da aber, besonders da ich in den letzten Jahren dazu übergegangen bin, wichtige Accounts zu notieren beziehungsweise unwichtige/einmalige Registrationen mit einer "Wegwerf"-E-Mail-Adresse zu tätigen.
OpenID ist ein Identitätsverfahren, das (nicht nur) an dieser Stelle ansetzt: ein dezentrales, benutzerorientiertes Identitätssystem. Dezentral heißt in dem Fall, dass man nicht auf einen Anbieter festgelegt ist, dem man seine Benutzerdaten anvertraut. Man kann sogar seinen eigenen OpenID-Server betreiben. Das benutzerorientierte bei OpenID ist die Tatsache, dass der Benutzer Herr über seine Accounts bleibt. Er entscheidet, welchen Seiten er welche Informationen zur Verfügung stellt und kann auch im Nachhinein diesen das Vertrauen entziehen.
Wie funktioniert OpenID?
Man entscheided sich für einen OpenID-Server-Anbieter (z.B. MyOpenID), erstellt seinen Account und bekommt seine OpenID-URL zugewiesen (http://username.myopenid.com). Mit dieser URL kann man sich auf Webseiten, die OpenID unterstützen, anmelden. Einfach die URL in das dafür vorgesehene Formular eingeben und abschicken. Man wird zum OpenID-Server-Anbieter weitergeleitet und muss sich dort authentifizieren und wird gefragt, ob man der anfragenden Seite die Accountdaten übermitteln soll. Bestätigt man dies, wird man wieder zurück zur Seite, bei der man sich anmelden möchte, geleitet. Hat man zusätzlich gesagt, dass man ab sofort dieser Seite vertrauen kann, muss man bei künftigen Besuchen beim Login nur noch seine OpenID-URL angeben. Die Authentifizierung findet dann automatisch statt.
Vor- und Nachteile von OpenID
Größter Vorteil von OpenID ist das Single-Sign-On-Verfahren, mit dem man sich nach einmaliger Authentifizierung zukünftig nicht mehr um die Identifizierung seines Accounts kümmern muss. Die offene, dezentrale Struktur bietet sogar jedem die Möglichkeit eigene OpenID-Server zu betreiben.
Und darin sehe ich auch die größte Schwachstelle des Systems. Nicht nur aus Anwendersicht, sondern auch als Webseitenbetreiber, der OpenID zur Authentifizierung einsetzt: Identitätsdiebstahl. Da man bei der Anmeldung zur Website seines OpenID-Servers weitergeleitet wird, könnten bösartige Personen auf die Idee kommen, eine exakt gestaltete Kopie dieser Seite anzulegen, um Username und Passwort mit einer sogenannten Phishingattacke zu stehlen. Und mit diesen Daten hat man Zugriff auf alle Zugänge in diesem OpenID-Account. Als Seitenbetreiber ist man auf der anderen Seite "gezwungen" den übermittelten Daten zu vertrauen. Ich habe mich jetzt testweise noch nicht bei vielen Seiten über OpenID angemeldet, aber bisher hat keine Seite mittels Double-Opt-In-Verfahren die Richtigkeit meiner E-Mail-Adresse überprüft.
Weitere Probleme sehe ich in der Usability (man wird bei der Anmeldung auf eine andere Seite weitergeleitet, die man zwar kennt, aber man ist es doch gewöhnt während der Registrierung auf einer Seite zu bleiben), der Privatsspähre (was hindert meinem OpenID-Serverbetreiber daran, Bewegungsprofile von mir anzulegen?) und der Abhängigkeit in der Verfügbarkeit (wenn mein OpenID-Server nicht erreichbar ist/nicht mehr existiert, habe ich keinen Zugriff auf meine Identitäten).
OpenID und TYPO3
TYPO3 hat mit der Extension naw_openid eine funktionierende Integration des OpenID-Systems. Die Extension regelt die Anmeldung, die Verbindung des OpenID-Accounts mit schon bestehenden Frontendusern sowie die Erstellung von neuen Usern. Beim Testen ist mir nur aufgefallen, dass in der aktuellen Version (0.1.5) nicht die Abhängigkeit mit der Extension sr_feuser_register integriert ist. Ich hatte das Problem, dass mein Test-OpenID-Account den Parameter Gender übergeben hat, dieses Feld sich aber nicht in der Standard-fe_user-Tabelle befindet. Erst mit der Installation von sr_feuser_register war es mir möglich, bei der ersten Anmeldung auch einen neuen Useraccount in TYPO3 anlegen zu lassen.
Update: auf der Website von Thomas gibt es mehrere Screencasts, die sich mit OpenID und der Integration in TYPO3 beschäftigen. Sehenswert.