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

Teil 4: Identitätsmanagement und Authentifizierung; OpenID

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

Nach dem Eröffnen einer neuen PHP-Sitzung kann der Status der Authentifizierung des Benutzers beispielsweise wie folgt überprüft werden:...

Nach dem Eröffnen einer neuen PHP-Sitzung kann der Status der Authentifizierung des Benutzers beispielsweise wie folgt überprüft werden:

<?php
session_start();
if (!isset($_SESSION
['OPENID_AUTH']) || $_SESSION['OPENID_AUTH'] !== true) {
die ('Der Zugriff auf diese Seite ist
Ihnen nicht gestattet! Bitte melden Sie sich (erneut) an.');
}
?><head><title>Geschützte Webseite</title></head><body><h2>Geschützte Seite</h2><p>Der Zugriff auf diese Seite ist
Ihnen nur gelungen, weil Sie sich erfolgreich angemeldet haben!</p></body></html>

Erst nach einer erfolgreichen Anmeldung erhält die Variable $_SESSION['OPENID_AUTH'] den Wert true. In jedem anderen Fall wird der Zugriff auf die betreffende Webseite verweigert.

OpenID-Profildaten

Damit der OpenID-Consumer (die Webseite, die die Anmeldung anfordert) den Benutzer namentlich begrüßen kann, muss sie die zugehörige Information von dem Open ID-Anbieter beziehen. Persönliche Daten wie der Name oder die E-Mail-Adresse gehören zum OpenID-Profil des Benutzers und können bei Bedarf an den Consumer-Dienst übergeben werden.

Diesen Vorgang bezeichnet man mit dem Begriff Simple Registration. Zum Beispiel:

<head><title>OpenID-Profil: Datenübergabe</title></head><body><form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Melden Sie sich mit Ihrer OpenID an:<br/><input type="text" name="id" size=
"30" /><br /><input type="submit" name="Anmelden"
value="Anmelden" /></form></body></html><?php
}
else {
if (trim($_POST['id'] == '')) {
die("FEHLER: Bitte geben Sie ein
korrekte OpenID ein.");
}
require_once "Auth/OpenID/Consumer.
php";
require_once "Auth/OpenID/FileStore.
php";

Die Umsetzung von Simple Registration setzt eine zusätzliche Include-Datei vor:

require_once "Auth/OpenID/SReg.php";

Nach diesem Aufruf wird erwartungsgemäß die Sitzung eröffnet, ein Ablageort für die OpenID-Daten festgelegt und ein OpenID-Consumer erzeugt:

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

Danach kann endlich die Anmeldung stattfinden:

$auth = $consumer->begin($_POST
['id']);
if (!$auth) {
die("FEHLER: Bitte tragen Sie eine
korrekte OpenID ein.");
}

Jetzt können die Registrierungsdaten vom OpenID-Dienstleister angefordert werden:

$sreg = Auth_OpenID_SRegRequest:
:build(array('email', 'fullname', 'dob', 'language'),array('nickname'));
if (!$sreg) {
die("FEHLER: Der Aufbau einer
Registrierungsanfrage ist fehlgeschlagen");
}
$auth->addExtension($sreg);