Wednesday, July 18th, 2007...1:25 am
LDAP i developerzy
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