Logowanie poprzez Active Direcotry

0

Cześć, mamy w pracy baaardzo stary system z wieloma błędami i w związku z tym, że coś tam długie w php zostałem poproszony czy nie dał bym rady tego napisać lepiej i od nowa. Generalnie sama kwestia aplikacji jest bardzo prosta i nie widze w niej przeszkód, natomiast jest coś czego wczoraj nie byłem w stanie wygooglować przez cały dzień. Możecie mnie zwyzywać, ale nic nie znalazłem co bym zrozumiał i potrafił zaimplementować.

Chodzi o logowanie do tej aplikacji poprzez Active Directory (streszczenie problemu na końcu).

To co mi się udało do tej pory osiągnąć to zalogowac się do tego serwera testowego http://www.forumsys.com/en/tutorials/integration-how-to/ldap/online-ldap-test-server/ za pomocą phpowych funkcji (http://stackoverflow.com/questions/171519/authenticating-in-php-using-ldap-through-active-directory), oraz dla testów pobawiłem się później również https://github.com/Adldap2/Adldap2-Laravel .

W obu przypadkach połączyłęm się z tym serwerem pomślnie, jednak z tego co rozumiem jest to logowanie za pomocą samego ldapu, a nie Active Directory.
Dodatkowo wymaga to wszystko podania nazwy użytkownika i hasła, a ja chciałby, żeby logowanie odbywało się bez konieczności podawania danych (z tego co przeczytałem jest to możliwe tylko na przeglądarkach IE, a w razie korzystania z innej, żeby wyskoczył formularz - akurat ten fragment logiki sam ogarnę). Gdzieś czytałem, że w $_SERVER['USER_LOGON'] powinienem znaleźć nazwę użytkownika, jednak u siebie w środowisku testowym nie widzę nic takiego (nawet wyświetlając całą zawartość $_SERVER), zgaduję że to jest akurat kwestia ustawień zabezpieczeń i tego, że testuje całość jeszcze na zewnętrznym serwerze. Pozostaje jeszcze kwestia hasła wiec domyślam się taka autentykacja musi odbywać się bez jego udziału i w jakiś inny sposób.

Takie coś istnieje na pewno ponieważ logujemy się w ten sposób do innych aplikacji intranetowych w pracy, natomiast wszystko napisane jest dawno temu. Niestety nie mam dostępu do kodu, jak też nie wiem jak ma się do dzisiejszych standardów, plus działa tylko na IE w max wersji 8 czy tam 9 więc nie wiem na ile mógłym nawet się na tym wzorować.

Jeszcze wczoraj rano nie miałem zielonego pojęcia o ldapie i AD, a cały dzień w Google chyba więcej mi pokręcił w głowie niż pomógł. Nie wykluczam więc błędu w moim zrozumieniu całej koncepcji ldapu i ad.

Reasumując z czym mam problem:

Jak mogę zaimplementować samo logowanie i autentykację poprzez Active Directory do aplikacji napisanej w PHP ( z użyciem Laravel) bez wpisywania danych w formularze i co do tego potrzebuję (jakieś dodatkowe progoramy? pluginy? serwery?). Najchętniej oczywiście zobaczyłbym jakiś przykładowy kod, albo łopatologicznie wypunktowane co i za pomocą czego mógłbym zrobić, albo co przeczytać.

Sesje i inne pierdoły dookoła logowania zrobię, problem tylko i wyłącznie w tym jak przekazać dane logowania z klienta na server php i jak te dane zweryfikować.

1

Słowa kluczowe: SSO PHP ActiveDirecotry plus nazwa serwera, na ktorym jest aplikacja.

Jest trochę materiałów dostępnych, chociażby ten link http://stackoverflow.com/questions/1003751/how-can-i-implement-single-sign-on-sso-using-microsoft-ad-for-an-internal-php który opisuje jak skonfigurować Apache'a

0

Nie miałem ostatnio czasu się tym bawić ponieważ jest to moje poboczne zadanie w pracy i miałem sporo swoich obowiązków.

Niestety nie bardzo mi to wychodzi i wciąż nie mogę pobrać żadnego nagłówka z nazwą domeny/użytkownika.
Przekopałem kawałek internetu w poszukiwaniu rozwiązań i nic nie znalazłem co by zadziałało.
Próbowałem z tego linku od Shagrina, jak i z nowszego wątku u nich na stronie https://sourceforge.net/p/mod-auth-sspi/discussion/550583/thread/1d7f5dba/#32f3 .

Ciągle brak efektów więc stawiam, że to w moim rozumowaniu być może jest problem.

Póki co skupiłem się na próbie uzyskania nazwy użytkownika w jakimś nagłówku, jednak co bym nie zrobił to nie potrafię do tego dojść.

Próbowałem ręcznie wyrzucaćnagłówki z prośba o zalogowanie

Header("WWW-Authenticate: NTLM"); oraz Header("WWW-Authenticate: Basic realm=\"My Realm\"");  
Header("HTTP/1.1 401 Unauthorized");

Dopiero po czymś takim pojawia mi się zmienna

$_SERVER['PHP_AUTH_USER']_

i o ile w drugim przypadku zpaisuje się to gdzieś na siłe w serwerze, to w przypadku NTML wygląda to tak jakbym ciągle błędne dane wpisywał i nie mogę przejść weryfikacji. To co dziwnego jeszcze jest w tym sposobie to to, że przed nazwą domeny do której jestem zalogowany (jakiś chyba sukces tutaj ponieważ widzę nazwę domeny) widnieje adres mojego komputera - zgaduej więc, że skrypt próbuje szukać jakiejś weryfikacji na moim kompie zamiast łączyć się z serwerem domenowym (wybaczcie jeżeli mieszam pojęcia, ale chyba ogólnie zrozumiecie co mam na myśli) co w sumie słusznie kończyło by się odmową dostępu i trzeba byłoby to testować z serwera głownego na którym wszystko już jest.

Dobrze myślę?

Myślę, że najlepiej pomogła by mi osoba, która robiła już takie rzeczy i poświęciła by mi chwilkę, żeby odpowiedzieć na kilka pytań.
Całość obecnie pracuje na Windowsie z xampp/'artisan serve' (takie swag środowisko testowe) i próbuje to spinać Laravelem. Sama aplikacja jest już gotowa (mogę pomóc gdyby ktoś chciał ciągnąć dane z Oracle za pomocą eloquenta bo chwile za tym kopałem ;P ), została mi tylko weryfikacja dostępu za pomocą Active Directory, więc każda sugestia i pomoc w tym zakresie będą mile widziane bo ja jestem już bliski poddania sie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1