OpenID – Einfache Authentifizierung für 08/15 Webservices

545 Wörter 3 Minuten Lesezeit

OpenID entwickelt sich spätestens seit dem Engagement von Yahoo, MySpace und Co. langsam zum Standard, aber auch die Gegner von OpenID finden immer mehr Argumente dagegen. Während der Einsatz von OpenID aufgrund der möglichen Sicherheitsrisken für essentielle Applikationen ala Telebanking eher bedenklich ist, kann man es für die typischen 08/15 Webanwendung wirklich empfehlen.

Warum? Während man sich früher für jedes Forum, für jede Webpplikation sowohl User als auch Passwort und möglicherweise sogar auch eine andere Emailadresse merken musste, genügt es nun, bei allen Websites, die OpenID unterstützen, die eigene URL vom OpenID Identity Provider zu wissen, bzw. im einfachsten Fall (über entsprechende HTML Tags im Header) nur die URL seiner Website/Blog/etc. anzugeben.

Aber einen Schritt zurück – was ist OpenID? Grob gesagt (Details siehe Wikipedia) bietet OpenID eine Authentifizierung via einer URL. Einer URL? Ja, im Gegensatz zu den üblichen Authentifzierungen via Benutzername/Passwort kann man hier eine URL angeben – allerdings muss man nachweisen, daß man für diese URL verfügungsberechtigt ist – eben auch z.B. via Login/Passwort, aber eben nur mehr mit einem Benutzer gegenüber der URL und nicht gegenüber einem Webdienst.

In der Praxis schaut das so aus, dass man für einen Login seine OpenID URL angibt, und der Loginprozeß eben über diese URL durchführt wird. Die Authentifizierung selbst passiert auf dieser URL, und wenn dieser Prozeß erfolgreich ist, wird dies von der URL an das Webservice zurückgemeldet.

Doch wie kommt man nun zu einer OpenID?

Ein wichtiger Pluspunkt am Konzept von OpenID ist, dass es dezentral funktioniert, und somit jede x-beliebige URL ein eigener Identity Provider sein kann. Während es bereits einige große OpenID Identity Provider (z.B. certifi.ca aber auch Verisign) gibt und inzwischen auch andere große kommerzielle Firmen auf den Erfolgszug aufspringen (ein Yahoo oder MySpace Account inkludiert bereits eine OpenID, aber auch z.B. das Kundenportal des Mobilfunkers Orange) ist man nicht darauf angewiesen und somit auch nicht dazu gezwungen, seine persönlichen Daten wiedereinmal an eine Firma in Übersee zu übermitteln. Mit einem Plugin kann es auch das eigene WordPress-Blog sein, aber der einfachste Weg ist ein kleines, aber effektives PHP Skript – phpMyID.

Für seinen eigenen, ganz persönlichen OpenID Identitiy Provider genügt es, neben der MyID.php Datei von phpMyID folgenden Code mit persönlichen Daten auf seinem Webspace zu speicher – voilà, fertig ist die digitale ID und bereit zum Einsatz.

<?php

$GLOBALS['profile'] = array(
    'auth_username' =>  'michi',
    'auth_password' => '76c97fb2716f6ff5ede111bf76123cb8',
    'auth_realm'    => 'MeinePrivateOpenID',
    'paranoid'      => true
);

$GLOBALS['sreg'] = array (
    'nickname'  => 'michi',
    'email'     => 'michi@mustermann.tld',
    'fullname'  => 'Michi Mustermann',
    'dob'       => '1970-12-31',
    'gender'    => 'M',
    'postcode'  => '22000',
    'country'   => 'US',
    'language'  => 'en',
    'timezone'  => 'America/New_York'
);`

require_once ('MyID.php');

Das komplizierteste ist die Generierung vom Passwort – einem MD5 Hash über user:realm:passwd, was aber in einer Linux- oder Cygwin-Shell ganz einfach mit $ echo -n 'username:realm:password' | openssl md5 erzeugt werden kann, oder in einem PHP Skript mit einem echo md5('username:realm:password'); und fertig ist die eigene OpenID.

Fazit

Eine OpenID kann einem das Leben im Web erleichtern, gerade bei trivialen Webapplikationen wie Foren oder „unwichtigen“ Webanwendungen. Während große Anbieter diverese Komfortfunktionen anbieten, kann man gerade bei Datenschutzbedenken sich selbst mit wenig Aufwand einen eigenen Single-User OpenID Provider installieren.

Hinweis: dieser Artikel ist ursprünglich auf dem IT-Blog “intertech” (www.intertech.at) erschienen.