Ich möchte in meiner Apache2 .htaccess zwei verschiedene Authentifizierungsanbieter definieren, falls einer ausfällt (der gewünschte ist LDAP, aber ich möchte mich auch bei einem LDAP-Ausfall über die lokale htpasswd-Datei anmelden können).
Ich habe es versuchtDasaber ich bekomme es nicht zum Laufen, da Apache sich über einen bereits definierten Authentifizierungstyp beschwert.
Wenn ich beide Authentifizierungstypen in meiner site.conf definiere, kann ich mich nicht über die lokale htpasswd-Datei anmelden, da die Zeile „Require“ die richtige LDAP-Gruppe sicherstellt und die lokale Datei diese Regel nicht verarbeiten kann, da sie nur benötigt Require valid-user
.
Require ldap-group CN=admins,OU=Groups,OU=main,DC=my,DC=tld
Antwort1
Wenn Sie sowohl den file
als auch den ldap
Authentifizierungsanbieter angegeben haben (mithilfe der AuthBasicProvider ldap file
Direktive), können Sie den folgenden Regelsatz definieren, um sich von beiden aus authentifizieren zu können. Ich gehe davon aus, dass Sie das uid
Attribut als Benutzernamen verwenden, aber wenn nicht, sollte es nicht zu schwer sein, die folgende Bedingung umzuschreiben.
<RequireAny>
<RequireAll>
Require valid-user
Require ldap-group cn=admins,ou=groups,out=main,dc=my=dc=tld
</RequireAll>
<RequireAll>
Require valid-user
Require not ldap-attribute uid="%{REMOTE_USER}"
</RequireAll>
</RequireAny>
Der Benutzer wird also authentifiziert, wenn eine der folgenden Bedingungen zutrifft:
- Der Benutzer ist gültig und hat die richtige LDAP-Gruppenmitgliedschaft. In diesem Fall muss der Benutzer vom
ldap
Backend authentifiziert worden sein. - Das
uid
Attribut des Benutzers stimmt nicht mit dem angegebenen Benutzernamen überein, dennoch ist der Benutzer gültig. Dies kann nur passieren, wenn dasuid
Attribut nicht vorhanden ist. Wenn dies jedoch der Fall ist,ldap
konnte der Anbieter den Benutzer nicht in der LDAP-Datenbank finden. In diesem Fall wurde die Gültigkeit der Benutzeranmeldeinformationen vomfile
Anbieter bestimmt.