2009-02-19 25 views
5

Jestem zainteresowany najlepszymi praktykami korzystania z uwierzytelniania LDAP w aplikacjach internetowych opartych na języku Java. W mojej aplikacji nie chcę przechowywać nazwy użytkownika \ hasła, tylko niektóre identyfikatory. Ale chcę pobrać informacje dodatkowe (nazwisko, nazwisko), jeśli takie istnieją w katalogu LDAP.Najlepsze praktyki LDAP

Odpowiedz

6

Mój zespół używa LDAP jako standardowego sposobu uwierzytelniania. Zasadniczo traktujemy LDAP jak każdą inną bazę danych.

Aby dodać użytkownika do aplikacji, należy wybrać jedną z LDAP lub utworzyć ją w LDAP; po usunięciu użytkownika z aplikacji pozostaje on w LDAP, ale nie ma dostępu do aplikacji.

Zasadniczo musisz przechowywać lokalnie nazwę użytkownika LDAP. Możesz albo odczytać dane LDAP (e-mail, dział itp.) Z LDAP za każdym razem, albo pobrać je w jakiś sposób, ale czytanie z LDAP jest prawdopodobnie prostsze i mądrzejsze, ponieważ dane LDAP mogą się zmieniać. Oczywiście, jeśli potrzebujesz obszernie raportować lub wykorzystywać dane LDAP, możesz je pobrać z LDAP (ręcznie lub za pomocą zadania wsadowego).

Fajne jest to, że po wyłączeniu użytkownika w LDAP, jest on wyłączony we wszystkich aplikacjach jednocześnie; również użytkownik ma takie same poświadczenia we wszystkich aplikacjach. W środowisku korporacyjnym, z wieloma wewnętrznymi aplikacjami, jest to duży plus. Nie używaj protokołu LDAP dla użytkowników tylko dla jednej aplikacji; żadnych rzeczywistych korzyści w tym scenariuszu.

1

Jeśli masz więcej niż jedną aplikację sieciową i chcesz korzystać z uwierzytelniania LDAP, rozwiązanie z pojedynczym podpisem może być lepsze niż tworzenie własnego uwierzytelniania LDAP. CAS obsługuje uwierzytelnianie LDAP i może pobrać dane potrzebne do aplikacji.

W mojej uczelni faktycznie wdrożyliśmy CAS jako pojedyncze logowanie na naszym serwerze Active Directory. Używamy również CAS do uwierzytelniania naszych aplikacji J2EE i pracujemy nad wykorzystaniem CAS do uwierzytelniania naszych aplikacji PHP.

Używamy AD do przechowywania użytkowników dla domeny. Istnieją pewne OU na podstawie rodzaju użytkownika. Każdy użytkownik ma unikatowy identyfikator, który jest jego identyfikatorem ucznia/pracownika, dzięki czemu aplikacje mogą wykorzystywać to jako klucz podstawowy w swoich bazach danych. Posiadamy metodę autoryzacji opartą na bazie danych dla naszych aplikacji PHP. Autoryzacja aplikacji J2EE pochodzi z wartości w LDAP.

Powodzenia w aplikacji.

0

Czy chcesz, aby użytkownik wprowadzał tylko identyfikator, a następnie pobierał resztę informacji z LDAP? To całkiem proste.

  1. Tworzenie LdapInitial kontekst i połączyć się z LDAP
  2. Do wyszukiwania dla identyfikatora (powinien być przechowywany jako pewną wartość atrybutu) - przykład (& (userid = Jan) (objectClass = user)) - co oznacza "userid = Jan I objectClass = user"
  3. wynik wyszukiwania obiektów będzie zawierać wszystkie atrybuty (lub te Pytałeś)

Some LDAP implementacje (znaczące MS ActiveDirectory LDAP) nie pozwalają na łączenie się z anonimowym użytkownikiem. Aby móc się połączyć, musisz mieć techniczny identyfikator użytkownika/hasło.

Jak wspomniano powyżej, LDAP ma zwykle sens, gdy masz wiele aplikacji.

P.S. Aby poczuć, czym jest LDAP, spróbuj Apache Directory Studio.

+0

Niezupełnie tak! W mojej bazie danych aplikacji chcę tylko identyfikator sklepu i powiązane DN z LDAP. A jeśli potrzebuję dodatkowych informacji o użytkowniku, mogę pobrać go z katalogu za pomocą DN –

+0

Aż do ciebie, chociaż jest to duplikacja. Ale o co właściwie chodzi? –

4

Ogólne ogólne wskazówki na temat korzystania z protokołu LDAP można znaleźć na stronie "LDAP: Programming practices".

+2

Link jest martwy, ale podsumowanie można znaleźć na stronie https://ff1959.wordpress.com/2011/10/27/ldap-programming-best-practices/ –