Apache OpenID · 9 min read · Dec 27, 2025
Installieren und Konfigurieren des Apache-Moduls für OpenID-Authentifizierung
Apache-Modul für OpenID-Authentifizierung
OpenID ist eine weit verbreitete Technologie zur Benutzer-Authentifizierung in Webanwendungen. Sie basiert auf den Konzepten der verteilten Benutzer-Authentifizierung in Blog-Anwendungen. Dieses kleine Kochbuch erklärt Schritt für Schritt, wie man das Open Source Apache-Modul mod_auth_oid installiert und konfiguriert.
Der beabsichtigte Zweck dieses Moduls ist es, eine einfache Relying Party-Implementierung bereitzustellen, die verwendet werden kann, um den Zugriff auf auf Apache basierende Webanwendungen und Ressourcen zu schützen. Das Modul implementiert nicht alle in der offiziellen Spezifikation beschriebenen Funktionen. Dennoch sind seine Funktionen bereits reif genug, um eine komfortable Anmeldebenutzbarkeit für Ihre Anwendungen und Benutzer zu bieten.
Es sind auch zwei zusätzliche Module enthalten, die das Authentifizierungsmodul mit der Fähigkeit erweitern, Benutzer-IDs nicht nur über die Apache-Konfiguration, sondern auch über eine lokale Zuordnungsdatei (die möglicherweise bereits von anderen Anwendungen existiert) oder über Ldap zuzuordnen.
Sicherheitswarnung: Das Modul unterstützt keine Protokollerweiterungen wie PAPE. Daher wird die Verwendung in Umgebungen mit höheren Anforderungen an den Datenschutz, wie im Gesundheitswesen oder bei finanziellen Transaktionen, nicht empfohlen.
Installation
Voraussetzungen
Um dieses Apache-Modul zu installieren, müssen die folgenden Anforderungen erfüllt sein:
- Apache 2.2 einschließlich mod_ssl, mod_proxy, mod_include, Header-Dateien und apxs/apxs2 (oft als apache2 und apache2-devel-Pakete bezeichnet).
- Apache-Modul mod_parp für die Parameteranalyse. Holen Sie es sich hier. Die Installation ist unkompliziert: Verwenden Sie sudo oder melden Sie sich als root an:
$ tar xvBzf mod_parp-0.10-src.tar.gz $ cd mod_parp-0.10 $ sudo apxs2 -i -c apache2/mod_parp.c $ sudo chmod 755 /usr/lib64/apache2/mod_parp.so
Hauptmodul
Laden Sie den Quellcode von hier herunter und entpacken Sie ihn.
$ tar xvBzf mod_auth_oid-2.0-src.tar.gz
$ cd mod_auth_oid-2.0
$ sudo apxs2 -i -c -I . -D AOID_MOD_EXT_HOOKS apache2/mod_auth_oid.c -lcrypto -lparp*Optional: Es gibt zusätzliche Module, die mit dem Quellcode geliefert werden. Wenn Sie auch das hochgradig empfohlene zusätzliche Modul mod_auth_oid_file.c oder mod_auth_oid_ldap.c verwenden möchten, kompilieren und installieren Sie diese ebenfalls mit einem der folgenden Befehle.*
$ sudo apxs2 -i -c -I . apache2/mod_auth_oid_file.c
$ sudo apxs2 -i -c -I . apache2/mod_auth_oid_ldap.cKonfiguration
Serverabschnitt
Die folgenden Apache-Standardmodule sind erforderlich:
- mod_ssl (stellt Verschlüsselungsroutinen bereit, die von mod_auth_oid verwendet werden)
- mod_proxy (stellt Funktionen für mod_auth_oid bereit, um Anfragen an die OpenID-Anbieter zu senden)
- mod_include (stellt das Rendern von shtml-Seiten bereit)
Aktivieren Sie die Module in Ihrem globalen Konfigurationsabschnitt von Apache. Passen Sie den Dateipfad entsprechend Ihrem Dateisystemlayout an. Es ist auch wichtig, dass die Module nach mod_ssl geladen werden. Platzieren Sie daher diese Zeilen am Ende Ihres LoadModule-Blocks von Apache. Kommentieren Sie die letzten beiden Zeilen mit den Zuordnungsmodulen aus, wenn Sie diese ebenfalls verwenden möchten. Wenn Ihre Distribution einen individuellen Stil zum Laden von Modulen hat, tun Sie dies bitte gemäß deren Anweisungen (z. B. platzieren Sie die folgenden Zeilen in einer Datei, die automatisch eingeschlossen wird, wenn sie sich in einem bestimmten Verzeichnis wie modules-enabled oder ähnlichem befindet.
LoadModule parp_module /usr/lib64/apache2/mod_parp.so
LoadModule auth_oid_module /usr/lib64/apache2/mod_auth_oid.so
# LoadModule auth_oid_file_module /usr/lib64/apache2/mod_auth_oid_file.so
# LoadModule auth_oid_ldap_module /usr/lib64/apache2/mod_auth_oid_ldap.soVersuchen Sie, Ihren Server neu zu starten. Wenn das Modul korrekt geladen ist, sollte es im Fehlerprotokoll des Servers gemeldet werden:
[Sun Nov 06 12:10:59 2011] [notice] Apache/2.2.17 (Linux/SUSE) mod_ssl/2.2.17 OpenSSL/1.0.0c mod_auth_oid/2.0 konfiguriert -- normale Operationen werden fortgesetztVirtualHost-Abschnitt
Jetzt ist es an der Zeit, die spezifische Konfiguration zum Schutz Ihrer Anwendung vorzubereiten. Bearbeiten Sie Ihre VirtualHost-Konfiguration. Natürlich sollte es Ihr https VirtualHost sein, da wir hier mit Sicherheit zu tun haben. Und ersetzen Sie mein OpenID YOURNAME durch Ihre eigene OpenID, andernfalls könnte YOURNAME eines Tages Ihre Kronjuwelen stehlen. ;) Wenn Sie Google als Ihren OpenID-Anbieter verwenden möchten, müssen Sie einen etwas anderen Weg gehen und ein AOID_UserPattern hinzufügen, da Google den Ansatz der gerichteten Identität mit undurchsichtigen OpenIDs pro Site verwendet. Im letzten Kapitel dieses Howtos, das Eingrenzen des Namensraums Ihrer bevorzugten OpenID-Anbieter heißt, wird die Konfigurationsanweisung anhand eines Google-Beispiels erklärt.
Wir gehen davon aus, dass die Ressource, die wir schützen möchten, der Standort /private ist und der Authentifizierungs-Handler sich unter /aoid befindet. Die folgenden Abschnitte sind kommentiert, um anzuzeigen, was Sie tun müssen.
# Eine vollständige Referenz aller verfügbaren Konfigurationsoptionen
# ist verfügbar unter: http://auth-openid.sourceforge.net/
# Vorsicht: Aktivieren Sie bei vertrauenswürdigen CAs, indem Sie sie in cacerts einfügen
# Verlinken Sie sie mit Hashnamen, wie in der Apache-Dokumentation beschrieben
# http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslproxycacertificatepath
SSLProxyEngine on
SSLProxyCACertificatePath /etc/ssl/cacerts
# Verwenden Sie das HttpOnly-Flag, um XSS-Angriffe auf das Sitzungscookie zu verhindern
BrowserMatch "Mozilla.*Firefox/(3|4)" HttpOnlyCookie
BrowserMatch "MSIE [6789]" HttpOnlyCookie
BrowserMatch "Opera/(10|9\.[56789])" HttpOnlyCookie
BrowserMatch Secure SecureCookie
# mod_auth_oid Basiseinstellungen
AOID_Realm /
AOID_StartPage /private/index.html
AOID_LogLevel info
AOID_LoginPath /aoid/login
AOID_LoginSuffix .shtml
AOID_Timeout 300
AOID_CookieName AJESSIONID
# OpenID-Benutzermapping. Zusätzliche Möglichkeiten sind beschrieben
# im Kapitel "Lokale Dateizuordnung" der Howtoforge-Seite
# erlaubte/bekannte Benutzer ERSETZEN SIE MIT IHREM OPENID
AOID_User http://YOURNAME.myopenid.com/ YOURNAME
# Erzwingen Sie die Benutzer-Authentifizierung von mod_auth_oid für den folgenden Standort
AuthType OpenID
Require valid-user
# mod_auth_oid Anmeldeseite
# Aktivieren Sie SSI für die Anmeldeseite (benötigt mod_include)
Options Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Dateien
Erstellen Sie jetzt ein Verzeichnis mit dem Namen private im DocumentRoot Ihres VirtualHost, das den Inhalt enthält, den Sie schützen möchten. Fügen Sie beispielsweise eine index.html-Datei hinzu, die sagt: “Yeahh!! mod_auth_oid rocks und ich habe 127.0.0.1 gehackt!.
Zusätzlich benötigen Sie eine Anmeldeseite im Verzeichnis aoid, die sich ebenfalls im DocumentRoot befindet. Als Ausgangspunkt können Sie die Beispiel-SHTML-Seite aus dem Verzeichnis htdocs im Tarball verwenden. Kopieren Sie sie einfach auch in Ihr htdocs. Überprüfen Sie die Berechtigungen der neu erstellten Dateien, ob sie den Vorlieben Ihres Webservers entsprechen.
Jetzt können Sie Ihren Apache erneut neu starten. Bitte überprüfen Sie das error.log, um sicherzustellen, dass alles in Ordnung ist.
Testen Sie Ihre Installation
Öffnen Sie jetzt Ihren Browser. Wenn Sie alles richtig gemacht haben und auch Ihr Apache, sollten Sie eine Anmeldeseite sehen, wenn Sie Ihren Browser auf die folgende URL richten: https://YOURHOST/private/index.html
Wählen Sie Ihren Anbieter aus und senden Sie ab. Das Modul leitet Sie zu Ihrem Anbieter weiter, wo Sie sich anmelden, und wenn es erfolgreich war, werden Sie zu Ihrer privaten Anwendung zurückgeschickt. Wenn Sie Google wählen, senden Sie einfach die vorgeschlagene OP-Identifikation, in den beiden anderen Fällen geben Sie Ihre OpenID in den hervorgehobenen Teil ein. Später im Howto wird eine viel bequemere Lösung für eine schick aussehende Anmeldeseite beschrieben.
Debugging, falls etwas schiefgeht
Im unwahrscheinlichen Fall, dass etwas nicht wie erwartet funktioniert, haben Sie mehrere Hinweise darauf, was möglicherweise im error.log Ihres Apache-Servers falsch ist. Die Protokollnachrichten sollten anzeigen, was fehlschlägt. Eine detaillierte Liste der möglichen Fehlercodes und wie man ein höheres Loglevel aktiviert, finden Sie auf der mod_auth_oid-Seite.
Zusätzliche Optionen
Schicke Anmeldeseite
Ich nehme an, dass Sie wie ich sind, und eines der ersten Dinge, die Sie sehen möchten, ist eine schön aussehende Anmeldeseite im Browser. Sieht so etwas cool genug für Ihren Geschmack aus?

Diese professionell aussehende Anmeldeseite wurde mit dem Open Source-Projekt openid-selector erstellt, das eine benutzerfreundliche Möglichkeit bietet, eine OpenID auszuwählen.
Nach der Erstellung der Anmeldeseite muss sie mit dem SHTML-Include-Zeug von mod_auth_oid erweitert werden. Ich habe den Fehlerdarstellungsbereich von der ursprünglichen Anmeldeseite in die generierte HTML-Seite von openid-selector eingefügt. Mein Beispiel der angepassten Seite kann hier heruntergeladen werden.
Lokale Benutzer-ID-Zuordnung
Wenn Sie auch das Modul mod_auth_oid_file kompiliert haben, können Sie Ihre Benutzer-ID-Datensätze auch in einer lokalen Datei zuordnen, anstatt sie alle in Ihre Apache-Konfigurationsdatei einzufügen. Die detaillierten Anweisungen finden Sie hier.
Lesen Sie das folgende Kapitel, um die Selbstregistrierung von Benutzern mit lokaler Dateizuordnung in einem Schritt hinzuzufügen.
Benutzer-Selbstverwaltung Eine OpenID-zu-lokale Benutzer-ID-Zuordnung
Angenommen, Sie haben bereits eine Benutzerverwaltung, die auf den .htpasswd-Dateien von Apache basiert, können Sie den folgenden Konfigurationsausschnitt verwenden, um sie zu erweitern, damit Benutzer OpenID-Konten mit ihren lokalen Konten registrieren können. Kopieren Sie die Datei file_mapper.html aus dem Tarball in Ihr htdocs.
# Virtual Host Abschnitt
AOID_File_DB /etc/apache2/mapdb
AOID_File_AdminPage /usr/local/apache2/htdocs/file_mapper.html
# Profilverwaltungsstandort
# Passen Sie den Dateipfad entsprechend Ihrer vorhandenen .htpasswd-Datei an
AuthUserFile /srv/data/.htpasswd
AuthName 'Geben Sie Ihren Login-Namen ein: Abbrechen, um sich zu registrieren, wenn Sie keinen haben.'
AuthType Basic
Require valid-user
SetEnvIf Request_Method POST parp
SetEnvIf Request_Method GET parp
SetHandler auth-oid-file
AOID_File_UserOnly on
Jetzt erstellt mod_auth_oid_file eine mapdb-Datei, in der die Beziehung zwischen OpenID-Konten und lokalen .htpasswd-Konten gespeichert wird.
Sicherheitsüberlegungen
Relying Party Discovery-Dokument
OpenID empfiehlt, ein Relying Party Discovery-Dokument zu hosten, das eine ordnungsgemäße return_to-Adresse für den OpenID-Anbieter angibt. Yahoo wird Ihre Site als nicht vertrauenswürdig anzeigen, wenn Sie ein solches Dokument nicht bereitstellen. Weitere Informationen finden Sie hier.
Speichern Sie ein Dokument mit dem Namen openid.xrd im DocumentRoot Ihrer Site. Der Inhalt sollte ähnlich wie im folgenden Beispiel aussehen. Passen Sie es entsprechend Ihrer Einrichtung an.
http://specs.openid.net/auth/2.0/return_to
https://YOUR_HOST_HERE/aoid/login
Das Dokument muss dann entweder durch das Senden eines speziell gestalteten Headers mit jeder HTTP-Antwort referenziert werden oder es kann im Hauptdokument der Site enthalten sein.
Variante 1: Ankündigung über Header (empfohlen)
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
# .......
Header set X-XRDS-Location https://YOUR_HOST_HERE/openid.xrdVariante 2: Ankündigung im Kopfbereich des Haupt-HTML-Dokuments
....
....Schutz vor DoS- und anderen Arten von Angriffen
DoS-Angriffe und Cross-Site-Request-Forgery sind heute ein großes Problem. Sie können Ihre Site effizient vor DoS-Angriffen mit einem anderen Open Source-Modul namens mod_qos schützen. Dieses Modul ist ein Schweizer Taschenmesser, wenn es darum geht, Ihren Server vor verschiedenen Arten von Angriffen zu schützen. Das Modul kann so einfach installiert werden wie jedes andere Apache-Modul. Das folgende Konfigurationsbeispiel zeigt eine grundlegende Konfiguration, die Ihre Site vor DoS-Angriffen und Cross-Site-Request-Forgery auf der Selbstverwaltungsseite schützt.
# Serverabschnitt
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so
# behandelt Verbindungen von bis zu 100000 verschiedenen IPs
QS_ClientEntries 100000
# erlaubt nur 50 Verbindungen pro IP
QS_SrvMaxConnPerIP 50
# maximale Anzahl aktiver TCP-Verbindungen ist auf 256 begrenzt
MaxClients 256
# deaktiviert Keep-Alive, wenn 70% der TCP-Verbindungen belegt sind:
QS_SrvMaxConnClose 180
# minimale Anfrage-/Antwortgeschwindigkeit (verhindert langsame Clients, die den Server blockieren, d.h. slowloris, die Verbindungen offen halten, ohne etwas anzufordern):
QS_SrvMinDataRate 120 1500 400
# und begrenzt Anfrageheader und -körper (vorsichtig, das begrenzt auch Uploads und POST-Anfragen):
QS_SrvMaxConnClose 70%
LimitRequestFields 30
QS_LimitRequestBody 102400
QS_ClientEventBlockCount 20 300
QS_SetEnvIfStatus 400 QS_Block
QS_SetEnvIfStatus 401 QS_Block
QS_SetEnvIfStatus 403 QS_Block
QS_SetEnvIfStatus 404 QS_Block
QS_SetEnvIfStatus 405 QS_Block
QS_SetEnvIfStatus 406 QS_Block
QS_SetEnvIfStatus 408 QS_Block
QS_SetEnvIfStatus 411 QS_Block
QS_SetEnvIfStatus 413 QS_Block
QS_SetEnvIfStatus 414 QS_Block
QS_SetEnvIfStatus 417 QS_Block
QS_SetEnvIfStatus 500 QS_Block
QS_SetEnvIfStatus 503 QS_Block
QS_SetEnvIfStatus 505 QS_Block
QS_SetEnvIfStatus QS_SrvMinDataRate QS_Block
QS_SetEnvIfStatus NullConnection QS_Block
QS_SrvMaxConnExcludeIP 127.0.0.1
# CSRF-Schutz des Selbstregistrierungsformulars durch Festlegung
# von vier Meilensteinen für die Profilverwaltung
QS_MileStone deny "^GET /OpenIdLogin"
QS_MileStone deny "^GET /OpenIDRegistration"
QS_MileStone deny "^GET /profile"
QS_MileStone deny "^POST /profile"Eingrenzen des Namensraums Ihrer bevorzugten OpenID-Anbieter
Sie können einschränken, welchen OpenID-Anbieter Sie für die Authentifizierung Ihrer Website akzeptieren, indem Sie die Konfigurationsanweisung AOID_UserPattern verwenden. Die folgenden beiden Beispiele geben Ihnen eine grobe Vorstellung davon, wie Sie reguläre Ausdrücke zu diesem Zweck konstruieren können.
# VirtualHost Abschnitt
# Erlaubt nur Google OpenIDs
AOID_UserPattern "^(https://www\.google\.com/accounts/o8/id\?id=.*)$" "$1"
# Erlaubt nur meine.company.com OpenIDs und verwendet nur einen Teil davon, um sie einem lokalen Benutzer zuzuordnen.
AOID_UserPattern "^https://my\.company\.com/([a-z]{1})[a-z]+\.([a-z]{2})[a-z]+$" "$1$2"Schlussworte
Vielen Dank, dass Sie dieses Tutorial gelesen haben. Ich hoffe, Ihre Installation verlief reibungslos. Ich wünsche Ihnen, dass viele Benutzer von diesem Modul profitieren werden, und ich hoffe, es hat Ihnen Spaß gemacht, es zu installieren. Wenn Sie über die Entwicklungen des Moduls informiert bleiben möchten, können Sie unserer mod_auth_oid Facebook-Seite folgen.
Danksagungen: Ich möchte Pascal Buchbinder danken, der mich betreut hat, um dieses Apache-Modul zu verbessern und es mit der identifier_select-Methode zu erweitern. Er ist der Autor mehrerer Apache-Module wie mod_qos, mod_sslcrl, mod_parp und anderer.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.