Security Framework
2009.04.22 at 5:03 pm | In Dev, IT | 1 CommentŠitą straipsniuką skirsiu saugumo mechanizmo kūrimui, ypač dideliems projektams.
Geriausia manau būtu pradėti nuo to, kad neradau jokios įdomios dokumentacijos kaip reikėtu tai padaryti, ypač, kai programa yra complexinė, turinti n kiekį vartotojų, grupių, grupės ir vartotojai turi savo teises,su paveldimu ir pan, o tos teisės(permissions) yra taikomos objektams.
Tarkim yra serveris, kuris apdoroja klientuis. Klientas tai yra vartotojas, priklausantis kokiai nors grupei, o ta grupė, gali priklausyti kitai ir pan. Klientas nėra administratorius, todėl negali pilnai valdyti viso serverio, trinti duomenų, kurti vartotojus, išjungti ir stuff like that. Kitaip tariant, vartotojas turi savo teises, ką jis gali atlikti, ir ko negali atlikti. Teko pasukti galvą, kaip patogiai padaryti tokias teises, kad jas lengva butų persiūsti, ar išsaugoti į duombazę.
Security saugumo klasė, properčiai:
ObjectID: Objektas kuriam taukomas saugumas (Guid)
TargetID: Vartotojas,Grupe ar bet kas kitas, nuo kurio saugomas objektas (Guid)
Data: Byte[MaxDataSize] laiko savyje 32baitus duomenų. 32baitai, tai 32*8=256bitai. 256 taisyklių, taip arba ne, ką varotojas gali daryti ir ko ne.
Metodai:
Get(int nr): Gražina true/false pagal pateikta bitą.
Set(int nr,bool value): Išsaugo reikšmę.
Klasė GlobalSecurity kyla iš Security, ir iškart turi keletą properčių, kad juos būtų galima lengviau pasiekti.
Paprastas pavyzdukas, kai jau turime savo saugumo objekta, ir norime patikrinti, ar galima testi darbą toliau:
GlobalSecurity sec = GetSecurity<GlobalSecurity>();
if (sec != null && sec.AllowRestart) {
//User granted to restart
Console.WriteLine("Allowed");
} else {
//User denied to restart
Console.WriteLine("Denied");
}
Jeigu GlobalSecurity objektas nėra null, ir vartotojui suteikta teisė perkrauti serverį, taip ir galima padaryti, priešingu atveju, atlikti kažką kitą
.
Tesiam,
Tarkim kuriam serverį, kur kiekvienas prisijungias vartotojas gauna thread’ą, jo apdorojimui, bekraunant vartotojo duomenis, kartu užkraunami ir jo teisiu objektai, ir įrašomi į thread’ą. O visas kitas kodas, tereikia pasiimti iš esamo threado, tuos duomenis, ir žiurėti ką vartotojas gali atlikti, ir ko ne. Pilnas pavyzdys su thread’ais prisegtame “pdf” faile, jį reiktu pervadinti į zip.
1 komentaras »
RSS feed for comments on this post. TrackBack URI
Pakomentuokite
Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.

Labai teisingai
)
Comment by Supermeno Sekretore — 2009.04.22 #