Net, autentificare și autorizare
date de identificare
Identificarea unui utilizator care rulează o aplicație poate fi realizată prin aplicarea datelor de identificare (identitate). clasa WindowsIdentity vă permite să reprezinte utilizatorul Windows. În plus față de cont Windows pentru identificarea utilizatorul poate folosi, de asemenea, alte clase care implementează IIdentity de interfață. Această interfață permite accesul la numele de utilizator, precum și informații cu privire la faptul dacă utilizatorul este autentificat, iar autentificarea de tip aplicabil.
Principal (principal) este un obiect care conține identitatea și rolul unui utilizator căruia îi aparține. Interfața IPrincipal Identitatea este o proprietate care returnează obiectul Ildentity și IsInRole metoda prin care puteți verifica dacă utilizatorul este într-adevăr, un membru al unui anumit rol.
Rolul (rol) este o colecție de utilizatori care au drepturi de acces similare, și servește ca unitate pentru gestionarea utilizatorilor. Ca roluri poate acționa ca un grup pentru Windows, și determinată de seturi dezvoltator de rânduri.
În .NET oferă următoarele clase de principii: WindowsPrincipal și GenericPrincipal. Cu toate acestea, în afară de acestea, puteți crea, de asemenea, propriile clase personalizate de directori care implementeaza interfata IPrincipal.
Următorul exemplu demonstrează modul de a crea o aplicație consolă, care oferă acces la principalul, care, la rândul său, permite accesul la cont Windows de bază.
În primul rând, va trebui să importe System.Security.Principal spațiul de nume și System.Threading. Apoi, trebuie să se precizeze că NET trebuie să se conecteze automat la principal pentru cont Windows din motive de securitate, .NET nu se umple automat CurrentPrincipal proprietate de curgere. Acest lucru se poate face după cum urmează:
WindowsIdentity.GetCurrent () metoda poate fi utilizată pentru a accesa pentru Windows detaliile contului de utilizator. Cu toate acestea, este mai adecvat într-o situație în care este necesar accesul la principalul obligat pentru a primi doar o singură dată. Dacă aveți nevoie de acces multiplu la principal, mai bine cu metoda SetPrincipalPolicy pentru a stabili politica, astfel încât fluxul de curent în sine asigură accesul la principalul obligat. Această metodă indică faptul că principalul în firul curent trebuie să păstreze obiectul de identitate pentru Windows.
Toate sunt menite să identifice clase, cum ar fi Windows de identitate, punerea în aplicare interfață IIdentity. Această interfață are trei proprietăți (AuthenticationType, IsAuthenticated și nume), care urmează să fie puse în aplicare în mod necesar în toate clasele de identitate derivate.
Adăugați următorul cod pentru a accesa proprietățile principal din obiectul Subiect:
După rularea acestei aplicații consola de ieșire ei va apărea aproximativ așa cum este prezentat mai jos; unele elemente vor varia în funcție de configurația mașinii utilizate și rolurile pe care sunt asociate cu utilizarea contului de conectare:
Capacitatea de a accesa cu ușurință informații despre utilizatorii actuali și rolurile lor este extrem de avantajos. o decizie poate fi luată pe baza acestor informații, ce acțiuni ar trebui să li se permită și care sunt interzise. Posibilitatea de a utiliza roluri și grupuri de utilizatori de Windows oferă un avantaj suplimentar, deoarece vă permite să administreze mijloacele standard și, de regulă, nu necesită modificarea codului în cazul unor modificări în rolurile de utilizator. Următoarea secțiune discută despre rolul mai detaliat.
de securitate declarativă bazată pe roluri
Securitatea bazată pe roluri (de securitate bazate pe rol) este deosebit de utilă în situațiile în care obținerea accesului la resurse joacă un rol critic. Exemplul principal al acestui poate servi ca sfera financiară, în cazul în care angajații executabile determina ce rol, informațiile pe care le pot accesa și ce acțiuni pot lua.
Securitatea bazată pe roluri este ideal pentru a fi utilizat în combinație cu Windows sau cu un director special pentru fiecare utilizator pentru a controla accesul la resursele web. De exemplu, pe site-ul utilizatorilor neînregistrați pot fi acordate doar acces limitat la conținutul său, și abonații care plătesc - dimpotrivă, acces suplimentar la conținut special.
În multe feluri, tehnologia ASP.NET face de securitate bazată pe roluri de proces mai simplu, deoarece permite să plaseze majoritatea codului pe server. De exemplu, pentru a pune în aplicare un serviciu web care necesită trecerea procedurii de autentificare, este suficient să se utilizeze un subsistem de conturi Windows și scrie o metodă de web, astfel încât, înainte de a acorda acces la funcționalitatea în primul rând, să efectueze controale, dacă utilizatorul este membru al corespunzătoare grupurilor de utilizatori Windows.
Luați în considerare un scenariu cu aplicatie intranet care se bazează pe utilizarea conturilor Windows. Să presupunem că sistemul are un grup numit Manageri (manageri) și asistenți (asistenți), iar utilizatorii sunt atribuite acestor grupuri în funcție de rolurile lor în organizație. În plus, aplicația are o funcție care vă permite să afișați informații despre angajați, la care accesul este de a fi doar membri ai grupului de manageri. Desigur, puteți scrie cu ușurință codul care verifică dacă utilizatorul curent este un membru al grupului de manageri, iar în cazul în care accesul la această funcție este activată.
Cu toate acestea, în cazul în care ulterior decideți să reordona conturile de grup și se adaugă la ele, de exemplu, un grup de personal (personal), ai cărei membri trebuie să fie, de asemenea, posibilitatea de a avea acces la informații despre angajați, există o problemă. În acest caz, necesitatea de a revizui toate codul din nou și actualizați-l oriunde, astfel încât acesta include dreptul pentru noul grup.
O abordare mai adecvată pentru acest scenariu este acela de a crea o rezoluție în numele, de exemplu, ReadEmployeeDetails, și atribuiți-l la grupurile necesare. În cazul în care codul va fi verificat ReadEmployeeDetails permisiunea, pentru a actualiza aplicația, astfel încât este posibil să se obțină acces la informații despre angajați și membri ai grupului personal ar crea pur și simplu un grup, a pus în ea utilizatorii dorite și să alocați ReadEmployeeDetails permisiune.
Ca și în codul de protecție de acces, interogările de securitate bazate pe rol (de exemplu, cum ar fi „utilizator trebuie sa fie administratorul grupului“) poate fi realizată fie prin apelarea în mod imperativ IsInRole () metoda de clasa IPrincipal, fie prin atribute. Cerințe privind autoritatea poate fi specificată declarativ într-o clasă sau metodă atribut nivel [PrincipalPermission].
Când executați aplicația în contextul utilizatorului care nu este membru al unui grup local pentru Windows numit Users (Utilizatori), ShowMessage () metoda va arunca o excepție.