Site-uri cu conturi de acces. Mecanisme de autentificare și autorizare în ASP.NET. Episodul 1

Scenariul de utilizare este simplu iar întrebări despre tematică se găsesc pe o droaie de forumuri…

Vreau și eu un site cu conturi, cu username și parolă. Vreau site cu drepturi de acces pe diverse pagini sau module din aplicația mea Web. Vreau să stochez informații asociate diverșilor mei vizitatori. Etc, etc, etc…

E drept, soluții semi-preparate se găsesc. Uneori însă, vrei s-o iei de la zero din cauza unor specificații mai-nu-știu-cum. Și te-apuci de treabă, creând tabele peste tabele pentru înregistrări cu utilizatori, cu proceduri stocate și menținerea parolelor într-un format hash, nu text în clar, mecanisme de management al drepurilor pe grupuri de utilizatori. Recuperarea parolei uitate, autentificare single sign-on și câte și mai câte…

Pentru aplicații ASP.NET ce folosesc baze de date pe SQL Server (Express, că-i gratuit), avem un snop de scule și mecanisme care ar trebui să ne pună pe picioare foarte repede cu așa ceva. În .NET Framework sau ASP.NET, rețineți trei cuvinte cheie, trei clase sau tehnici, cum vreți să le spuneți:

Membership
Ăsta ține de crearea conturilor, actualizarea sau recuperarea parolei, stocarea datelor în formate sigure. Oricum, ține de conturi.

RoleManager
Una este autentificarea, adică recunoașterea vizitatorului, și alta este autorizarea, adică ce drepturi are acel vizitator, pe unde poate avea acces. RoleManager se ocupă de aceste drepturi și de plasarea conturilor pe grupuri de acces.

Profile
Atunci când vrei să știi despre un vizitator mai multe decât username și parolă, folosești Profile. Într-un profil stochezi informații diverse de genul data nașterii, numele mic, adresa poștală, culoarea preferată sau măsura la pantofi🙂

Ei bine, mecanismele astea 3 sunt gestionate în ASP.NET cu Provider-i, niște clase care se leagă la baza de date pentru a furniza diverse operații. În principiu, poți să-ți faci singur acești furnizori, dar există și unii gata făcuți care se bazează pe stocarea datelor în SQL Server.

Și cum pregătești baza de date ca să stochezi datele? În principiu, ai o aplicație, o sculă "ascunsă" prezentă în .NET Framework SDK: se numește aspnet_regsql.exe și stă pitită în C:\Windows\Microsoft.NET\Framework\v2.0.50727\. Cam cum o folosesc io?

Păi îmi trebuie SQL Server Express – fie descarc și instalez, fie probabil că mi l-a instalat Visual Studio oricum. Dup-aia, îmi pun consola de administrare, pe numele ei de fată SQL Server Management Studio Express. Pornesc consola și-mi creez baza de date necesară: capturile 1 și 2. Ca observație, îi poți spune unde să plaseze cele 2 fișiere ale bazei de date, ca să nu le pună în locația implicită pe C:\

Apoi rulez aspnet_regsql.exe asupra bazei de date și cam asta este. Rularea e simplă și se vede în capturile 3 și 4.

Notă: Dacă o faceți pe Windows Vista sau Windows Server 2008, io recomand să rulați ca administratori consola de management SQL sau aspnet_regsql.exe: click-dreapta și Run as Administrator.
Nu toate aplicațiile știu să se împace cu acel User Account Control – chestia aia care-i enervează pe mulți când efectuează operații sensibile în sistem, cu înnegrire de ecran și întrebări de tip "tu ai pornit asta?" sau "trebe’ permisiunea ta".

Eh, după ce-ai rulat scula de pregătire a bazei de date pentru cei trei provideri de la răsărit, te poți uita în bază. Et voila! Ai acolo toate tabelele necesare cu proceduri stocate cu tot. Bagă un ochi în captura 5 ca să vezi cam ce și cum. Nu te speria că nu vei fi nevoit să înveți ce e cu ele, astea sunt folosite de provideri. Dar îți faci o idee despre ce și cum…

Dacă nu ai .NET Framework SDK (Software Development Kit), e musai să-l descarci. E gratuit, da’ ține-te bine că nu-i mic.

Nu vreau să fac ditamai mațul de articol, așa că povestesc în numărul viitor cum conectăm aplicația web și clasele Membership, RoleManager și Profile la baza de date pe care tocmai am pregătit-o. Până una alta, mai bag două vorbe de umplutură…

Dacă nu rulezi consola de administrare SQL ca administrator, poți întâlni erori la operații sensibile de genul:

  • Atașarea dau detașarea unei baze de date
  • Crearea sau aruncarea unei baze de date
  • Crearea de conturi de acces în SQL Server sau la baza de date, configurarea accesului
  • Operații pe scheme, în funcție de contextele de securitate de p-acolo

Bafto delo delo!

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s