Zum Inhalt springen
Der Guide für ein smartes Leben.
So gewinnen Sie neue User

Teil 3: Identitätsmanagement und Authentifizierung; OpenID

Autoren: Redaktion pcmagazin und Anna Kobylinska • 21.8.2009 • ca. 1:55 Min

Um den Single-Sign-On-Prozess zu beginnen ruft das Auth_OpenID_Consumer-Objekt die begin()-Methode auf und übergibt dabei die OpenID des Benutzers. Der Rückgabewert dieser Methode ist ein Auth_OpenID_AuthRequest-Objekt (die Authentifizierungsanfrage). Die redirectURL()-Methode wird mit zwei Argu...

Um den Single-Sign-On-Prozess zu beginnen ruft das Auth_OpenID_Consumer-Objekt die begin()-Methode auf und übergibt dabei die OpenID des Benutzers. Der Rückgabewert dieser Methode ist ein Auth_OpenID_AuthRequest-Objekt (die Authentifizierungsanfrage).

Die redirectURL()-Methode wird mit zwei Argumenten aufgerufen:

Das erste Argument ist die URL, die verwendet wurde, um Ihre Website gegenüber dem OpenID-Provider zu identifizieren. Das zweite Argument ist die URL, anhand deren der OpenID-Provider nach der erfolgreichen Authentifizierung die Kontrolle zurückgeben soll. Der Rückgabewert von redirectURL() ist eine URL-Textzeichenkette, die benutzt wird, um den User zu der OpenID-Provider-Website zu führen.

Identitätsmanagement und Authentifizierung
OpenID-gestützte Anmeldung bei Wikitravel.org: Das gewohnte Anmeldeformular muss übergangen werden.
© Archiv

Also übergibt der Open ID-Consumer die Kontrolle an den OpenID-Provider. Der Provider trägt nun die Verantwortung dafür, dass der Benutzer identifiziert wird. Sobald dieser Prozess abgeschlossen ist, verweist der OpenID-Provider den Browser des Users wieder zurück an jene Adresse, die als zweites Argument an die redirectURL()-Methode übergeben wurde - in unserem Beispiel oid_return.php. Der OpenID-Provider kann auch andere Daten des Benutzers an den OpenID-Consumer übergeben, Letzteres geschieht mit der Zustimmung des Benutzers.

Die Auswertung der Antwort vom OpenID-Dienstleister erfüllt das PHP-Skript oid_return.php:

<?php
require_once "Auth/OpenID/Consumer.
php";
require_once "Auth/OpenID/FileStore.
php";

Nach Einbinden der nötigen PHP-Dateien wird eine neue PHP-Sitzung geöffnet:

session_start();

Jetzt muss die Ablage zum Speichern von OpenID-Daten und ein Auth_OpenID_Consumer-Objekt erzeugt werden:

$store = new Auth_OpenID_FileStore
('./oid_store');
$consumer = new Auth_OpenID_Consumer
($store);

Um jetzt die Antwort des OpenID-Dienstleisters zu verwerten, wird die complete()-Methode des Objektes aufgerufen:

$response = $consumer->complete(
'https://consumer.blog.de/oid_return.php');

In Abhängigkeit von der Antwort des Open ID-Dienstleisters erhält die Sitzungsvariable den Boolschen Wert true oder false:

if ($response->status == Auth_
OpenID_SUCCESS) {
$_SESSION['OPENID_AUTH'] = true;
}
else {
$_SESSION['OPENID_AUTH'] = false; }

Schließlich erfolgt die Umleitung auf eine Webseite mit beschränktem Zugriff:

header('Location:
restricted.php');?>

Zugriffskontrolle auf Webcontent

Das Objekt Auth_OpenID_ConsumerResponse repräsentiert hierbei die Antwort des OpenID-Providers auf die Aufforderung zur Authentifizierung des Benutzers. Es kommen hierbei vier Codes infrage:

Auth_OpenID_SUCCESS entspricht einer Erfolgsbestätigung; • Auth_OpenID_FAILURE bedeutet, dass die Authentifizierung fehlschlug; • Auth_OpenID_CANCEL wird dann ausgegeben, wenn die Authentifizierung beim OpenID-Provider durch den Benutzer abgebrochen wurde; • Auth_OpenID_SETUP_NEEDED lässt darauf schließen, dass der OpenID-Server eine nicht-interaktive Authentifizierung durchführen sollte, diese jedoch nicht abschließen konnte.

Anhand der Sitzungsvariable $_SESSION['OPENID_AUTH'] kann der Server mit einem kleinen Skript beim Zugriff auf jede einzelne Webseite erkennen, ob der Benutzer angemeldet wurde oder nicht, und ihm entsprechend den Zugriff gewähren oder verweigern.