Detailní popis projektu

SongsAndVotes

Projekty .NET

SSŠVT


Detailní popis projektu SongsAndVotes

Obsah


Release #2 – Autentizace a správa uživatelů


Fáze 2.1 – Bottom-to-Top design a implementace

Bottom-to-Top design a implementace znamená, že vrstvy aplikace budujeme od back-endu, tj. od těch spodních (databáze, ORM, datová vrstva) k těm vyšším patrům naší appky, jako je aplikační vrstva (servisní třídy) a prezentační vrstva (formuláře, webové stránky apod.).

Nejprve si tedy připravíme tabulky pro uživatele a role, poté k nim vytvoříme business objekty, přidáme anotace pro ORM, definujeme repo třídy, interface-y pro aplikační vrstvu a servisní třídy.

Na "relační" straně ORM, tj. v databázi budeme mít tedy 3 nové tabulky:

Na "objektové" straně ORM, tedy v projektu ve VS vytvoříme tyto třídy:

Detailní popis business objektů pro autentizaci a správu uživatelů se nachází zde.


Fáze 2.2 – Identifikace, autentizace a autorizace

Identifikace, autentizace a autorizace jsou základní kameny v zabezpečení aplikace. Vysvětlení těchto pojmů následuje.

Identifikace
Uživatel, který pracuje s vaší appkou, prohlásí, že je např. "franta". To je identifikace.
Autentizace
Uživatel "franta" podá důkaz o tom, že je skutečně tím "frantou", za kterého se vydává, tak že např. zadá Frantovo heslo (které by měl znát pouze Franta, nikdo jiný).
Autorizace
Aplikace zjistí, do jaké skupiny uživatel "franta" náleží (jaké role má přiděleny), a podle toho rozhodne, zda je možné vykonat požadovanou akci (např. spustit přehrávání písničky, nebo otevřít formulář pro správu uživatelských účtů). Aplikace uživatele autorizuje pro provedení určité akce.

Přidáme formulář pro login do aplikace, případně i nějakou akci pro logout.

Přidáme autorizační ověření ke každému use-case-u (např. otevření nějakého formuláře, zobrazení určitého tlačítka apod.) podle oprávnění přihlášeného uživatele.


Fáze 2.3 – Správa uživatelů a uživatelských rolí

Uživatel s rolí administrátor bude mít možnost spravovat ostatní uživatelské účty (provádět s nimi operace CRUD).

Administrátor bude moci také spravovat aplikační role (opět pomocí CRUD) a přidělovat, případně odebírat role jednotlivým uživatelům.

Je dobré zabezpečit, aby jeden speciální účet s administrátorskými právy (např. "admin") nešel smazat (jinak už nebude kdo mít možnost spravovat celou appku, zejména její uživatele) a aby nebylo možné odebrat tento účet ("admin") ze skupiny administrátorů (odebrat mu roli administrátor). Jinak by opět hrozilo, že bychom sami sobě odebrali možnost spravovat aplikaci.