Tema: ASP 2, domeno autentifikacija, userio teisės, mistika
Autorius: Meff
Data: 2011-05-30 14:18:20
Sveiki,
jau nebesurandu minčių kodėl useris "neturi teisių". 
ASP .Net 2.0 intranetinis WEB'as (kažkada buvo .Net 1.0, nuportintas prieš 3 metus), kurį aš supportinu.

Trumpoji versija:

Pasak klientų "iš niekur nieko" useris nustoja turėti teises į kai kuriuos URL'us. Naudojamas Windows autentifikavimas (visi useriai jungiasi prie domeno), userio duomenys saugomi sesijoje, priėjimo teisė prie meniu punktų PAGE_LOAD metu selektinama iš duombazės. 
Problema išsisprendžia perkūrus Windows'inį userio profilį.
Gal kam buvo panaši situacija ir ją kaip nors išsprendėt?



Ilgoji versija:

Useriai autentifikuojami su Windiws (yra domenas) autentifikacija. Įgyvendinta custom autorizacija. Po autentifikacijos į sesiją įsirašo userio RoleID iš duombazės. Kiekvienam PAGE_LOAD'e iš DB selektinama ar RoleID (iš sesijos) ir šitam URLui (iš Request.URL imamas vienas parametras) yra priėjimo teisės. Veikia, išskyrus keletą atvejų pas klientą, kokių niekaip nepavyko atkartoti test aplinkose. 

Problema: "iš niekur nieko" _autentifikuotas_ useris nebetenka _autorizacijos_ prie tam tikrų URLų, nors jo RoleID ir URL'as yra surišti - tai yra duombazėje to userio rolė teises turi. Įdomiausia, kad problema išsisprendžia NURESETINUS (atsijungus nuo Active Directory, ištrynus visą Documents and Settings\userio_domeninis_vardas, vėl prisijungus prie AD) DOMENINĮ USERIO PROFILĮ lokaliai userio kompe arba useriui prie Apps'o jungiantis tokiu pačiu username'u, kaip domeninis username'as, bet turint lokalias Windows administratoriaus teises, arba perinstaliavus švariai Windows'us. 
Paimti laptopa iš kliento darbuotojo kai yra kilus problema praktiškai nėra galimybės (kliento adminas operatyviai perkuria win profilį ir useriai dirba vėl kelis metus, o kartais tam pačiam useriui problema greitai pasikartoja... ir problema atsiranda tik su laptopais dirbantiesiems, nors dėl šito punkto neesu 100% tikras).

Taigi: niekur aplikacija netikrina visiškai jokios kitos informacijos iš domeno. Ima tik windowsinį username'ą.

Dabar galvoju kaip gali būti domeninis userio profilis susijęs su HTTP sesija? Gal su Request.URL? URL'e nėra jokių lokalizavimų, visos raidės mažosios. Apie Active Directory konfigūraciją nieko negaliu pasakyti, išekyrus, kad naudojamas Wind2k3 serveris kaip DC. O userių profiliai _greičiausiai_ ne roaming (useriai daug dirba out of office).

Ar kas nors buvo susidūrę su panašiomis problemomis? Ar pavyko surasti išeitį?

Ištrauka iš web.config:
<authentication mode="Windows"/>