Frage Mehrere LDAP-Server mit mod_authn_alias: Failover funktioniert nicht, wenn das erste LDAP inaktiv ist?


Ich habe versucht, redundante LDAP-Server mit Apache 2.2.3 einzurichten.

/etc/httpd/conf.d/authn_alias.conf 

<AuthnProviderAlias ldap master>
    AuthLDAPURL ldap://192.168.5.148:389/dc=domain,dc=vn?cn
    AuthLDAPBindDN cn=anonymous,ou=it,dc=domain,dc=vn
    AuthLDAPBindPassword pa$$w0rd
</AuthnProviderAlias>

<AuthnProviderAlias ldap slave>
    AuthLDAPURL ldap://192.168.5.199:389/dc=domain,dc=vn?cn
    AuthLDAPBindDN cn=anonymous,ou=it,dc=domain,dc=vn
    AuthLDAPBindPassword pa$$w0rd
</AuthnProviderAlias>

/etc/httpd/conf.d/authz_ldap.conf 

#
# mod_authz_ldap can be used to implement access control and 
# authenticate users against an LDAP database.
# 

LoadModule authz_ldap_module modules/mod_authz_ldap.so

<IfModule mod_authz_ldap.c>
   <Location />
        AuthBasicProvider master slave
        AuthzLDAPAuthoritative Off
        AuthType Basic
        AuthName "Authorization required"

        AuthzLDAPMemberKey member
        AuthUserFile /home/setup/svn/auth-conf
        AuthzLDAPSetGroupAuth user
        require valid-user
        AuthzLDAPLogLevel error
   </Location>
</IfModule>

Wenn ich richtig verstehe, mod_authz_ldap wird versuchen, Benutzer im zweiten LDAP zu suchen, wenn der erste Server ausgefallen ist oder OpenLDAP nicht ausgeführt wird.

Aber in der Praxis passiert es nicht. Getestet durch Stoppen von LDAP auf dem Master, bekomme ich die "500 Interner Serverfehler" beim Zugriff auf das Subversion-Repository. Das error_log zeigt an:

[11061] auth_ldap authenticate: user quanta authentication failed; URI / [LDAP: ldap_simple_bind_s() failed][Can't contact LDAP server]

Habe ich falsch verstanden? AuthBasicProvider ldap1 ldap2 bedeutet nur, dass wenn mod_authz_ldap Ich kann den Benutzer in ldap1 nicht finden, es wird mit ldap2 fortgesetzt. Es enthält nicht die Failover-Funktion (ldap1 muss laufen und funktioniert gut)?


6
2018-06-26 09:11


Ursprung




Antworten:


Ich bin weit davon entfernt, ein Spezialist für LDAP zu sein, aber laut mod_authnz_ldap docs Sie müssen den Failover-LDAP-Server im Verzeichnis angeben AuthLDAPUrl Richtlinie so was

AuthLDAPURL "ldap://ldap1.airius.com ldap2.airius.com/ou=People, o=Airius"

Bearbeiten: Klarstellung

Sie können für die Failover keine anderen Filter festlegen. Ein Failover muss eine Spiegelung des primären Servers sein, um die gleichen Daten zu liefern.


6
2017-07-01 17:04



Vielen Dank. Das funktioniert: AuthLDAPURL "ldap://ldap1:389 ldap2:389/dc=domain,dc=vn?cn?sub?(objectClass=*)" aber das tut nicht: AuthLDAPURL "ldap://ldap1:389/dc=domain,dc=vn?cn?sub?(objectClass=*) ldap2:389/dc=domain,dc=vn?cn?sub?(objectClass=*)" (Bad URL encountered while parsing LDAP URL). Was passiert wenn ich einen anderen Filter für 2 ldaps angeben möchte? Darüber hinaus funktioniert es auch mit anderen mod_authz_ldap? - quanta
Ein Failover sollte eine Kopie des Haupt-LDAP-Servers sein. Sonst wäre es kein Failover. - Christopher Perrin


Was Christopher Perrin gesagt hat, aber auch der Standardzeitlimit ist zehn Sekunden, die Sie vielleicht verkürzen möchten, damit Sie "schnell ausfallen" und Leute eine Antwort zurück schneller erhalten.


2
2017-07-05 01:48