Ich versuche gerade, mich durch die technischen Spezifikationen von OpenID Authentification 1.1 zu wühlen, um herauszufinden, wie das konkret funktioniert, was man tun kann, um den OpenID-Login möglichst bequem zu gestalten und - was die Gefahren von dezentralem Identity-Management ist.
Funktionsweise
(In dem Beispiel ist www.looocal.com die Seite, auf der man sich einloggen will, und sebastian.moser.name der OpenID-Provider, bei dem meine ganzen Logins gespeichert werden.)
- Ich gehe auf www.looocal.com
- Ich klicke auf “Einloggen”
- Ich sehe das OpenID-Formularfeld mit dem OpenID-Icon.
- Ich gebe sebastian.moser.name ein
- Ich werde auf den OpenID-Provider weitergeleitet und dort gebeten, mein Passwort einzugeben.
- Ich will mich das erste Mal auf www.looocal.com einloggen, deshalb werde ich gefragt, auf welche meiner Daten, die unter sebastian.moser.name gespeichert sind, ich www.looocal.com Zugriff geben will. (Ich sehe auch, welche Datenfelder an www.looocal.com gesendet werden müssen.)
- Ich erlaube www.looocal.com den Zugriff auf die Daten, die gebraucht werden, und klicke auf “Weiter”.
- Ich werde auf www.looocal.com zurück geleitet und bin eingeloggt.
Wichtig ist hier, dass das Passwort immer erst auf der Seite des OpenID-Providers eingegeben wird, nie auf der Homepage, auf der man sich einloggen/anmelden will.
Usability
Logischerweise muss man die Seite des OpenID-Providers besuchen, um sich auf einer Seite anzumelden, die OpenID verwendet. Das ist aber eigentlich ziemlich kacke, weil man dadurch das User Interface des Projekts, das man besuchen wollte, verliert.
Um das zu vermeiden, wäre es eine Möglichkeit, das Login-Fenster des OpenID-Providers in einen IFrame zu laden, der mittels JavaScript und einer halbtransparenten PNG-Grafik über die restliche Seite geblendet wird.
Damit verhindert man zwar nicht, dass die OpenID-Seite völlig anders aussieht als beispielsweise www.looocal.com, aber wenigstens merkt das zukünftige Mitglied, dass der ganze Prozess mit www.looocal.com zu tun hat.
Eine andere Möglichkeit wäre auch, den OpenID-Provider in ein Popup-Fenster zu laden, das automatisch wieder geschlossen wird, sobald der Login-Vorgang abgeschlossen ist.
Das wäre technisch einfacher, ist aber weniger elegant.
Gefahren
Wenn auf nur einer einzigen Seite die Identitäten für viele verschiedenen Seiten gespeichert werden, ist diese Seite natürlich um so mehr anfällig für Phishing-Attacken. Das ist das große Problem am grundsätzlichen OpenID-Konzept, da gibt’s nichts zu beschönigen.
Die Lösung sind zwei verschiedene Ideen:
- Personalisierte Login-SeiteDie Seite wird mit verschiedenen Dingen personalisiert, zum Beispiel einem Profilfoto (Das seinerseits wieder von den verschiedenen Seiten verwendet werden könnte…), Einfärbung der Loginseite, etc. Die MySpaceifizierung des Identity Managements, sozusagen.
- Browserbasiertes OpenIDWenn ich das Identity Management nur noch Browserbasiert mache, mit einer UI, die als Add-On in die Browser integriert wird, umgehe ich nicht nur das Phishing-Problem weitgehend, sondern auch das Problem des unterschiedlichen User Interfaces.
Die grafische Oberfläche des Browsers ist völlig unabhängig von den Websites, es wird dabei nichts verwechselt, dadurch gäbe es auch weniger Verwechslungen.
Die Kommunikation mit dem OpenID-Provider könnte dann rein über eine API ablaufen.
Damit das realisierbar ist, müssten aber alle Browser-Hersteller zusammen arbeiten. Bei einer offenen API sehe ich kein Problem bei Mozilla, Opera und allen anderen Alternativ-Browsern, die Frage ist aber, ob Microsoft ein Plug-In zur Verfügung stellen würde, und die Frage ist auch: Wie schnell?OpenID wird jetzt zu einem Trend - wenn Microsoft bis zum Internet Explorer 8 wartet, bis OpenID fix integriert wird und es ca. 2 Jahre dauert, bis sich die Version dann auch breitflächig durchgesetzt hat, hat OpenID noch einen sehr langen Weg zur breiten Marktdurchdringung vor sich…
Windows CardSpace ist meiner ersten Erkenntnis nach ein rein Client-seitiges Authentifizierungs-System. Ich werde natürlich auch darüber schreiben.
PS: Über ein Thema zu schreiben hilft ungemein viel dabei, ein Problem oder eine Technologie besser zu verstehen. Sollte jeder Programmierer manchmal machen.