Archive for December, 2008

OpenWatt? OpenID! (Teil 2)

Sunday, December 21st, 2008

OpenID bietet mir nun also einen Ausweg aus dem Passwort-WirrWarr und damit eine schicke Lösung, mich auch ohne Nutzername und Passwort bei Services einzuloggen.

Leute, die sich häufiger im Internet bewegen kennen aber noch ein weiteres, zum Teil sehr nerviges Problem: Bei jeder Plattform oder Community, bei der man sich neu anmeldet, muss man immer wieder die selben Daten neu eintippen, obwohl diese sich in den seltensten Fällen ändern und ein Import von einer zentralen Stelle eine Supersache wäre. Auch hier lautet die Lösung des Problems OpenID und eine damit verbundene Registrierung.

Dafür ist es nötig, dass der OpenID-Client eine Registrierung mit OpenID unterstützt. Der User trägt dann bei der Registrierung seine OpenID ein und klickt ‘verifizieren’. Wie beim Login wird der Nutzer auf den OpenID-Provider umgeleitet und muss mit seinem Passwort seine Identität bestätigen. Beim normalen OpenID-Login ist damit alles getan und man ist schon fertig. Bei einer OpenID-Registrierung werde ich als User aber noch um einen weiteren Schritt gebeten, nämlich die Auswahl der gewünschten Daten, die ich an den OpenID-Client weitergeben möchtet.

Um dies zu vereinfachen kann ich bei einigen OpenId-Providern, wie z.B. bei myopenid.com, gleich mehrere Identitäten angeben, die sogenannten Personas. So besitze ich z.B. gleich drei Personas dort: Eine Private, eine Geschäftliche und eine Fiktive, die alle unterschiedliche Emailadressen, Profilfotos oder auch Namen enthalten.

Möchte ich mich jetzt bei einem Service per OpenID-Registrierung neu anmelden, wähle ich bei der Verifizierung eine der drei Personas aus, und die dazugehörigen Daten werden bei der Umleitung zurück zum OpenID-Client und dem damit verbundenen Server-Gespräch (siehe OpenWatt? OpenID! (Teil 2)) gleich mitgesendet. Nun sind bereits alle (oder zumindest die meisten) Registrierungsfelder vorausgefüllt. Wenn ich Glück habe und der OpenID-Client ein guter Service ist, dann wurden sämtliche Daten, die mein Provider mitgeschickt hat nach Abschluss des Registrierungsprozesses bereits meinem Profil hinzugefügt und ich spare mir das Ausfüllen. Zudem kann ich mich ab sofort immer wie gewohnt mit meiner bei der Registrierung angegebenen OpenID einloggen.

Damit das ganze reibungslos und gut funktioniert, reicht es allerdings leider nicht aus, dass der OpenID-Client blos ein OpenID-Feld in seinem Registrierungsformular hinzufügt. Beide Seiten müssen hierfür ihre OpenId-Implementierung entweder um das sogenannte sReg (Simple Registration) oder um AX (Attribute Exchange) erweitern.

Bei diesen beiden OpenID-Erweiterungen handelt es sich um Standarts, die vorgeben, wie genau der Austausch der Daten stattzufinden hat und vor allem, wie genau die einzelnen Daten bezeichnet und abgelegt sein müssen, denn ein Datenaustausch kann nur stattfinden, wenn die am Austausch beteiligten Partner die gleiche Sprache sprechen. Das heißt in unserem Fall (dem Austausch von Profilinformationen), dass der Client zum Beispiel das Email-Adress-Feld nur vorausfüllen kann, wenn er auch weiss welches von den Daten, die der Provider geschickt hat die Emailadresse ist. Ein Austausch ist demnach nur erfolgreich, wenn beide Seiten die gleiche Sprache sprechen, der Client also Simple Registration versteht, wenn der Provider Simple Registration unterstützt. Analog dazu funktioniert das mit Attribute Exchange: Beide Partner müssen Attribute Exchange unterstützen, wenn sie Daten untereinander austauschen wollen.

Das Ganze funktioniert also prinzipiell wie ein normales ‘Tauschgeschäft’ in einem Laden: Möchte ich als Kunde (Client) die gewünschte Ware mit nach Hause nehmen, dann ist es sehr förderlich, wenn ich das Zahlungsmittel (Standart) dabei habe, was der Verkäufer (Provider) auch akzeptiert. Besonders gut klappt der Kauf dann noch, wenn der Verkäufer Euro möchte, ich ihm auch Euro geben kann, denn sonst wird er Probleme haben zu wissen, was das, was ich ihm gegeben habe wert ist (->Client und Provider haben entweder beide sReg oder AX implementiert und haben damit keine Probleme, zu wissen, was der andere geschickt hat).

Gott sei dank kann ich an dieser Stelle beruhigend sagen: Auch dies sind wieder alles Dinge die im Hintergrund passieren und von denen der normale User nichts mitbekommt, sondern lediglich davon profitiert, ohne irgendetwas davon verstanden haben zu müssen.

Allgemein kann man noch sagen, dass Simple Registration die eher abgespecktere Variante der beiden ist, es werden also nicht soviele Daten ausgetauscht. Deswegen hat man irgendwann Attribute Exchange entwickelt, welches den Austausch von weitaus mehr Informationen unterstützt. Möchte jemand wissen, welche Daten von welchem Standart unterstützt werden können, findet er hier einen Überblick.

Der Vollständigkeit halber möchte ich an dieser Stelle noch die dritte Möglichkeit erwähnen, in deren Format man bei einer OpenID-Registrierung Profildaten austauschen kann: OpenID mit hcard. Auf Microformate und hcard möchte ich allerdings an dieser Stelle nicht weiter eingehen, kommt bestimmt später noch. Aber wen es interessiert, der sollte unbedingt hier (deutsch) und hier (englisch) weiterlesen. Der Ablauf insgesamt ist zudem auch gleich wie oben beschrieben.

Beim nächsten mal werde ich ein paar OpenID-Provider vorstellen und eine kleine Liste mit Services zusammenstellen, bei denen man sich mit OpenID einloggen oder sogar registrieren kann.

PS: Leider habe ich es immernoch nicht geschafft, meinen eigenen OpenID-Login ans laufen zu bekommen. Schätzungsweise ist auch 1und1 Schuld und ich werde ihnen im neuen Jahr mal schreiben um nachzufragen, was da los ist. Deswegen verzeihen mir bitte die tausend und abertausend Leute, die hier kommentieren den Mißstand :)

OpenWatt? OpenID! (Teil 1)

Sunday, December 14th, 2008

Möchte man OpenID mit etwas aus dem realen Leben vergleichen fällt mir spontan das Geldabheben mit einer Kredit- oder EC-Karte ein, womit ich bei jedem erdenklichen Geldautomaten mit immer den gleichen Zugangsdaten auf mein Konto und damit auf mein Geld zugreifen kann.

Es wäre ziemlich dämlich, wenn ich für jeden Geldautomaten dieser Erde eine extra Kreditkarte mit einem Benutzernamen und einer PIN bekommen würde. Dies würde ziemlich schnell ziemlich unpraktikabel, denn spontan wäre hier gar nichts mit Geld abheben und ich müßte mir verdammt viele PINs merken, damit ich nicht an jedem Ort ausserhalb meines Zuhauses völlig mittellos dastehe. Um sowas zu umgehen, bekomme ich von meinem Bank- oder Kreditkarteninstitut eine Karte mit einer PIN, also quasi eine Identität, die es mir ermöglicht, mich an so gut wie jedem Geldautomaten als IchSelbst auszuweisen und an mein Geld zu kommen.

Während dies im realen Leben wunderbar funktioniert scheint dies im virtuellen Internetleben noch nicht ganz so gut zu gehn. Bei jedem erdenklichen Dienst wird von mir ein möglichst immer unterschiedliches Passwort mit einem Benutzername verlangt, um mich als IchSelbst auszuweisen. Da man Passwörter möglichst nicht notieren soll, bin ich eine potentielle Kanditatin dafür, ständig irgendwelche Passwort-vergessen-Funktionen zu klicken oder gar ganz fatal, immer das gleiche Passwort zu benutzen. Gott sei dank halte nicht nur ich dies für einen untragbaren Zustand und schlaue Leute haben sich einen Mechanismus ausgedacht, der das Passwort-Wirrwarr in Zukunft überflüssig macht: die OpenID.

Wie beim Kreditkarteninstitut erhält hierbei der User eine einzigartige URL als Internetidentität. Um diese zu bekommen muss er sich lediglich bei einem sogenannten OpenID-Provider, wie z.B. www.myopenid.com registrieren. Ratsam ist, für diesen Provider ein möglichst sicheres Passwort zu finden, was ich ok finde, denn ich muss mir in Zukunft ja nur noch dieses merken. Das Passwort wäre dann zu vergleichen mit meinem Karten-PIN. Nach meiner Registrierung also erhalte ich automatisch meine neue und schicke OpenID. Bei myopenID lautet diese immer: http://BENUTZERNAME.myopenid.com.

Möchte ich mich nun bei einem Service (der Geldautomat) einloggen, muss ich hierfür einfach meine OpenID in das dafür vorgesehene Login-Feld eingeben. Eine Plattform wo dies gut funktioniert ist z.B. Ma.gnolia.com. Die Services, die einen OpenID-Login ermöglichen nennt man OpenID-Client, OpenID-Consumer oder auch OpenID-Relaying-Party.

Nachdem ich nun also meine OpenID eingetragen habe und den absenden-Button geklickt habe beginnen im Beispielfall Ma.gnolia als OpenID-Client und MyOpenID als OpenID-Provider im Hintergrund eine Diskussion:
Magnolia: “Hallo myopenid, ich bins magnolia. Ich bin ein Openid-Client und hier möchte sich jemand mit einer myopenid-openid bei mir einloggen. Die ist zwar bei mir hinterlegt, aber kann ich dem User vertrauen?”
myopenid: “Hallo magnolia, ich sehe, du bist in der Tat ein OpenID-Client. Dann lass doch mal schauen, wer sich da bei dir einloggen möchte und ob es auch der ist, der die OpenID bei dir hinterlegt hat. Lass mal die OpenID sehn.”
Von dieser Konversation bekommt der User natürlich zunächst nichts mit, denn das ist das nötige Handshake der Server, um einen Reibungslosen Login zu gewährleisten. Nachdem also der myopenid-server dem magnolia-server sein ok gegeben hat, wird der User auf die myopenid-login-Seite umgeleitet. Hier gebe ich nun mein Myopenid-Passwort ein und bestätige damit, dass ich der zugehörige Nutzer zur von Magnolia gesendeten OpenID bin, magnolia vertraue und mich gerne dort einloggen will. Nun führen die Server ihre Unterhaltung fort:
myopenid: “He magnolia, die snirgel hat die OpenID mit ihrem Passwort bestätigt. Die hat gemeint, sie ist es wirklich und das sie sich gerne bei dir einloggen will. Kannst also reinlassen”
magnolia: “Super, weiß ich bescheid, ist eingeloggt.”
Nach diesem Gespräch, wovon ich natürlich wiederum nichts mitbekommen habe, werde ich wieder zurück zu magnolia geleitet, wo ich dann eingeloggt bin.

Kritiker könnten jetzt meinen, dass das ja nicht wirklich was gebracht hat, denn ich mußte mich ja trotzdem irgendwo einloggen und ein Passwort eintragen. Was ist denn daran jetzt so toll.
Richtig einloggen mußte ich mich tatsächlich, doch habe ich erstens bei Magnolia selbst nie ein Passwort angegeben, sondern lediglich einmal meine OpenID hinterlegt. Klar hier hinkt das Beispiel mit dem Geldautomaten und man muss tatsächlich beim OpenID-Client immer seine OpenID angeben, denn der Client muss beim Login der OpenId ja auch einem Nutzer zuordnen können. Zweitens läuft dieser Prozess mit jedem OpenID-Client gleich ab und ich muss mir also nur EIN Passwort merken, und zwar das meines OpenID-Providers.
Ich beweise also nicht mehr mit einer Nutzername/Passwort - Kombination, wer ich bin, sondern der OpenID-Provider übernimmt dies für mich, denn ich habe ihm ja bestätigt, dass ich es tatsächlich bin, die zur angefragen OpenID gehört und er dies auch dem Client bestätigen kann.

Insgesamt hört sich das alles noch sehr kompliziert an, allerdings gibt es zusammenfassend gibt es zu sagen, dass man als User nur genau 2 Schritte von einem schön einfachen OpenID-Login entfernt ist:
1. Einmaliges Anlegen eines OpenID-Account bei einem OpenID-Provider
2. OpenID beim gewünschten und natürlich auch teilnehmenden Service hinterlegen

Ob Ihr Euch bei einem Service mit einer OpenID einloggen könnt erkennt Ihr an diesem Icon: openid

In OpenWatt? OpenID! (Teil 2) werde ich etwas näher auf den Unterschied zwischen OpenID-Provider und OpenID-Client eingehen und ein paar Services dazu vorstellen.

P.S.: Ich bitte zu verzeihen, dass der OpenID-Login bei meinen Blogkommentaren gerade noch nicht geht. Ich arbeite dran und reiche das in den nächsten Tagen nach. Ich weiss, peinlich, peinlich.

Es ist im Computer drin

Saturday, December 13th, 2008

Genau das ist es eben nicht und aus diesem Grund bin ich zu der Entscheidung gekommen, die Sachen, die mir in meinem Web-Geek-Developer-Alltag so begegnen an diese Stelle auch für normal Sterbliche begreifbar zu machen. In den letzten Monaten bin ich mit vielen Dingen konfrontiert worden, bei denen ich dankbar gewesen wäre, es hätte jemanden gegeben, der es mir auf einer Abstraktionsebene erklärt hätte, die man auch verstehen kann, ohne sich tage- und wochenlang damit zu beschäftigen. Aber so war es nicht Ständig verbrachte ich viel Zeit damit schön langeweilige und trockene und vor allem stets englische Dokumentationen zu lesen. Aber muß ich tatsächlich erst das Manual lesen, um zu wissen, was eine OpenID ist, wofür OAuth da ist und wat genau wir und vor allem der User jetzt mit den ganzen schönen Dingen anfangen können. Klar, von mir als Entwicklerin ist es natürlich nicht zu viel verlangt, mich in diese technischen Dinge einzuarbeiten, dass sehe ich auch durchaus ein. Allerdings ist es glaub ich auch nicht zu viel verlangt, einen ersten, vollkommen simplen Einstieg in die Materie zu bekommen.

Aber Ihr wißt ja, wies is: Wenn man nicht alles selbst macht. Und deswegen werd ichs wohl selbst machen :)

Beginnen werde ich in den nächsten Tagen zunächst mit der Mutter des offenen Webs: Der OpenID. Ist den meisten warscheinlich schonmal begegnet und bestimmt wissen auch einige, was es ist, und was man damit machen kann. Aber ohne OpenID geht gar nix…also..packen wirs an…