Autenticazione di Apache HTTPd su più server LDAP con account scaduti


8

Stiamo usando mod_authnz_ldap e mod_authn_alias in Apache 2.2.9 (come fornito in Debian 5.0, 2.2.9-10 + lenny7) per autenticarci su più domini Active Directory per ospitare un repository Subversion. La nostra configurazione attuale è:

# 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>

Stiamo riscontrando problemi con gli utenti che dispongono di account sia in Alpha che in Beta, soprattutto quando i loro account in Alpha sono scaduti (ma sono ancora presenti; la politica aziendale prevede che gli account continuino a vivere per almeno 1 anno). Ad esempio, quando l'utente x (che ha un account scaduto in Alpha e un account valido in Beta), il registro errori Apache riporta quanto segue:

[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/

Il tentativo di autenticazione come utente inesistente (nobodycool) comporta il comportamento corretto dell'interrogazione di entrambi i server LDAP:

[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/

Come configuro Apache per interrogare correttamente Beta se riscontra un account scaduto in Alpha?

Risposte:


4

La AuthzLDAPAuthoritative offdirettiva consentirà all'autenticazione di passare al modulo successivo solo se l'utente non può essere associato a un DN nella query. Attualmente, anche se l'utente è scaduto, sembra che il suo account verrà comunque restituito come risultato quando viene eseguita la query LDAP.

Non conosco abbastanza dello schema LDAP di ActiveDirectory per dare una risposta definitiva qui, ma se è possibile aggiungere un filtro alla AuthLDAPURLdirettiva che filtra gli account scaduti, il nome utente non corrisponderà a nessun DN nella query. Ciò dovrebbe comportare che l'autenticazione passi al modulo successivo.


1
L'aggiunta di un filtro ha funzionato. L'IT è stato così gentile da inserire una stringa coerente nel campo della descrizione di quegli utenti che sono stati spostati da Alpha a Beta (ecco perché gli account sono scaduti). Il seguente URL funziona correttamente: AuthLDAPURL ldap: //dc01.alpha: 3268 /? SAMAccountName? Sub? (& (ObjectClass = user) (! (Description = * moved-to-Beta *)))
Brian Bassett
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.