Lennarts und meine Blogposts zum Thema Apache-Authentifizierungen haben sich bisher eigentlich immer damit befasst wie man möglichst viele Benutzer aus einem zentralen Verzeichnisdienst durch den Webserver authentifiziert. Was aber tun wenn für bestimmte automatisierte Zugriffe keine Authentifizierung erwünscht ist? Komplett auf die Authentifizierung verzichten möchte man meist nicht, also muss eine Ausnahme her. Aber wie?
In Apache 2.2 heißt die Direktive dafür „Satisfy any“. Mit dieser lässt sich festlegen dass entweder eine Allow-Regel oder die Benutzer-Authentifzierung erfüllt werden muss. Als Konfigurationsabschnitt sieht dies dann beispielsweise so aus:
Order allow,deny Allow from 192.168.0.23 Allow from 192.168.0.42 Include auth.inc Satisfy any
Mit Apache 2.4 ändert dies sich zu:
<RequireAny> Require host 192.168.0.23 Require host 192.168.0.42 Require valid-user </RequireAny>
Damit könnte nun von die zwei Systemen ohne Authentfizierung anmelden. Handelt es sich dabei um Proxies können dies sogar noch wesentlich mehr sein. Was nun wenn aber eine Authentifizierung nötig ist um die gewünschten Rechte zu erlangen, wenn ohne Authentifizierung durch Apache der interne Authentifizierungsdialog erscheint? Muss sich nun doch überall immer und überall wer anmelden?
Auch hierfür gibt es eine Lösung, indem durch entsprechende Rewrite-Regeln automatisch ein Benutzer angemeldet wird. Einmal als Beispiel anhand von Nagvis und unseren zwei Systemen von oben:
RewriteEngine On RewriteBase /nagvis RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.23 [OR] RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.42 RewriteRule ^(.*)$ - [E=REMOTE_USER:nagvisuser]
Diese Konfigurationszeilen in Kombination mit dem ersten Beispiel sorgen dafür, dass für die zwei Systeme die Benutzer-Authentfizierung entfällt und ihr Webseiten-Aufruf um die Umgebungsvariable REMOTE_USER mit dem Wert nagvisuser ergänzt wird. Somit wäre der Benutzer nagvisuser automatisch angemeldet.