Teil 3: Identitätsmanagement und Authentifizierung; OpenID
- Identitätsmanagement und Authentifizierung; OpenID
- Teil 2: Identitätsmanagement und Authentifizierung; OpenID
- Teil 3: Identitätsmanagement und Authentifizierung; OpenID
- Teil 4: Identitätsmanagement und Authentifizierung; OpenID
- Teil 5: Identitätsmanagement und Authentifizierung; OpenID
- Teil 6: Identitätsmanagement und Authentifizierung; OpenID
- Teil 7: Identitätsmanagement und Authentifizierung; OpenID
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.

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.