Windows autentizace (ntlm)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
rumcais1
Člen | 80
+
0
-

Jsem začátečník v NETTE. Na IIS bych potřeboval udělat windows authentizaci. Uživatele dostanu pomocí $_SERVER[„LOGON_USER“], ale nevím jak ho pak dostat do nette. Opravnění bych pak měl zapsané v db. Ještě bych pak ověřoval rozsah sítě a když půjde z venku tak dal klasický sign formular. Mám to udělané v klasickém php, ale nevím jak na to v NETTE. Díky za radu.

Šaman
Člen | 2659
+
0
-

Můžeš si od BasePresenteru podědit SecuredPresenter a v jeho metodě startup() si normálně staticky načíst data stejně, jako jsi byl zvyklý. Nebo to nacpat rovnou do BasePresenteru. Metoda startup se zavolá pokaždé jako první a je v ní nutné volat parent::startup().
Je to hodně ošklivý způsob (a těch mrtvých koťátek..), ale jestli s Nette začínáš, tak se tu nejdřív rozkoukej a pak zjisti, jestli se nevyplatí řešit to jinak.

Editoval Šaman (2. 2. 2013 23:33)

ic
Člen | 430
+
0
-

Taky jsem tento způsob kdysi používal… ale co si vzpomínám to mělo dost problémů. Nemožností nastavit si dobu přihlášení počínaje a tím, že přihlášený uživatel odesílá jméno i heslo v čitelné podobě (jen zakódované do base64) v hlavičce HTTP protokolu a kdokoliv ho tedy může po cestě odposlechnout. Ve své době, kdy se tohle hojně používalo na to byly i programy na routery, které takovéto hesla odchytávaly a ukládaly.

rumcais1
Člen | 80
+
0
-

ic: Já to ntlm používám jen z vnitřní sítě. IIS mám taky uvnitř. A z venku se budou hlásit klasicky.
Šaman: když to chci použít v BasePresenteru abych si to zkusil jak to funguje. Ja to použít? zkusil jsem dát do startup dát new Nette\Security\Identity(2, NULL, []); ale to mi nepřihlásí.

echo
Člen | 134
+
0
-

Zdravím, zkuste si do presenteru injectnout Nette\Http\UserStorage a nastavit identitu $this->userStorage->setIdentity() a $this->userStorage->setAuthenticated(true). https://api.nette.org/…age.php.html#82
https://api.nette.org/…ser.php.html#86

Nebo ještě lépe, napište si vlastní Nette\Security\IAuthenticator a v base presenteru pak $this->getUser()->login($credentials).