Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako implementirate "permissions" u aplikacijama?

[es] :: .NET :: Kako implementirate "permissions" u aplikacijama?

[ Pregleda: 2442 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vujkev
Beograd

Član broj: 8072
Poruke: 1347
212.200.243.*



+104 Profil

icon Kako implementirate "permissions" u aplikacijama?21.02.2008. u 11:00 - pre 197 meseci
Trenutno pravim aplikaciju gde je potrebno da korisniku koji radi na programu ograničim pristup nekim funkcijama, pregledima i sl.

Primera radi imate aplikaciju u kojoj su osobe grupisane u nekoliko grupa. Potrebno je da osobi koja radi sa programom ogranicite pristup nekim grupama (naravno u zavisnosti od korisničkog imena i šifre), pa čak i određenim osobama u grupi ukoliko ne sme da se ograniči pristup celoj grupi, da ograničite promenu podataka, brisanje i sl.

Interesuje me kako bi vi ovo napravili.

Pozdrav
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako implementirate "permissions" u aplikacijama?21.02.2008. u 12:38 - pre 197 meseci
Fundamentalno zavisi od toga da li radis WinForms ili asp.net aplikaciju... KOja je?
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

vujkev
Beograd

Član broj: 8072
Poruke: 1347
*.telekom.yu.



+104 Profil

icon Re: Kako implementirate "permissions" u aplikacijama?21.02.2008. u 13:54 - pre 197 meseci
..ups, WinForms
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako implementirate "permissions" u aplikacijama?21.02.2008. u 17:14 - pre 197 meseci
najbolje je da koristis security credentials ulogovanog korisnika, a za kontrolu pristupa mozes koristiti workgroup ili domenske grupe.

Code:

using System.Threading;
using System.Security.Principal;

    class Program
    {
        static void Main(string[] args)
        {
            // OVO JE VAZNO pokrenuti na pocetku, ukljucuje podrsku za Windows .NET Principale
            AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

            WindowsIdentity user = (WindowsIdentity)Thread.CurrentPrincipal.Identity;
            Console.WriteLine("Username: {0}", user.Name);
            Console.WriteLine("User is administrator?: {0}", Thread.CurrentPrincipal.IsInRole("Administrators"));
            foreach (IdentityReference grp in user.Groups) 
                Console.WriteLine("Belongs to group: {0}", grp.Translate(typeof(NTAccount)).Value);
            Console.ReadLine();

        }
    }


daje sledeci izlaz:

Code:

Username: SOLARIS\Administrator
User is administrator?: True
Belongs to group: SOLARIS\Domain Users
Belongs to group: Everyone
Belongs to group: BUILTIN\Administrators
Belongs to group: BUILTIN\Users
Belongs to group: BUILTIN\Pre-Windows 2000 Compatible Access
Belongs to group: NT AUTHORITY\INTERACTIVE
Belongs to group: NT AUTHORITY\Authenticated Users
Belongs to group: NT AUTHORITY\This Organization
Belongs to group: LOCAL
Belongs to group: SOLARIS\Group Policy Creator Owners
Belongs to group: SOLARIS\Domain Admins
Belongs to group: SOLARIS\Enterprise Admins
Belongs to group: SOLARIS\Schema Admins
Belongs to group: SOLARIS\Denied RODC Password Replication Group



sa Principal.IsInRole() proveravas da li pripada odredjenoj grupi, a uz pomoc gornjeg koda mozes da proveris kojim sve grupama pripada. Ako ne pozoves Translate(NTAccount) onda grp.Value bude domenski SID grupe.

Sad ti od ovog napravi siguronosnu shemu kakvu hoces. Ono sto ti .NET moze jos pomoci je Code Security, bilo deklarativno, bilo imperativno.

Npr, sledeci metod, deklarativno se zahteva da pozivar pripada grupi administratora, a unutar se imperativno zahteva da korisnikov username bude "perica", u slucaju neispunjenja tih uslova pada SecurityException

Code:

        [PrincipalPermissionAttribute(SecurityAction.Demand, Role = "Administrators")]
        static void ProtectedMethod()
        {
            PrincipalPermission perm = new PrincipalPermission("perica", null);
            perm.Demand(); // ovde puca ako user nije perica
        }


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Kako implementirate "permissions" u aplikacijama?21.02.2008. u 19:06 - pre 197 meseci
Usput da pitam, je l' moguce koristiti neki deo framework-a za ACL odredjivanje pristupa delovima aplikacije/podataka ali sa sopstvenim user sistemom, ne Windows-ovim? Ovo me interesuje za obe varijante, i za asp.net i za winforms.
Ja trenutno implementiram svoju verziju acl-a sa default membership provajderom i sql bazom, ali me interesuje postoji li nesto gotovo (ili bar gotovije ).
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako implementirate "permissions" u aplikacijama?21.02.2008. u 19:41 - pre 197 meseci
Naravno da moze, Thread.CurrentPrincipal moze da primi bilo koji objekat koji implementira IPrincipal interfejs, samo napravis svoju implementaciju IPrincipal i IIdentity interfejsa (npr nasledjujuci GenericPrincipal i GenericIdentity). Jedino sto si onda sam i zaduzen da kreiras instancu principala i postavis je u Thread.CurrentPrincipal. Dok god isInRole vraca "nesto" moze da se koristi "fabricki" role based security.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Kako implementirate "permissions" u aplikacijama?27.02.2008. u 13:46 - pre 196 meseci
Zapravo, ono sto mi je trebalo je namespace System.Security.AccessControl. Tj. da acl klase odatle koristim ne za fajlove i sl. vec za neke svoje objekte. To doduse, ne iskljucuje da bi mi trebalo i to sto si pomenuo (nisam jos proucio dovoljno).
Medjutim, deluje mi to malo previse komplikovano a vec sam zamislio kako da ostvarim potrebnu funkcionalnost sa sve cuvanjem i odredjivanjem effective permission (kada postoji vise acl-ova za user-a i/ili njegove roles).
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako implementirate "permissions" u aplikacijama?27.02.2008. u 18:04 - pre 196 meseci
Ne iskljucuje, zapravo neces moci da je izbegnes. Kad zavrsis sa ACE i ACL objektima i definises svoj security framework moraces da uradis "autorizacioni" deo koji te tvoje ACL liste vezuje za security identity. Poimence, kad budes dosao do tacke da koristis AccessRule instance trebace ti IdentityReference klasa iz System.Security.Principal, a isti je vezan za Identity/Principal implementaciju o kojoj je pisano gore.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Kako implementirate "permissions" u aplikacijama?27.02.2008. u 20:56 - pre 196 meseci
Lepota :) Fino sam ja to resio sa 4 tabele i nekoliko upita/stored procedure-a ;)

(Videcu koliko ce fino biti kasnije ;])
 
Odgovor na temu

[es] :: .NET :: Kako implementirate "permissions" u aplikacijama?

[ Pregleda: 2442 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.