2009-08-17 14 views
5

La mia applicazione esegue una query LDAP una volta al giorno e recupera tutti gli utenti e i gruppi in un determinato contenitore. Una volta recuperata, la mia app esegue un'iterazione nell'elenco di utenti di gruppi, aggiungendo solo quelli nuovi al database della mia applicazione (aggiunge solo il nome utente).Come posso recuperare un elenco di solo utenti e gruppi che sono stati aggiunti da una certa data da una directory LDAP?

Se ci sono 50.000 utenti, il mio server applicazioni è impegnato per 45 minuti ogni giorno durante questa operazione.

C'è un modo per specificare che ho bisogno di un "delta" nella mia query LDAP in modo da recuperare solo quegli utenti che sono stati aggiunti/modificati/eliminati dalla mia ultima query LDAP?

risposta

2

Penso che ci dovrebbe essere un modifyTimestamp su ogni voce. Dai un'occhiata a qualcosa come softerra ldap browser (http://download.softerra.com/files/ldapbrowser26.msi). Se esiste dovrebbe essere possibile aggiungere una condizione alla query ldap per cercare le voci che sono state modificate dall'ultima volta che è stato eseguito il processo di sincronizzazione.

+0

Qualche idea migliore? Perché per quanto ne so, "modifyTimestamp" non viene replicato. – Ender

1

Dipende dalla directory. Dovrebbe essere presente un attributo come un timestamp o un numero di sequenza che è possibile utilizzare per filtrare la query LDAP con. Ad esempio, in Active Directory il valore è 'uSNChanged'.

1

Esistono due opzioni principali per il rilevamento delle modifiche: polling e DirSync. Questi articoli dovrebbero darti un po 'di background e aiutarti a scegliere ciò che è meglio per te.

http://support.microsoft.com/kb/891995

http://msdn.microsoft.com/en-us/library/ms677974(VS.85).aspx

e qui sono alcune cose .NET:

http://msdn.microsoft.com/en-us/library/system.directoryservices.directorysynchronization.aspx

+0

grazie ragazzi, proverò tutti loro. Tra l'uso di openLDAP e l'e-directory –

+1

Ah, mi scuso: stavo parlando di AD piuttosto che di LDAP in generale. – serialhobbyist

0

È necessario controllare gli attributi operativi della directory.

Con OpenLDAP è possibile aggiungere segno + per ottenere attributi operativi e visualizzate da createTimestamp:

E 'sempre in formato Zulu cioè YYYYMMDDHHMMSSZ. Con altri DS come fedora-ds è necessario cercare l'attributo operation.

ldapsearch -x < other_options> createTimestamp

Problemi correlati