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

  • 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?).

  • 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 :).

  • 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ść?

  • 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.

  • 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. 🙂

  • 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