Ich versuche, die Basisauthentifizierung auf meinem Apache2-Server mithilfe von AuthExternal und pwauth einzurichten. Verwenden Sie daher die Systembenutzer, um die Authentifizierung durchzuführen, und nicht die Datenbank eines anderen Benutzers.
Ich konnte alles nahtlos installieren und aktivieren. Apache2 (2.4.12-2ubuntu2), libapache2-mod-authnz-external (3.3.2-0.1) und pwauth (2.3.11-0.1). Es läuft alles auf meiner Ubuntu 15.10 Desktop Edition und Linux 4.2.0-30-generic. Eigentlich nichts Besonderes, alle Standard-Willy-Repo-Installationen.
Apache2 läuft und das AuthExternal-Modul ist korrekt geladen, zumindest soweit ich das beurteilen kann:
me@bla:~$ systemctl status apache2.service | grep Active
Active: active (running) since Thu 2016-02-25 13:41:02 CET; 33s ago
me@bla:~$ apache2ctl -M | grep external
authnz_external_module (shared)
Ich habe die zu verwendenden Module sowie das Derictory definiert, auf das die Authentifizierung in der VHost-Konfigurationsdatei angewendet werden soll. Siehe meine /etc/apache2/sites-enabled/000-default.conf unten:
<IfModule mod_authnz_external.c>
AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe
</IfModule>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/sec>
AuthType Basic
AuthName "Restricted Area"
AuthBasicProvider external
AuthExternal pwauth
Require user pat
</Directory>
</VirtualHost>
Wenn ich jetzt versuche, loclahost / sec in einem Browser zu öffnen, werde ich aufgefordert, mich anzumelden. Ich gebe pat als Benutzer und sein Passwort an und warte, bis die Magie eintritt. Leider erhalte ich eher einen internen Serverfehler als den erwarteten index.html 'Hello World' ....
Also habe ich die Apache2-Fehlerprotokolle überprüft und dort 'Ungültiges AuthExternal-Schlüsselwort (pwauth)' gefunden. Nach einigem Graben wurde mir klar, dass dieser Fehler von AuthExternal ausgelöst wird, weil das angegebene pwauth nicht gefunden werden kann. Also habe ich das überprüft, indem ich gelaufen bin:
sudo -u www-data which pwauth
Das gab den gleichen Pfad zurück, der in der obigen Konfigurationsdatei angegeben wurde, so dass ausgeschlossen werden kann ....
Ich habe dann versucht, AuthExternal in ein Shell-Skript umzuleiten, um das Modul unabhängig von pwauth zu testen. Das Skript hängt einfach eine Zeichenfolge an eine Datei an, damit ich sehen kann, ob sie von AuthExternal aufgerufen wird oder nicht. Ich habe 'chmod u + s a + x' für die Datei ausgeführt, damit sie mit Root-Rechten ausgeführt werden kann, da pwauth dies für den Zugriff auf passwd benötigt, und habe es erneut versucht. Ich habe das auch ohne U + S versucht, da es hier nicht benötigt wird, aber das lief nicht besser. Dieser Test hat mich zu der Annahme gebracht, dass mit meinem Apache2 etwas nicht stimmt und nicht mit pwauth.
Ich habe das alles mit Cromium und Firefox getestet, nicht dass es in seinem Fall wichtig wäre, aber weißt du ... man kann nie sicher genug sein, oder? Ich habe auch alle Variationen ausprobiert, die mir in Bezug auf die Position der Richtlinien einfielen. Alles direkt in der appache2.conf, im Verzeichnis in appache2.conf und in der Moduleinbeziehung in ./conf-enable/security.conf, in den Modulen in security und im Verzeichnis im vhost usw. Keine dieser Variationen hat geholfen, einige gemacht es ist aber am schlimmsten ...
Ich habe dann viel gegoogelt ... Aber ich konnte nur Informationen zu diesem Thema aus der httpd.conf-Ära finden, die nicht mehr wirklich zutreffen. Auch wenn es noch einige gültige und nützliche Hinweise enthält ... Darüber hinaus verwenden die meisten, wenn nicht alle dieser Threads einen .htaccess-Ansatz. Was ich durch die Verwendung der Directory-Direktiven vermeiden möchte, um den durch .htaccess verursachten Leistungsmangel zu vermeiden.
Jedenfalls habe ich keine Ahnung, wo ich suchen oder was ich versuchen soll. Um ehrlich zu sein, drehe ich mich im Kreis und würde mich über Hinweise, Ideen oder Lösungen freuen, um mich weiter zu bringen.
quelle
AddExternalAuth
undSetExternalAuthMethod
ist innerhalb einesVirtualHost
Blocks in Apache 2.4 nicht zulässig . Ich habe diese innerhalb eines<IfModule mod_authnz_external.c>
Blocks nach "apache2.conf" verschoben .Die Dinge scheinen zwischen Apache-Versionen anders zu sein. Für apache2.4 führte mich der GitHub für mod-auth-external auf den richtigen Weg.
Beim
apache2.conf
Erstellen der Authentifizierungsmethode (hier: checkEtcPasswd):Verweisen Sie diesen Authentifikator im Block:
Das ist es. Einfach, wenn Sie es wissen ...
quelle