Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Cilj ove vežbe je upoznavanje sa osnovnim bezbednosnim mehanizmima: autentifikacija,

autorizacija i auditing. Iako .NET i WCF sadrže bogat skup ugrađenih bezbednosnih mehanizama,
ovde će u edukativne svrhe biti prikazana jednostavna realizacija mehanizama autentifikacije,
autorizacije i logovanja (auditinga) koja ne koristi te mehanizme. Dodatno, kroz implementaciju
zadatka datoj u vežbi 1. studenti treba da obnove znanje iz .NET framework softverskog okruženja
i WCF okruženja za implementaciju aplikacija baziranih na uslugama (service-oriented
architecture).

1. Zadatak
Arhitektura sistema koji je potrebno implementirati data je na slici (zelenim su označene
komponente date u template-u zadatka). Data je klasa Users koja opisuje korisnike u sistemu na
sledeći način:
 Username: string (predstavlja i jedinstveni identifikator korisnika u sistemu)
 Password: string
 IsAuthenticated: bool
 ComputerName: string
ISecurityService je interfejs za upravljanje korisničkim nalozima skladištenim u kontejneru koji
predstavlja bazu korisničkih naloga. Clients je klijentska aplikacija koja koristi usluge servisa kao
što je prikazano na slici.
Zadatak 1.1: Implementirati metode ISecurityService interfejsa u okviru SecurityService
komponente. Implementirati pozive metoda ISecurityService interfejsa uz pomoć ClientProxy
klase.
1.1. Mehanizam autentifikacije
Mehanizam autentifikacije u ovom primeru treba da bude implementiran kroz sledeće korake:
Zadatak 1.2: Proširiti ISecurityService interfejs metodama za Login i Logout korisnika.
Implementirati pozive ovih metoda uz pomoć ClientProxy klase.
 Login metoda vrši autentifikaciju korisnika. U slučaju uspešne autentifikacije, property
Users klase isAuthenticated podesiti na true, a potrebno je podesiti i ComputerName na
naziv računara sa kog dolazi klijent.
 Prilikom izvršavanja metode Logout, isAuthenticated podesiti na false, a ComputerName
podesiti na string.Empty vrednost.

Zadatak 1.3: Implementirati DataAccessService komponentu (novi projekat) koja nudi


IDataAccess interfejs za rad sa tekstualnim fajlom. Implementirati DataAccessProxy u okviru
Clients klijentske aplikacije koja poziva metode IDataAccess interfejsa. Metode je dozvoljeno
izvršiti samo ukoliko je korisnik prethodno autentifikovan, u suprotnom potrebno je ispisati
odgovarajuću poruku o grešci.
Za potrebe ovog zadatka, potrebno je:
 Implementirati novi interfejs ISecurityChecks koji nudi metode za realizaciju
bezbednosnih provera. Odgovarajući servis SecurityChecks je potrebno host-ovati u
okviru SecurityService projekta.

 Implementirati proxy objekat u okviru DataAccessService komponente kojim će biti


realizovani pozivi metoda ISecurityChecks interfejsa .

1.2. Mehanizam autorizacije


Zadatak 1.4: Mehanizam autorizacije u ovom primeru treba da bude implementiran kroz naredne
korake:
 Definisati enumeraciju UserGroups koja opisuje korisničke grupe u sistemu na sledeći način:
enum UserGroups = {Read, Write, Delete, Administrate}
 Proširiti klasu Users:
a. dodavanjem property-a MemberOf koji predstavlja Listu/HashSet grupa dodeljenih
korisniku,
b. Dodati metodu HasRight koja proverava da li je korisnik član određene korisničke
grupe.
 Proširiti ISecurityService interfejs metodama za dodavanje korisnika u korisničke grupe,
odnosno uklanjanje korisnika iz korisničke grupe.
 Proširiti ISecurityChecks interfejs za realizaciju bezbednosnih metoda metodom za proveru
da li korisnik pripada određenoj korisničkoj grupi:

 Proširiti metode DataAccessService komponente odgovarajućim autorizacionim


proverama:
 za izvršavanje metode Read neophodno je da korisnik ima UserGroups.Read pravo,
 za izvršavanje metode Write neophodno je da korisnik ima UserGroups.Write pravo,
 za izvršavanje metode Delete neophodno je da korisnik ima UserGroups.Delete pravo.
1.3. Mehanizam logovanja bezbednosnih događaja
Zadatak 1.5: Mehanizam logovanja u ovom primeru treba da bude implementiran na sledeći
način. Prilikom startovanja SecurityChecks servisa kreirati SecurityLog.txt fajl (ukoliko ne postoji!
Ukoliko postoji nastaviti upis isti fajl!) koji će služiti za evidenciju bezbednosnih događaja: Login,
Logout, IsUserAuthenticated, IsUserAuthorized. Prilikom svakog poziva ovih metoda neophodno
je zapisati u tekstualnu datoteku log sa sledećim informacijama:
 Timestamp
 Username
 Computer name
 Naziv metode interfejsa,
 Informacija da li je metoda izvršena uspešno ili ne, odnosno rezultat izvršenja.

1.4. Dodatni zadaci

Zadatak 1.6: Umesto skladištenja šifre u string formatu, obezbediti bezbedniji način skladištenja
koristeći SecureString klasu.
Zadatak 1.7: Implementirati mehanizam autentifikacije i autorizacije u okviru metoda interfejsa
ISecurityService za upravljanje korisničkim nalozima, pri čemu je za izvršavanje metoda
interfejsa potrebno da korisnik ima UserGroups.Administrate pravo.

You might also like