Skip to content

OpenID: Mit einem Login überall anmelden

Der altbekannte Weg, sich bei einem Service einzuloggen, funktioniert mit einem Paar aus Benutzername und Benutzerpasswort. Wenn man für jeden Service ein anderes Passwort benutzt, ist dies hinreichend sicher. Hier liegt aber genau ein Problem: Da man sich normaler Weise nicht alle Passwörter merken kann, neigt man schnell dazu, ein Standard Passwort zu haben, das man überall benutzt.

Um dieses Problem zu beheben, wurden so genannte Single Sign-On Services erfunden. Diese funktionieren so, dass man sich nur bei diesem einen Single Sign-On Service (dem so genannen Provider) einloggen muss, und weitere Services (die Consumer) sich dann das Login und die Beschreibung des Benutzers von dort abholen. Der Vorteil ist klar: Man muss sich nur ein einziges Name / Passwort Paar merken und sich auch nur einmal einloggen.

Einführung

Der erste Single Sign-On Service dieser Art, der mir bekannt wurde, war 1999 der Microsoft .NET Passport. Damals war das Misstrauen in einen Login Service recht hoch, der von einer einzigen kommerziellen Firma betreut wird. So entwickelte sich ab 2005 ein weiterer Quasi Standard, die OpenID. Das OpenID Protokoll kann von beliebigen Providern angeboten werden, es ist dezentral aufgebaut. Man kann z.B. seinen Google Account als OpenID Provider benutzen und inzwischen sogar seinen .NET Passport, so man einen angelegt hat.

Der Vorteil von OpenID ist, dass es nicht auf einen speziellen Anbieter festgelegt ist (so wie .NET Passport damals). Jeder Service, der ein Login unterstützt, könnte auch als OpenID Provider fungieren. Man hat hier also die freie Wahl, welchem Service man vertrauen möchte, und kann sogar so weit gehen, einen eigenen OpenID Service aufzusetzen.

Nebenbei dient OpenID auch nicht nur als schlichtes Login. Man kann alle möglichen Informationen für sich hinterlegen (EMail, Adresse usw), die OpenID Consumer abfragen können (nachdem man es ihnen erlaubt hat). Wenn man sich bei einem Service also gleich mit einer OpenID registriert, fällt dadurch das lästige Ausfüllen der Formulare flach oder wird zumindest minimiert.

Da OpenID dezentral ist, loggt man sich bei den Services mittels Angabe seiner persönlichen OpenID URL ein. Mit Hilfe dieser kann der Consumer dann die ID des Benutzers abfragen. Seine persönliche OpenID URL bekommt man von dem für sich gewählten OpenID Provider mitgeteilt, oft ist es der Link auf das eigene Profile.

Eine OpenID einrichten

Services, die OpenID als Login oder zum erzeugen eines neuen Accounts anbieten, haben eine Eingabe, die meist wie folgt aussieht:


Diese Eingabe erwartet die OpenID URL des Benutzers. Wie bekommt man nun eine solche? Nun, vermutlich hat man schon eine. Wenn man z.B. einen Google Account hat, kan man folgende URL öffen.

http://google.com/profiles/me

Über diese wird die eigene Profil Seite bei Google geöffnet. Bei mir ist das z.B.

https://plus.google.com/100089461645597573094/posts

Diese kann als OpenID URL benutzt werden. Ist man bereits bei Google eingeloggt, so wird sie als OpenID erkannt und der entsprechende Service kann weiter machen, ansonsten wird man zu Google weiter geleitet und muss sich dort erst einloggen.

Ein OpenID Provider ist natürlich ein Service, der genau erfährt, wann welcher Benutzer sich bei welchem Service anmelden wollte. Das ist sicherlich ein guter Grund, warum auch Google eine OpenID anbietet. Es reichert das erhebliche Wissen, das Google sowieso schon über seine User hat, um weitere Informationen an. Wer das nicht will, aber nicht gleich einen eigenen OpenID Server einrichten will / kann, dem würde ich empfehlen einen Provider zu benutzen, der immerhin nur OpenID anbietet und somit nicht die Informationen mit anderen vermischen kann.

Ein solcher Provider ist myOpenID.com.

myOpenID.com

Bei myOpenID.com kann sich jeder kostenlos eine OpenID erstellen, man kann dort sogar unterschiedliche Identitäten hinterlegen, die z.B. unterschiedliche Emails, Aufenthaltsorte oder Benutzernamen an den OpenID Consumer übermitteln. Die Registration bei OpenID sollte recht selbst erklärend sein.

Vor allem sollte man seinen Benutzernamen bei myOpenID mit Bedacht wählen, denn dieser wird nachher Teil der von myOpenID für Logins zur Verfügung gestellten URL sein. Mein Benutzername bei myOpenID ist brockhaus, meine URL, die mir myOpenID zur Verfügung stellt, ist somit http://brockhaus.myopenid.com.

Wer sich jetzt vielleicht darüber wundert, dass ich meine OpenID hier so bekannt gebe: Das schöne ist ja eben, dass man diese nicht (im Gegensatz zu normalen Logins) geheim halten muss. Wer sie benutzt, muss sich bei myOpenID einloggen, damit sie für einen Consumer lesbar wird, und zwar mit meinem Login bei myOpenID. Letzteres muss ich natürlich dann geheim halten.

OpenID Delegation

Die OpenID URL bei myOpenID ist ja noch einigermaßen merkbar. Aber weißt Du noch die URL, die Du benutzen kannst, wenn Du einen Google Account hast? ;-)

Durch einen Trick ist meine eigene OpenID URL inzwischen eine, die ich mir gut merken kann: Die URL meines Blogs. Das habe ich über OpenID Delegation gelöst. Bei der Delegation wird zwischen dem Consumer und dem Provider ein Delegator geschaltet. Das funktioniert so:

  • Beim Consumer (dem Service, bei dem man sich anmelden möchte) trägt man die URL des Delegators ein. In dem Fall also die URL meines Blogs.
  • Der Consumer schaut bei der URL nach, ob dies ein Provider ist. Ist dies nicht der Fall (so wie im Falle meines Blogs), so schaut der Consumer, ob er hier eine Delegations Beschreibung findet, was im Falle meines Blogs zutrifft. Wer den Code meiner Blog Seite genau ansieht, erkennt es: Hier ist meine OpenID bei myOpenID eingetragen.
  • Der Consumer erkennt dies und fragt nun bei myOpenID nach und führt das OpenID Handshake so aus, als wenn ich direkt meine URL bei myOpenID eingergegeben hätte.

Das hat nun 2 Vorteile:

Zum einen kann man so eine Delegation auf jeder beliebigen Webseite einrichten, für die man den HTML Code verändern kann und deren URL man sich gut merken kann. Es muss hier keine spezielle Funktion hinterlegt werden. In meinem Blog findet man die folgenden beiden Zeilen im Head Bereich meines HTML:

<link rel="openid.server" href="http://www.myopenid.com/server" />
<link rel="openid.delegate" href="http://brockhaus.myopenid.com" />

Dabei ist der openid.server der Dienst, der den OpenID Service zur Verfügung stellt und openid.delegate die OpenID URL, auf die man delegieren möchte. Nachdem man dieses auf seiner Webseite hinterlegt hat, kann man nun diese als OpenID URL benutzen anstatt des eigentlichen Providers.

Das geht auch mit Google. Hier wäre der (von mir selbst nicht ausprobierte sondern ergooglete) Eintrag:

<link rel="openid2.provider" href="https://www.google.com/accounts/o8/ud?source=profiles">
<link rel="openid2.local_id" href="https://profiles.google.com/[YOUR PROFILE ID]">

Der zweite Vorteil an der Delegation ist: Wenn man bei allen Services, die OpenID Logins unterstützen, immer seine eigene Seite als URL angegeben hat, fällt ein Wechsel auf einen anderen OpenID Provider viel leichter. Man muss dann nicht bei allen Services die OpenID Verbindung erneuern, sondern ändert einfach nur die Delegation im HTML seiner Seite.

Fazit

OpenID ist schon älter, hat sich etabliert und wird als Quasi Standard für Single Sign-Ons angesehen. Es gibt viele Services, die dieses Handshake unterstützen. Ich verwende es schon länger überall dort bevorzugt, wo es mir angeboten wird, denn gerade mit einer gut zu merkenden Delegation ist es sehr einfach zu benutzen und erspart einem die ewige Suche und das Einprägen von neuen sicheren Passwörtern.

Nebenbei kann man sich auch in das Serendipity Blog über OpenID einloggen. Dazu muss man das OpenID Plugin installieren. Dieses ist in Spartacus noch etwas "beta", aber ich sitze gerade daran, es zu erneuern und besser nutzbar zu machen. Doch davon soll dann ein weiterer Artikel berichten.

Trackbacks

Grischa

Grischa am : Das S9Y OpenID Plugin

"Das S9Y OpenID Plugin" vollständig lesen
Kurze Meldung: Wie bereits angekündigt, habe ich ein wenig am OpenID Plugin von Serendipity geschraubt. Wenn ich mein eigene erste Reaktion und die im Serendipity Forum beschriebenen auf das Plugin beobachte, dann war das größte Problem wo
Grischa

Grischa am : Single Sign-On mit BrowserID

"Single Sign-On mit BrowserID" vollständig lesen
Wo ich gerade schon so schön bei den Single Sign-Ons bin: Bei Robert habe ich zufällig einen Single Sign-On Service entdeckt, der mir bisher noch völlig unbekannt war: BrowserID. Eine der von Robert getesteten Galerien unterstützte das
Grischa

Grischa am : S9Y OpenID Plugin, Nachschlag

"S9Y OpenID Plugin, Nachschlag" vollständig lesen
Nach einer interessanten Idee, die mir @bauigel in einem Kommentar postete, habe ich mich noch mal an das OpenID Plugin ran gesetzt. Es gibt einige OpenID Provider, bei denen die OpenID URL unabhängig vom Benutzers immer die selbe ist. Für diese
Grischa

Grischa am : Einen eigenen OpenID Server einrichten

"Einen eigenen OpenID Server einrichten" vollständig lesen
Nachdem in letzter Zeit das Login über myOpenId.com recht zäh von statten ging und ich das sowieso noch ausprobieren wollte, habe ich mich mal ran gesetzt und meinen eigenen OpenID Server/Provider aufgesetzt. Was OpenID ist, wozu man es einsetzt
paradonym

paradonym am : paradonym via Twitter

"paradonym via Twitter" vollständig lesen
@ubernauten http://t.co/E06XE13O

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Alwin

Alwin am :

Vielen Dank für diesen super Beitrag!

Bislang habe ich immer viel von OpenID gehört und einige Artikelüberschrifen darüber gesehen. Aber es erschien mir immer zu kompliziert, mich damit auseinander zu setzen.

Das hier habe ich verstanden und finde es sinnvoll und interessant.

Grischa

Grischa Auf Twitter lesen: am :

Ui! Das freut mich sehr zu lesen! Ich habe versucht, es nicht zu sehr technisch zu erklären (jedoch einiges zumindest anzureißen, wie z.B. die Delegation).

Artikel, die ich dazu gelesen hatte, waren vor allem technisch, beschrieben, warum OpenID sicher ist und wie das im Detail intern funktioniert. Da ich aber vermute, dass der normale Benutzer das alles nicht wissen muss, habe ich es einmal so versucht, war mir aber nicht sicher, dass es gelungen ist. Dass Du explizit schreibst, dass Du es nun verstanden hast, freut mich somit sehr. :-)

OpenID ist - einmal eingerichtet - in der Tat super simpel. Auch das Einrichten einer ID (z.B. bei myOpenId) ist kein Hexenwerk, das unterscheidet sich nicht wirklich von der Registrierung bei anderen Services im Web. Somit kann das eigentlich jeder problemlos nutzen.

Grischa schrieb auch: Unity: Ich will nicht mehr zu Gnome 2 zurück

Dougi

Dougi am :

Hallo Grischa

echt klasse und für jedermann verständlich beschrieben und die Funktion der Delegation finde ich sehr hilfreich. Werde ich sofort umsetzen.

Gruß

Dougi

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Dieses Blog erlaubt Dir, Audio Kommentare über audioboo.fm hinzuzufügen. Erstelle einen neuen Boo und gib hier den Link auf die Seite Deines Boos ein.
record
Wenn Du Deinen Twitter Namen eingibst wird Deine Timeline in Deinem Kommentar verlinkt.
Bewirb einen Deiner letzten Artikel
Dieses Blog erlaubt Dir mit Deinem Kommentar einen Deiner letzten Artikel zu bewerben. Bitte gib Deine Blog URL als Homepage ein, dann wird eine Auswahl erscheinen, in der Du einen Artikel auswählen kannst. (Javascript erforderlich)
(Bedingung: 1 Kommentare geschrieben)
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
tweetbackcheck