Wednesday, July 18th, 2007...1:25 am
LDAP i developerzy
Jump to Comments
ZastrzegajÄ…c siÄ™ od razu … pewnie nie wszyscy developerzy. Niestety znaczna ich część. Nie wiem dlaczego ale poprawne korzystanie z serwerów LDAP, czyli miÄ™dzy innymi z zasobów Active Directory \ ADAM sprawia wiÄ™kszoÅ›ci developerów pewne “trudnoÅ›ci”. Niedawno temat poruszyÅ‚ joe, a ja im częściej mam do czynienia z różnego rodzaju aplikacjami korzystajÄ…cymi z LDAP tym bardziej muszÄ™ siÄ™ z nim zgodzić.
W skrócie więc kilka podstawowych uwag dla braci developerskiej:
- Usługi LDAP, a w szczególności usługi Active Directory posiadają mechanizmy lokalizowania serwera usługi - do czego zresztą odnosi się joe. Nie ma więc potrzeby zapisywania na sztywno (w szczególności w kodzie) lub w konfiguracjach różnych rzeczy takich jak serwer obsługujący domenę, partycja domeny itp. To wszystko da się określić w momencie połączenia z usługą katalogową. W szczególności w świecie aplikacji działających w Win (.NET) korzystajcie z serverless bind i dostępu do danych z RootDSE.
- Aplikacje nie muszÄ… dziaÅ‚ać na koncie z uprawnieniami Domain Admins. Istnieje coÅ› takiego jak delegacja. Nawet jeżeli ktoÅ› chce wam dać uprawnienia DA to powiedzcie że nie (…) tutaj jest lista rzeczy, których potrzebujemy (…).
- W przypadku dostÄ™pu do LDAP pamiÄ™tajcie, że wszystko co jest przesyÅ‚ane “po drucie” w przypadku LDAP jest przesyÅ‚ane CZYSTYM TEKSTEM, zaplanujcie użycie SSL jeżeli to możliwe. I że anonimowe połączenie do LDAP w przypadku Windows 2003 i późniejszych nie jest najlepszym pomysÅ‚em.
- Wiem że może siÄ™ to wydać utrudnianiem życia, ale w Å›wiecie LDAP istnieje pojÄ™cie refferal. W skrócie dużym … jeżeli serwer LDAP zna wiÄ™cej niż jednÄ… partycjÄ™ katalogu to może w wyniku Waszego zapytania zwrócić inforamcjÄ™ o tym, że obiekty których dotyczy zapytanie mogÄ… znajdować siÄ™ w innej partycji. Warto wiedzieć kiedy takie odniesienie może zostać zwrócone i jak dziaÅ‚a wyszukiwanie w AD. Wasza aplikacja powinna być takich rzeczy Å›wiadoma.
Wspomniałem tutaj w zasadzie tylko kilka rzeczy - widziałem dokument mający prawie 200 stron opisujący zalecenia dla programistów pracujących z LDAP. Starałem się wypunktować to, z czym najczęściej się spotykam w codziennej pracy. Jeżeli uda się wyeliminować chociażby tych kilka problemów życie z aplikacjami działającymi w oparciu o AD będzie łatwiejsze a i pisać je będzie łatwiej.
Na koniec jedna dobra rada - jeżeli nie wiecie jak skorzystać z tej czy innej opcji, lub nie wiecie jak taka czy inna funkcjonalność dziaÅ‚a … spytajcie siÄ™ swojego administratora systemów - może on bÄ™dzie wiedziaÅ‚. SysAdmin Day może być dobrÄ… okazjÄ… do tego.

6 Comments
July 19th, 2007 at 1:10 am
tak swoją drogą: to jaki jest w ogóle sens LDAP-a. SQL wydaje mi się poręczniejszy (tak, rozumiem, rozproszenie odpowiedzialności/bazy jest dobrym argumentem. a coś jeszcze?).
July 20th, 2007 at 12:19 am
Chwilowo zakłada mi się jakies 50 tys testowych juzerów w LDAP to może to i dobry czas żeby na takie pytanie odpowiedzieć.
Jaki sens - bo LDAP jest piÄ™kny :). A bardziej poważnie - dobry standard, skalowalny, szybki w odczycie i wyszukiwaniu danych. Åatwy w użyciu. Od strony klienta zaimplementowany w zasadzie w każdym systemie, nie trzeba jakiÅ› magicznych narzÄ™dzi do tego żeby z niego skorzystać.
W wersji z MS czyli AD\ADAM dodatkowo IMO niezły mechanizm replikacji zmian i interfejsy dla programistów. SIlne uwierzytelnienie jako dodatek - ale to już nie sam LDAP.
Podsumowując, IMO LDAP to naprawdę dobre miejsce żeby przechowywać dane dla pewnych rozwiązań, do których musi być łatwy i szybki dostęp. Oczywiście nie jest dobre rozwiązanie dla każdego projektu - jak zwykle trzeba dostosować rozwiązanie do wymagań.
SQL może wydaje się poręczniejszy ale jeżeli chodzi o szybkość przy dużej skali nie wiem czy by nie wyszedł gorzej. Oprócz tego jeżeli rozwiązanie ma być dostępne na przykład z różnych systemów \ platfrom aplikacyjnych to dochodzi kwestia instalacji bibliotek, klienta itp.
Ale ja tam lubie LDAP, z SQL też korzystam - ortodoksem nie jestem.
PS. W trakcie pisania tego posta powołano do życia około 30 tys testowych userów w AD :).
July 21st, 2007 at 3:28 pm
Re: W trakcie pisania tego posta powołano do życia około 30 tys testowych userów w AD - niech im życie miłym będzie. Stosujesz jakiś znany i popularny skrypt, czy jest to Twoja twórczość?
July 21st, 2007 at 9:06 pm
Hmmm … jeżeli chodzi o ich życie to sÅ‚użą głównie do testów wydajnoÅ›ci agenta dla MIIS - no i majÄ… jakieÅ› 110 tys braci :).
Jeżeli chodzi o zakładanie testowych userów do takich potrzeb to używam admod.exe.
July 28th, 2007 at 9:48 pm
ok. Czyli z mojego punktu widzenia (gdy projekty w któych uczestniczę mają aplikacje z trochę bogatszymi i często modyfikowanymi profilami (włącznie z billingiem i operowaniem na tymże billingu), i niezbędna jest dostępność całego profilu naraz) LDAP jest raczej zbędny. Bo i tak trzeba modyfikować bazę danych. Ew. wykorzystywać tylko AD jako mechanizm uwierzytelniający (np. ostatnio AzMan). A reszta w SQL-u.
Choć oczywiście to zawsze zależy od szczegółów aplikacji.
July 29th, 2007 at 12:30 pm
Z Twojego punktu widzenia może tak być - ja nie mówię że LDAP jest rozwiązaniem na wszystko - gdyby tak było to nie byłoby baz danych relacyjnych :).
To co piszesz też siÄ™ da zrealizować, pytanie tylko czy tak samo szybko i dobrze. Za to idea wykorzystania uwierzytelnienia w aplikacjach na przykÅ‚ad Web i przechowywania jakiÅ› profili aplikacyjnych itp w katalogu jest jak najbardziej “mniodna”.
I tak jak sam zauważyłeś - to zależy od szczegółów aplikacji.
Leave a Reply