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ć