Teil 2: 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
Alles, was der Benutzer zum Zugriff auf die Consumer-Webseite benötigt, ist im ersten Schritt der Name seiner OpenID-Identität. Beim Abschicken dieses Formulars muss die Consumer-Webseite den zuständigen OpenID-Dienstleister ermitteln und die Anfrage an ihn weiterleiten. Diese Aufgabe übernimmt ...
Alles, was der Benutzer zum Zugriff auf die Consumer-Webseite benötigt, ist im ersten Schritt der Name seiner OpenID-Identität. Beim Abschicken dieses Formulars muss die Consumer-Webseite den zuständigen OpenID-Dienstleister ermitteln und die Anfrage an ihn weiterleiten. Diese Aufgabe übernimmt die PHP-OpenID-Bibliothek.
Damit das Anmeldeformular alle Eventualitäten abfängt, wird es mittels PHP in eine if-else-Abfrage eingeschlossen:
<?php
if (!isset($_POST['submit'])) {
?><head><title>OpenID-gestützte Anmel-dung</title></head><body><form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
per OpenID anmelden: <br/><input type="text" name="id" /><br /><input type="submit" name="Anmelden"
value="Anmelden" /></form></body></html><?php
}
Falls die Variable $_POST['submit'] bereits gesetzt ist, muss die Formulareingabe auf Richtigkeit hin überprüft werden:
else {
if (trim($_POST['id'] == '')) {
die("FEHLER: Bitte tragen Sie eine
korrekte OpenID ein.");}
Die OpenID soll ja nicht nur bloße Leerzeichen beinhalten. Besteht diese Zeichenfolge die erste Prüfung, können wir nun die benötigten PHP-Skripte einbinden:
require_once "Auth/OpenID/Consumer.
php";
require_once "Auth/OpenID/FileStore.
php";
und die Sitzung eröffnen (nötig für YADIS):
session_start();
Danach müssen wir den Ablageort für die OpenID-Daten erzeugen:
$store = new Auth_OpenID_
FileStore('./oid_store');
und den OpenID-Consumer erschaffen:
$store = new Auth_OpenID_
FileStore('./oid_store');
Jetzt kann die Anmeldung beginnen. Hierzu wird eine Aufforderung gegenüber dem OpenID-Dienstleister zum Überprüfen der Identität des Benutzers erstellt:
$auth = $consumer->begin($_POST['id']);
if (!$auth) { die("FEHLER: Tragen Sie
eine korrekte OpenID ein."); }
Die Anfrage wird zwecks Authentifizierung an den OpenID-Dienstleister weitergeleitet:
$url = $auth->redirectURL
('https://consumer.blog.
de/', 'https://consumer.blog.de/oid_return.php');header('Location: ' . $url);
}
?>
Sollte die OpenID abgelehnt werden, muss der Benutzer die Eingabe wiederholen.
Wurde der OpenID-Provider zur Authentifizierung des Benutzers aufgefordert, wartet jetzt der OpenID-Consumer auf die Antwort. Der OpenID-Dienstleister validiert die Benutzeridentität und gibt der Webseite (dem Consumer) im Erfolgsfalle grünes Licht zum Freischalten des Zugangs.

Die OpenID-fähige Webseite, die dem Benutzer jetzt vertrauen soll, öffnet eine neue PHP-Sitzung und erzeugt zwei Objektinstanzen: Auth_OpenID_FileStore und Auth_OpenID_Consumer. Die Objekt-Instanz Auth_OpenID_FileStore repräsentiert den Speicherort, den die PHP-OpenID-Bibliothek nutzt, um die Daten für den jeweiligen Login-Vorgang abzuspeichern.
Dem Objekt-Konstruktor sollte der Name des zu verwendenden Verzeichnisses übergeben werden. Sollte das benötigte Verzeichnis noch nicht existieren, wird es - sofern es die Zugriffsrechte zulassen - automatisch erstellt. Das Auth_OpenID_Consumer-Objekt repräsentiert den OpenID-Consumer und sein Konstruktor wird dem soeben erstellten Auth_OpenID_FileStore-Objekt übergeben.