2009-03-11 11 views
7

Stworzyłem pewne zasoby intranetowe oparte na PHP, które wymagają zalogowania się użytkowników. Użytkownicy tworzą własne loginy i sprawdzam, czy są zalogowani za pomocą pliku cookie.Czy intranet PHP może udostępniać login do systemu Windows?

Zostałem zapytany, czy mogę powiązać ten login z ich loginem systemu Windows. Moja początkowa odpowiedź brzmiała: "strona internetowa nie może uzyskać dostępu do logowania do systemu Windows - może to stanowić zagrożenie dla bezpieczeństwa". Ale jeden z naszych działów używa Sharepoint, a w rzeczywistości wiąże się z logowaniem do systemu Windows.

Jak to zrobić? Czy mogę to zrobić w PHP? Jeśli tak, dlaczego nie jest to straszna luka w zabezpieczeniach?

Odpowiedz

8

Co szukasz jest Uwierzytelnianie NTLM w stosunku do strony PHP, która jest doskonale wykonalna, ale wydaje się, że nie ma na to żadnego sposobu w PHP.

Wystarczy popatrzeć na http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/

Trzeba także dodać witryny do listy zaufanych witryn w IE (lub równowartość w zależności od tego przeglądarki używasz) i w ustawieniach dla zaufanych witryn, włącz „wyślij prąd Nazwa użytkownika i hasło'.

To nie jest straszna luka w zabezpieczeniach, ponieważ poświadczenia nie są wysyłane przez Internet, a użytkownik końcowy specjalnie polecił przeglądarce, aby przesyłała dane uwierzytelniające do danej strony internetowej.

5

PHP obsługuje LDAP, dzięki czemu można uzyskać dostęp do systemu Windows' Active Directory

Jest to projekt na SourceForge: adLDAP - "Uwierzytelnianie LDAP z PHP dla Active Directory"

4

Często odbywa się to przy użyciu kombinacji LDAP i NTLM. Przeglądarki takie jak IE i Firefox mogą wykonywać uwierzytelnianie NTLM, które moim zdaniem działa jak Sharepoint. Używam aplikacji portalu portalu opartej na języku Java, która korzysta z protokołu LDAP do synchronizowania użytkowników i NTLM w celu uwierzytelniania.

To, czego absolutnie nie chcesz robić, to wprowadzenie przez użytkownika nazwy domeny i hasła do przeglądarki. W poprzednich latach widziałem kilka projektów wykorzystujących to podejście z LDAP do uwierzytelniania użytkowników Windows. Masz rację, to jest problem bezpieczeństwa. Użytkownik powinien wprowadzić swoje hasło tylko jeden raz: podczas logowania się do stacji roboczej. Ostatnią rzeczą, jakiej potrzebujesz, są hasła siedzące w plikach pamięci podręcznej/tymczasowych.

Przepraszam, że nie mogę podać odpowiedzi "oto, jak to robisz z aplikacją PHP". O ile mi wiadomo, nie ma jednej odpowiedzi na ten problem.

(Jedną rzeczą, którą zrobiłem w przeszłości i nigdy naprawdę nie sprawdziłem, czy była to poprawna lub słaba forma, było użycie PHP z IIS. Jeśli używasz IIS, to PHP zapełni zmienną serwera REMOTE_USER z nazwą użytkownika Windows (DOMAIN \ user). To działało dla tego, co robiłem w tym czasie.)

Powiązane problemy