Usernév kiolvasás windows hálózatból
2007-09-28T09:48:39+02:00
2007-09-28T10:11:54+02:00
2022-07-25T19:16:25+02:00
hgr
Üdv mindenkinek!
A probléma a következő:

Intraneten futó PHP alapú webes alkalmazásnak kell user authentikációt végeznie a loacl windows hálózatba bejelentkezett user alapján úgy, hogy a bejelentkezett user loacl windows hálózati usernevét lekérdezi és az lesz a PHP alkalmazás user azonosítási folyamatának egyik eleme.

Ennek a problmának a technikai megvalósítására várok ötleteket.

(Milyen PHP-s lib/függvéy/extension létezik arra, hogy kiolvassa az adott kliensről a windows local hálózatba bejelentkezett felhasználó usernevét?)
Köszönettel HGR
Mutasd a teljes hozzászólást!
Csak akkor lehetséges, ha a webszerver Windows-on fut és a webes alkalmazásodhoz történő hozzáférést filerendszer szinten jogosultságokkal véded. Plusz még szükséged lesz ehhez egy NTLM hitelesítésre képes webszerverre (IIS, apache) és böngészőre is (IE, FireFox - Operát nem tudom) is. IIS-nél történhet a hitelesítés basic authentication-nel (böngésző feldob egy ablakot, ahol a felhasználónak be kell írnia a felhasználónevet és a jelszót - nem biztonságos), vagy integrált windows hitelesítéssel. Apache úgy tudom, hogy csak integrált windows hitelesítéssel működik, de majd utánanézel. IE esetén megadhatod, hogy automatikusan hitelesítse az aktuálisan bejelentkezett felhasználót az NTLM hitelesítést kérő szerver felé, a többi böngésző mindenképpen feldobja tudtommal a jelszó bekérő ablakot, mint a basic authentication-nál, de a hitelesítés már NTLM-mel történik.

A sikeres hitelesítés után IIS alatt a LOGON_USER szerver változóba kerül be a hitelesített felhasználó neve gépnév(vagy tartománynév)\felhasználónév alakban ($_SERVER['LOGON_USER']).

Ha nincs Active Directory tartományod, akkor a jogosultságok összelövése elég problémás lesz, mert a webszerver nem biztos, hogy képes lesz egy másik gépen található helyi felhasználó azonosítására.
Mutasd a teljes hozzászólást!

  • Szerintem erre konkrétan semmilyen, de legjobb tudomásom szerint php-ből lehet külső programot (esetleg dll-t) meghívni.

    Érdemes lehet esetleg vmilyen nyelven (ha a platformfüggetlenség szempont akkor pl. Java-ban) megírni az LDAP-al a kommunikációt, és azt meghívni php-ből.
    Mutasd a teljes hozzászólást!
  • Milyen webszerver van?
    (IIS-el biztos, hogy meg lehet oldani - ASP.NET is megteszi, ergo PHP-nak is tudnia kell - Apache-al nem tudom mi a helyzet)
    Mutasd a teljes hozzászólást!
  • A PHP mivel szerveroldali nyelv ezért a szerveren helyezkedik el és a kliens gépével kommunikálgat. Attól kéréseket, adatokat kap (általában GET és POST metódussal) és általában szöveges (ritkábban kép, bináris file) kimenetet generálva adatokat ad vissza. A PHP-ben nincs lehetőség arra, hogy kiolvasd a kliensre bejelentkezett felhasználó nevét, ehhez valami kliens oldali megoldás kell. ActivX, Java alkalmazás ami kiolvassa a felhasználó nevet és azt tudatja valamilyen megoldással (rejtett szövegdoboz, GET, POST átadással) a szerverrel.

    De majd jönnek az okosabban és felhomályosítanak ha én tévednék.
    Mutasd a teljes hozzászólást!
  • Csak akkor lehetséges, ha a webszerver Windows-on fut és a webes alkalmazásodhoz történő hozzáférést filerendszer szinten jogosultságokkal véded. Plusz még szükséged lesz ehhez egy NTLM hitelesítésre képes webszerverre (IIS, apache) és böngészőre is (IE, FireFox - Operát nem tudom) is. IIS-nél történhet a hitelesítés basic authentication-nel (böngésző feldob egy ablakot, ahol a felhasználónak be kell írnia a felhasználónevet és a jelszót - nem biztonságos), vagy integrált windows hitelesítéssel. Apache úgy tudom, hogy csak integrált windows hitelesítéssel működik, de majd utánanézel. IE esetén megadhatod, hogy automatikusan hitelesítse az aktuálisan bejelentkezett felhasználót az NTLM hitelesítést kérő szerver felé, a többi böngésző mindenképpen feldobja tudtommal a jelszó bekérő ablakot, mint a basic authentication-nál, de a hitelesítés már NTLM-mel történik.

    A sikeres hitelesítés után IIS alatt a LOGON_USER szerver változóba kerül be a hitelesített felhasználó neve gépnév(vagy tartománynév)\felhasználónév alakban ($_SERVER['LOGON_USER']).

    Ha nincs Active Directory tartományod, akkor a jogosultságok összelövése elég problémás lesz, mert a webszerver nem biztos, hogy képes lesz egy másik gépen található helyi felhasználó azonosítására.
    Mutasd a teljes hozzászólást!
abcd