2009-08-17 25 views
5

Moja aplikacja wykonuje zapytanie LDAP raz dziennie i pobiera wszystkich użytkowników i grupy w danym kontenerze. Po pobraniu moja aplikacja przechodzi przez listę użytkowników grup, dodając tylko nowe do bazy danych mojej aplikacji (dodaje tylko nazwę użytkownika).Jak mogę pobrać listę tylko tych użytkowników i grup, które zostały dodane od określonej daty z katalogu LDAP?

Jeśli istnieje 50 000 użytkowników, mój serwer aplikacji jest zajęty przez 45 minut każdego dnia, wykonując tę ​​operację.

Czy istnieje sposób określenia, że ​​potrzebuję "delta" w moim zapytaniu LDAP, aby pobrać tylko tych użytkowników, którzy zostali dodani/zmodyfikowani/usunięci od czasu ostatniego zapytania LDAP?

Odpowiedz

2

Myślę, że na każdym wpisie powinien znajdować się kod modifyTimestamp. Zerknij z czymś takim jak przeglądarka ldap softerra (http://download.softerra.com/files/ldapbrowser26.msi). Jeśli istnieje, powinieneś być w stanie dodać warunek do zapytania ldap, aby wyszukać wpisy, które zostały zmienione od ostatniego uruchomienia zadania synchronizacji.

+0

lepszy pomysł? Ponieważ o ile wiem, 'modifyTimestamp' nie jest replikowany. – Ender

1

To zależy od Twojego katalogu. Powinien istnieć atrybut taki jak znacznik czasu lub numer kolejny, którego można użyć do filtrowania zapytania LDAP. Na przykład w usłudze Active Directory wartość to "uSNChanged".

1

Dostępne są dwie główne opcje śledzenia zmian: odpytywanie i DirSync. Artykuły te powinny dać ci pewne podstawy i pomóc ci wybrać to, co najlepsze dla ciebie.

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

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

a oto niektóre NET rzeczy:

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

+0

dzięki chłopaki, spróbuję ich wszystkich. Między korzystam z openLDAP a e-katalogiem –

+1

Ah, przepraszam: mówiłem o AD raczej niż o LDAP w ogóle. – serialhobbyist

0

Trzeba sprawdzić atrybuty operacyjne dla Directory.

OpenLDAP można dodać znak +, aby uzyskać atrybutów operacyjnych i sprawdzić z createTimestamp:

To jest zawsze w formacie Zulu tj YYYYMMDDHHMMSSZ. Z innymi DS jak fedora-ds Musisz szukać atrybutu operacji.

ldapsearch -x < other_options> createTimestamp