Ich habe einen Apache-Server, der ursprünglich für den Intranetzugang eingerichtet wurde, so dass ich mir keine großen Gedanken über die Sperrung machen musste.
Später musste ich ihn für das Internet öffnen, also fügte ich eine ldap-Authentifizierungsanweisung in den Abschnitt der httpd.conf ein, etwa so:
Order allow,deny
AuthBasicProvider ldap
AuthType Basic
AuthzLDAPAuthoritative on
AuthName "MyCompany Intranet"
AuthLDAPURL "ldap://myldapserver.mydomain.com:389/CN=Users,DC=mydomain,DC=com?sAMAccountName?sub?(memberOf=CN=Everyone at MyCompany,OU=MyCompany Groups,DC=mydomain,DC=com)" NONE
AuthLDAPBindDN "CN=Administrator,CN=Users,DC=mydomain,DC=com"
AuthLDAPBindPassword "MyPassword"
Require valid-user
#Allow from all
Allow from 192.168.1
Allow from 10.254.0
Satisfy any
Dadurch konnten sich lokale Benutzer ohne Kennwort anmelden, während sich externe Benutzer an unserer ADS-Domäne authentifizieren mussten, um Zugang zu erhalten.
Jetzt wird es noch komplizierter.
Ich habe eine Anwendung, die ich laufen lasse, die zwischen Benutzern unterscheidet, indem sie eine cgi-Variable an das Ende einer URL anhängt, also richte ich eine .htaccess-Datei in der Wurzel meiner Webverzeichnisse (/var/www/html) wie folgt ein:
RewriteEngine on
RewriteBase /
RewriteRule ^foo/(.*)$ some/really/long/url/$1?tenant_filter=2 [L]
RewriteRule ^bar/(.*)$ some/really/long/url/$1?tenant_filter=1 [L]
Das funktioniert wirklich gut. Die Kunden geben http://myserver.mydomain.com/foo/file.html ein und die URL führt sie auf magische Weise zu http://myserver.mydomain.com/some/really/long/url/file.html?tenant\_filter=2, während sie nur http://myserver.mydomain.com/foo/file.html sehen.
Genau hier liegt das Problem.
Ich würde gerne definieren getrennt Authentifizierungsparameter für die virtuellen Verzeichnisse /foo und /bar. Egal was ich versuche, die Authentifizierung wird immer durch die ldap-Einrichtung in meiner http.conf überschrieben. Was mache ich falsch und was kann ich tun, um mein Ziel zu erreichen? Ist das überhaupt möglich?