HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Bejelentkezett felhasználó ellenőrzése programindításkor


Példaprogram letöltése

7402 bájt

Alkalmazásfejlesztés során felmerülhet olyan igény, hogy figyelmet kell fordítani a készítendő program biztonsági tényezőire is olyan tekintetben, hogy a program futtatását csak jogosult felhasználók számára szeretnénk engedélyezni, mások számára pedig meg szeretnénk ezt tiltani. Az engedélyezés történhet adatbázisban nyilvántartott nevek és jelszavak alapján is, azonban ennek kidolgozása meglehetősen munkaigényes. Cikkünkben bemutatjuk azt a módszert, mellyel az ellenőrzést az operációs rendszerre bízhatjuk.

A mellékelt példa forráskódját tartalmazó Form1.cs állomány 122. sorában meg kell adni helyesen a Windows rendszer egyik jogosult felhasználóját DOMAINNÉV\FELHASZNÁLÓNÉV formában.
Legegyszerűbb és a .NET Framework osztálykönyvtára által is támogatott módszernek tűnik, ha a fent vázolt szituációban azon felhasználói körnek, illetve azok egy csoportjának engedélyezzük a program futtatását, akik egyébként az adott számítógép Windows operációs rendszerébe jogosultak bejelentkezni. A megoldás néhány kódsorral implementálható.
Ennek megvalósítására a .NET System.Security.Principal névterének WindowsIdentity osztályát használhatjuk, mely lehetőséget ad arra, hogy a számítógép rendszerébe bejelentkezett felhasználóról információkat szolgáltasson, többek között a bejelentkezési azonosítóját.
A WindowsIdentity osztály statikus GetCurrent metódusával létrehozhatunk egy objektumot, mely reprezentálja az éppen bejelentkezett felhasználót. A felhasználót jelképező objektum property-jein keresztül pedig elérhetők a felhasználó tulajdonságai.
Ilyen használható property-k a következők:
AuthenticationType
Osztály: WindowsIdentity
public virtual string AuthenticationType {get;}
Megadja a felhasználói azonosítás módszerét. Példánkban ez NTLM értékű.
IsAnonymous
Osztály: WindowsIdentity
public virtual bool IsAnonymous {get;}
Megadja, hogy az adott bejelentkezési azonosító anonim-e. Értéke true, ha igen, egyébként false.
IsAuthenticated
Osztály: WindowsIdentity
public virtual bool IsAuthenticated {get;}
Megadja, hogy a Windows rendszer ellenőrizte-e a felhasználói azonosítót. Értéke true, ha igen, egyébként false.
IsGuest
Osztály: WindowsIdentity
public virtual bool IsGuest {get;}
Megadja, hogy a felhasználói azonosító rendszer által definiált Vendég-azonosító-e. Értéke true, ha igen, egyébként false.
IsSystem
Osztály: WindowsIdentity
public virtual bool IsSystem {get;}
Megadja, hogy a felhasználói azonosító rendszer által definiált System azonosító-e. Értéke true, ha igen, egyébként false.
Name
Osztály: WindowsIdentity
public virtual string Name {get;}
Megadja a rendszerbe bejelentkezett felhasználó teljes azonosítóját. Ennek formája DOMAINNÉV\FELHASZNÁLÓNÉV lesz.
Token
Osztály: WindowsIdentity
public virtual IntPtr Token {get;}
A felhasználói bejelentkezéshez kapcsolt belső azonosító.
A Windows azonosító rendszerére támaszkodó alkalmazásban elegendő lekérdezni az éppen bejelentkezett felhasználót, és amennyiben az azonos az engedélyezett felhasználók valamelyikével, akkor elindítható a program főszála, ellenkező esetben a program befejezi futását.
A mellékelt példában a Main metódusban helyeztük el rövid kódunkat, mely ellenőrzi, hogy az adott felhasználó jelentkezett-e be a rendszerbe, vagy nem.
A kódunkkal kiegészített Main metódus a következő:
[STAThread]
static void Main() 
{
  string validName = WindowsIdentity.GetCurrent().Name;
  if (validName != "DOMAINNÉV\\FELHASZNÁLÓNÉV")
  {
    MessageBox.Show("A program elindításához nincs megfelelő jogosultsága!","Bejelentkezés nem megfelelő névvel!",MessageBoxButtons.OK,MessageBoxIcon.Error);
    return;
  }
  Application.Run(new Form1());
}
Látható, hogy nem megfelelő felhasználóként bejelentkezve a program egy üzenetablakban tájékoztat erről a tényről, és a program a Run metódus végrehajtása, illetve az alkalmazás Form-jának betöltése nélkül kilép, a process befejeződik.
A programot jogosult felhasználóként indítva néhány adat jelenik meg egy ListBox kontrolban a felhasználóval kapcsolatban.

Cikksorozat

#IDKategóriaCikk címeSorozat
1621DelphiMySQL szerverek elérése Delphi-ből1. rész
1632DelphiMySQL szerverek elérése Delphi-ből2. rész
1641DelphiMySQL szerverek elérése Delphi-ből3. rész
1649DelphiMySQL szerverek elérése Delphi-ből4. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 34. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |