Authentifizieren von Apache HTTPd gegen mehrere LDAP-Server mit abgelaufenen Konten

8

Wir verwenden mod_authnz_ldap und mod_authn_alias in Apache 2.2.9 (wie in Debian 5.0, 2.2.9-10 + lenny7 geliefert), um sich gegen mehrere Active Directory-Domänen zum Hosten eines Subversion-Repositorys zu authentifizieren. Unsere aktuelle Konfiguration lautet:

# Turn up logging
LogLevel debug

# Define authentication providers
<AuthnProviderAlias ldap alpha>
  AuthLDAPBindDN "CN=Subversion,OU=Service Accounts,O=Alpha"
  AuthLDAPBindPassword [[REDACTED]]
  AuthLDAPURL ldap://dc01.alpha:3268/?sAMAccountName?sub?
</AuthnProviderAlias>

<AuthnProviderAlias ldap beta>
  AuthLDAPBindDN "CN=LDAPAuth,OU=Service Accounts,O=Beta"
  AuthLDAPBindPassword [[REDACTED]]
  AuthLDAPURL ldap://ldap.beta:3268/?sAMAccountName?sub?
</AuthnProviderAlias>

# Subversion Repository
<Location /svn>
  DAV svn
  SVNPath /opt/svn/repo
  AuthName "Subversion"
  AuthType Basic
  AuthBasicProvider alpha beta
  AuthzLDAPAuthoritative off
  AuthzSVNAccessFile /opt/svn/authz
  require valid-user
</Location>

Wir haben Probleme mit Benutzern, die Konten in Alpha und Beta haben, insbesondere wenn ihre Konten in Alpha abgelaufen sind (aber immer noch vorhanden sind. Die Unternehmensrichtlinie sieht vor, dass die Konten mindestens 1 Jahr lang gültig sind). Wenn beispielsweise der Benutzer x (dessen Konto in Alpha abgelaufen ist und dessen Konto in Beta gültig ist), meldet das Apache-Fehlerprotokoll Folgendes:

[Tue May 11 13:42:07 2010] [debug] mod_authnz_ldap.c(377): [client 10.1.1.104] [14817] auth_ldap authenticate: using URL ldap://dc01.alpha:3268/?sAMAccountName?sub?
[Tue May 11 13:42:08 2010] [warn] [client 10.1.1.104] [14817] auth_ldap authenticate: user x authentication failed; URI /svn/ [ldap_simple_bind_s() to check user credentials failed][Invalid credentials]
[Tue May 11 13:42:08 2010] [error] [client 10.1.1.104] user x: authentication failure for "/svn/": Password Mismatch
[Tue May 11 13:42:08 2010] [debug] mod_deflate.c(615): [client 10.1.1.104] Zlib: Compressed 527 to 359 : URL /svn/

Der Versuch, sich als nicht vorhandener Benutzer (Nobodycool) zu authentifizieren, führt zum korrekten Verhalten beim Abfragen beider LDAP-Server:

[Tue May 11 13:42:40 2010] [debug] mod_authnz_ldap.c(377): [client 10.1.1.104] [14815] auth_ldap authenticate: using URL ldap://dc01.alpha:3268/?sAMAccountName?sub?
[Tue May 11 13:42:40 2010] [warn] [client 10.1.1.104] [14815] auth_ldap authenticate: user nobodycool authentication failed; URI /svn/ [User not found][No such object]
[Tue May 11 13:42:40 2010] [debug] mod_authnz_ldap.c(377): [client 10.1.1.104] [14815] auth_ldap authenticate: using URL ldap://ldap.beta:3268/?sAMAccountName?sub?
[Tue May 11 13:42:44 2010] [warn] [client 10.1.1.104] [14815] auth_ldap authenticate: user nobodycool authentication failed; URI /svn/ [User not found][No such object]
[Tue May 11 13:42:44 2010] [error] [client 10.1.1.104] user nobodycool not found: /svn/
[Tue May 11 13:42:44 2010] [debug] mod_deflate.c(615): [client 10.1.1.104] Zlib: Compressed 527 to 359 : URL /svn/

Wie konfiguriere ich Apache so, dass Beta korrekt abgefragt wird, wenn ein abgelaufenes Konto in Alpha auftritt?

Brian Bassett
quelle

Antworten:

4

Die AuthzLDAPAuthoritative offDirektive lässt die Authentifizierung nur dann zum nächsten Modul durch, wenn der Benutzer nicht mit einem DN in der Abfrage übereinstimmen kann. Obwohl der Benutzer abgelaufen ist, scheint es, dass sein Konto weiterhin ausgeführt wird, wenn die LDAP-Abfrage ausgeführt wird.

Ich weiß nicht genug über das ActiveDirectory-LDAP-Schema, um hier eine eindeutige Antwort zu geben, aber wenn Sie Ihrer AuthLDAPURLDirektive einen Filter hinzufügen könnten , der abgelaufene Konten herausfiltert, sollte dies dazu führen, dass der Benutzername keinem DN in der Abfrage entspricht. Dies sollte dazu führen, dass die Authentifizierung zum nächsten Modul durchfällt.

Kamil Kisiel
quelle
1
Das Hinzufügen eines Filters hat funktioniert. Die IT war so freundlich, eine konsistente Zeichenfolge in das Beschreibungsfeld der Benutzer einzufügen, die von Alpha nach Beta verschoben wurden (aus diesem Grund sind die Konten abgelaufen). Die folgende URL funktioniert ordnungsgemäß: AuthLDAPURL ldap: //dc01.alpha: 3268 /? SAMAccountName? Sub? (& (ObjectClass = user) (! (Description = * in die Beta verschoben *))
Brian Bassett