
Ich brauche Apache, konfiguriert als Proxy-Pass, um den Authorization: Basic ...
Header mit einem LDAP-Server abzugleichen. Dabei wird ein benutzerdefinierter Header gesetzt, wenn die Anmeldeinformationen vorhanden und korrekt sind, aber die Anfrage wird an den nachgelagerten Server weitergeleitet, selbst wenn die Authentifizierung fehlt oder schlicht falsch ist.
Ich habe die folgende Konfiguration versucht:
<Location ~ /my/path/(.*)/my/resource(/.+)?>
AuthType Basic
AuthName "Login with user id"
AuthBasicProvider ldap
AuthUserFile /dev/null
AuthLDAPURL "my LDAP url"
AuthLDAPBindDN "my bind variables"
AuthLDAPBindPassword ******
RequestHeader set X-Authenticated-User %{AUTHENTICATE_uid}e
SetEnv 1 noauth
<RequireAny>
Require valid-user
Require env noauth
</RequireAny>
ProxyPreserveHost On
ProxyPass http://downstream.server/my/other/path/$1/$2
ProxyPassReverse http://downstream.server/my/other/path/$1/$2
</Location>
Auf diese Weise X-Authenticated-User
ist dies jedoch immer der Fall, (null)
auch bei gültigen Anmeldeinformationen. Dies liegt wahrscheinlich daran, dass Apache optimiert und die Prüfung überhaupt nicht durchführt.
Ich könnte es schaffen, (null)
wenn das Passwort nicht übereinstimmt oder überhaupt nicht vorhanden ist.
Meine Voraussetzung ist, dass die AnfragestetsWird an den nachgelagerten Server gesendet und X-Authenticated-User
nur dann auf den angegebenen Benutzernamen gesetzt, wenn das Passwort übereinstimmt.
Ich habe die Konfiguration bearbeitet: Wenn ich die Require env noauth
Zeile kommentiere, funktioniert die Basisauthentifizierung ordnungsgemäß.