OpenID schnell und einfach selbstgemacht

It's a maexotic world ...


Ich hatte ja schon vor einiger Zeit einmal über OpenID und Identity Management geschrieben. Mittlerweile hat OpenID eine immer weitere Verbreitung gefunden und fortschrittliche Microblogging-Dienste wie identi.ca bieten neben einem Echtzeit Es ist aber auch ganz leicht sich selbst einen vollständigen OpenID Provider aufzusetzen, wenn man eine eigene Domain hat.

Ich verwende dafür phpMyId. Das sind im wesentlichen zwei PHP Files, einmal "das Script" und einmal eine Konfigurationsdatei. Diese packt man auf einen Webserver. Da ich nicht nur für mich selbst, sondern noch für ein paar Leute mehr OpenID-Provider spielen will, habe ich mir einen generisches Ansatz über eine apache-Konfiguration gebastelt:

<Directory "/home/web/example.com/openid/htdocs"> Options -Indexes AllowOverride None Order allow,deny Allow from all </Directory>

Damit werden die Rechte gesetzt für das Verzeichnis, in dem das phpMyId-Script und die Konfigurationsdateien der Benutzer liegen. Dieses Verzeichnis verwendet man dann anschließend in der Konfiguration für den virtuellen Host als DocumentRoot:

<VirtualHost *:80> ServerName openid.example.com ServerAlias *.openid.example.com DocumentRoot /home/web/example.com/openid/htdocs RewriteEngine on RewriteCond %{HTTP_HOST} ^[^.]+\.openid\.example\.com$ RewriteRule ^(.+) %{HTTP_HOST}$1 [C] RewriteRule ^([^.]+)\.openid\.example\.com(.*) /$1.config.php [L,NC,QSA] </VirtualHost>

Was macht das? Der virtuelle Server fühlt sich nun zuständig für alle Domainnamen der Form *.openid.example.com. Kommt nun ein Request für z.B. benutzer.openid.example.com wird dieser über die RewriteRules umgelenkt auf die Datei benutzer.config.php.

Jetzt fehlen noch zwei DNS Records in der Zone (die auf die IP-Adresse des Webservers zeigen):

openid.example.com. IN A 10.0.0.1 *.openid.example.com. IN A 10.0.0.1

Damit steht das "Framework". Jetzt muß man nur für jeden Benutzer entsprechend der Anleitung eine Konfigurationsdatei name.config.php in obigem Verzeichnis anlegen und kann ab diesem Zeitpunkt die Adresse http://name.openid.example.com/ als OpenID verwenden.

Ist doch gar nicht so schwer. Auf geht's zu einem neuen Internet-Feeling mit weniger Passwörtern :-)




Comments