Szukam sposobu na uwierzytelnianie użytkowników przez LDAP z PHP (z usługą Active Directory jako dostawcą). Najlepiej byłoby, gdyby mógł działać w IIS 7 ( adLDAP robi to na Apache). Czy ktoś zrobił coś podobnego i odniósł sukces?
- Edycja: wolałbym bibliotekę / klasę z kodem, który jest gotowy do użycia ... Byłoby głupio wymyślać koło, gdy ktoś już to zrobił.
Odpowiedzi:
Importowanie całej biblioteki wydaje się nieefektywne, gdy wszystko, czego potrzebujesz, to zasadniczo dwa wiersze kodu ...
źródło
ldap_set_option
aby zachowywać się w inny sposób. Może ustawienie wersji protokołu? Będziesz musiał eksperymentować. Osobiście sugerowałbym sprawdzenie, czy nie ma pustego hasła, tak dla bezpieczeństwa.ldap_bind
byłoby to obsługiwane, a znaki specjalne nie są problemem.Można by pomyśleć, że zwykłe uwierzytelnienie użytkownika w Active Directory byłoby dość prostym procesem przy użyciu LDAP w PHP bez potrzeby korzystania z biblioteki. Ale jest wiele rzeczy, które mogą to dość szybko skomplikować:
W większości przypadków łatwiej jest skorzystać z biblioteki LDAP obsługującej powyższe. Ostatecznie skończyło się na utworzeniu własnej biblioteki, która obsługuje wszystkie powyższe punkty: LdapTools (Cóż, nie tylko do uwierzytelniania, może zrobić znacznie więcej). Można go używać w następujący sposób:
Powyższe wywołanie uwierzytelniające:
Istnieją inne biblioteki, które również to robią (takie jak Adldap2). Czułem się jednak na tyle zmuszony, aby podać dodatkowe informacje, ponieważ najbardziej głosowana odpowiedź jest w rzeczywistości zagrożeniem bezpieczeństwa, na którym można polegać, bez przeprowadzania weryfikacji danych wejściowych i bez korzystania z TLS.
źródło
ldaps://
formatu połączenia jest przestarzałe. W moim przykładzie, gdy określisz,setUseTls(true)
że używaldap://
formatu, a następnie wydaje StartTLS przy użyciuldap_start_tls($connection)
. Tak więc sam protokół TLS nie został wycofany, po prostu łączy się za pomocąldaps://
(co w rzeczywistości łączy się z LDAP przez zupełnie inny port).Robię to po prostu przekazując poświadczenia użytkownika do ldap_bind ().
http://php.net/manual/en/function.ldap-bind.php
Jeśli konto można powiązać z LDAP, jest prawidłowe; jeśli nie może, nie jest. Jeśli wszystko, co robisz, to uwierzytelnianie (nie zarządzanie kontem), nie widzę potrzeby posiadania biblioteki.
źródło
Podoba mi się klasa Zend_Ldap , możesz używać tylko tej klasy w swoim projekcie, bez Zend Framework.
źródło
PHP ma biblioteki: http://ca.php.net/ldap
PEAR ma również szereg pakietów: http://pear.php.net/search.php?q=ldap&in=packages&x=0&y=0
Ja też nie korzystałem, ale w pewnym momencie miałem zamiar i wydawało się, że powinny działać.
źródło
Dla tych, którzy szukają pełnego przykładu, odwiedź http://www.exchangecore.com/blog/how-use-ldap-active-directory-authentication-php/ .
Przetestowałem to łączenie się z kontrolerami domeny Windows Server 2003 i Windows Server 2008 R2 z serwera sieci Web systemu Windows Server 2003 (IIS6) i przedsiębiorstwa z systemem Windows Server 2012 z usługami IIS 8.
źródło