In diesem Artikel geht es darum, wie du dein eigener OpenID Provider wirst. Gründe dafür muss ich wohl kaum nennen – du wirst schon einen haben, sonst wärest du nicht hier. In diesem Blogeintrag werden dennoch einige erläutert.
Um das Vorhaben umzusetzen, werde ich SimpleID (basiert auf PHP und Javascript) in meinem Uberspace installieren.
Einleitung
Da ich nur ein Class-1 SSL Zertifikat für meine Top-Level-Domain habe, das keine Wildcards für Sub-Domains (*.domain.de) zulässt, richte ich SimpleID in einem Unterordner ein, nämlich „https://domain.de/id/“. Meine Identität (in diesem Beispiel lege ich die Identität „auskunft“ an) lege ich in den Ordner „id“, d.h. wenn alles fertig eingerichtet ist, gebe ich als OpenID einen Link dieser Art an: „https://domain.de/id/auskunft“.
Wenn du keine eigene Domain hast, kannst du auch Sub-Domains verwenden – das Uberspace SSL-Zertifikat deckt diese ab. Dann könnte die URL zu SimpleID beispielsweise „https://id.USER.SERVER.uberspace.de“ lauten. Beachte, dass du dann später andere Pfade angeben musst!
Installation
Ich halte mich bei der Installation an die SimpleID-Dokumentation.
Wichtig: SimpleID benötigt einige Ordner, die zwar vom Webserver gelesen, nicht aber von diesem an die Öffentlichkeit ausgegeben werden (z.B. die Passwortdatei). Diese Voraussetzung trifft im Uberspace auf das Verzeichnis „/var/www/virtual/USERNAME“ zu. Darin befindet sich das „html“ Verzeichnis, quasi deine Hauptseite.
Wir wechseln mit cd /var/www/virtual/USERNAME in das besagte Verzeichnis und laden (und entpacken) SimpleID dort hinein:
1 |
wget -O - http://sourceforge.net/projects/simpleid/files/latest/download | tar -xzvf - |
SimpleID soll bei mir in einem Unterordner meiner Hauptseite liegen, also lege ich ihn an: mkdir ~/html/id (erreichbar über die URL „https://domain.de/id“).
Konfiguration
Wir bearbeiten nun die Einstellungsdatei für SimpleID bzw. erzeugen eine Kopie der Standardeinstellungen und bearbeiten diese:
1 |
cp simpleid/www/config.inc.dist simpleid/www/config.inc |
Darin müssen unter anderem Pfadangaben zu bestimmten Ordnern (die, die nur vom Webserver gelesen, aber nicht ausgegeben werden) ändern. Um das ein bisschen zu beschleunigen reicht es, diesen Befehl anzuwenden:
1 |
sed -i 's/\.\.\//\.\.\/.\.\/simpleid\//' simpleid/www/config.inc |
Erläuterung: Die von SimpleID benötigten Ordner liegen unter /var/www/virtual/USERNAME/simpleid . SimpleID selbst liegt unter /var/www/virtual/USERNAME/html/id . SimpleID erreicht seine Einstellungen also dadurch, dass es „zwei Ordner weiter oben“ (‚../../‘) in den Ordner „simpleid“ wechselt! Wer SimpleID in einer Sub-Domain realisiert, muss natürlich nur einen Ordner nach oben wechseln, der Befehl lautet in diesem Fall:
1 |
sed -i 's/\.\.\//\.\.\/simpleid\//' simpleid/www/config.inc |
Weiter geht’s mit dem Bearbeiten (ich benutze den vi) der Einstellungen, die Kommentare in der Datei erklären die einzelnen Punkte sehr gut: vi simpleid/www/config.inc
Dort passen wir die „Base URL“ an und ersetzen „http://www.example.com“ durch die URL, in die wir SimpleID installieren. Im Beispiel lautet die Zeile dann define('SIMPLEID_BASE_URL', 'https://domain.de/id');
Den Rest kann man so lassen (bzw. haben wir mit dem SED bereits angepasst), das sollte sich aber jeder noch einmal selbst durchlesen!
Damit ist SimpleID eingerichtet, wir verschieben nur noch die Installation in unser angelegtes „id“-Verzeichnis:
1 |
mv simpleid/www/* ~/html/id/ |
Du kannst testen, ob das geklappt hat, in dem du die Seite einfach mal besucht.. Einloggen geht natürlich noch nicht, dazu müssen wir ein Konto bzw. eine ID anlegen:
Anlegen einer ID
Wir wollen nun eine „Identität“ erstellen, in diesem Beispiel heißt sie „auskunft“, das ist auch gleichzeitig der Benutzername. Um das besser zu verstehen, empfehle ich die Dokumentation dazu.
Dazu wieder die Beispieldatei kopieren und dabei den gewünschten Namen (im Beispiel „auskunft“) anpassen. Wichtig ist die Endung „.identity“.
1 |
cp simpleid/identities/example.identity.dist simpleid/identities/auskunft.identity |
Dann erzeugen wir uns erstmal den MD5 Hash des gewünschten Passwortes zu diesem Konto (den Teil in den Hochkommas ersetzen):
1 |
echo `php -r "print md5('example password');"` |
Das gibt eine Buchstaben-/Zahlenfolge auf der Konsole aus, die wir in die Zwischenablage kopieren.
Mit vi simpleid/identities/auskunft.identity (Namen anpassen!) bearbeiten wir die ID, dort müssen wir zwei Zeilen ändern:
Bei identity="http://example.com/" müssen wir eine URL angeben, nämlich die, über die diese Identität später erreichbar sein soll. Ich möchte, dass „auskunft“ über „https://domain.de/id/auskunft“ erreichbar ist – also trage ich das dort auch ein. Hast du den Passwort-Hash noch in der Zwischenablage? Dann bei pass="c8e24ae844b7cb9381g722ae8209a19a" die Buchstaben-/Zahlenfolge ersetzen.
Erreichbarkeit der ID
Wer gut aufgepasst hat, hat vielleicht gemerkt, dass es „https://domain.de/id/auskunft“ ja noch gar nicht gibt. Diese Datei legen wir mit vi ~/html/id/auskunft an und fügen die folgenden Zeilen ein (Domain natürlich ändern, Details dazu in der Doku):
1 2 3 4 5 6 |
<html> <head> <link rel="openid.server" href="https://domain.de/id/" /> <link rel="openid2.provider" href="https://domain.de/id/" /> </head> </html> |
Gibst du also beispielsweise einem Anbieter (z.B. Uberspace.de) die OpenID „https://domain.de/id/auskunft“, ließt dieser in der erstellten Datei, wo deine OpenID-Installation liegt.
Fazit
Probiere es doch gleich einmal in deinem Uberspace aus. Du solltest dann auf deinen Server weitergeleitet werden, dich mit der angelegten ID und dem vergebenen Passwort anmelden können und wirst dann zurück zum Uberspace-Werbportal geschickt – dort steht, ob das alles geklappt hat! ;-)Wie schlau es ist, sich in seine Uberspace-Verwaltung mit seinem auf dieser auf diesem Server gehosteten OpenID einzuloggen muss natürlich jeder selber beurteilen!
Einloggen und Verwalten kannst du deine IDs natürlich auch, in dem du „https://domain.de/id“ – also den Installationsort von SimpleID – aufrufst. Dort ist bei mir die Seite „My Profile“ fehlerhaft, wenn ich mich einlogge – vielleicht habt ihr da Ideen zur Korrektur.
Löschen
Wer das ganze wieder abschaffen will, löscht einfach den Installationsordner und die Konfigurationsordner, z.B. durch rm -r /var/www/virtual/USERNAME/simpleid ~/html/id