Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET)

Hasonló dokumentumok
Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET Core) Cserép Máté

Webes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) 2015 Giachetta Roberto

Symfony kurzus 2014/2015 I. félév. Security: authentication, authorization, user provider, role-ok, access control, FOS user bundle

Webes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) Cserép Máté.

Webes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) 2015 Giachetta Roberto

Webes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) Állapotfenntartás. Állapotfenntartás. Állapotfenntartás.

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Webes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET Core) Cserép Máté

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (ASP.NET)

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk

A JGrid rendszer biztonsági architektúrája. Magyaródi Márk Juhász Zoltán Veszprémi Egyetem

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Példa webáruház kialakítás rendszerdokumentáció

Webes alkalmazások fejlesztése

1. beadandó feladat dokumentáció

Webes alkalmazások fejlesztése 10. előadás. Szolgáltatás alapú rendszerek megvalósítása (ASP.NET WebAPI) Cserép Máté

Webes alkalmazások fejlesztése 14. fejezet. Szolgáltatások adatkezelése (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Java webalkalmazások felhasználó- és jogosultságkezelése

Bejelentkezés az egyetemi hálózatba és a számítógépre

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté

Java Programozás 11. Ea: MVC modell

Csatlakozás a BME eduroam hálózatához Setting up the BUTE eduroam network

MŰSZAKI DOKUMENTÁCIÓ. Aleph WebOPAC elérhetővé tétele okostelefonon. Eötvös József Főiskola 6500 Baja, Szegedi út 2.

Tájékoztató a kollégiumi internet beállításához

DDNS szolgáltatás beállítása NVR P2P elérésének beállítása

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Használati utasítás.

HÁLÓZATI HASZNÁLATI ÚTMUTATÓ

Hiteles Elektronikus Postafiók

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

NEPTUN ID BMENET ID. Címtár BME VPN. vcenter VPN SVN. Trac Wiki. Wifi

A WORDPRESS TELEPÍTÉSÉNEK LÉPÉSEI

OOP #14 (referencia-elv)

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 5. óra. Kocsis Gergely, Supák Zoltán

API tervezése mobil környezetbe. gyakorlat

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (Entity Framework) Cserép Máté.

Biztonság java web alkalmazásokban

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Felhasználói kézikönyv MAGYAR NEMZETI BANK. ERA keretrendszer

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

A gyakorlaton megoldandó feladat. Áttekintés. Probléma - Tervezés. 6. gyak 1. feladat. ASP.NET Alapozó. Authentikáció és Authorizáció

Okostelefon használati útmutató

Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting

Netis vezeték nélküli, N típusú, router

SAMBA. Forrás: Lajber Zoltán: SAMBA alapok dia, SZIE

FortiClient VPN-IPSec kliens konfigurációs segédlet

KEZELÉSI ÚTMUTATÓ WIFI ADAPTER

Mobil Telefonon Keresztüli Felügyelet Felhasználói Kézikönyv

OOP: Java 8.Gy: Abstract osztályok, interfészek

Az Egységes Pályázati Keretrendszer használata (akadémiai könyv- és folyóiratkiadási támogatás elnyerésére a 2014.

ALKALMAZÁSOK ISMERTETÉSE

Alkalmazott Modul III 6. gyakorlat. Objektumorientált programozás: öröklődés és polimorfizmus

Gyors üzembe helyezési kézikönyv

Mobil Partner telepítési és használati útmutató

Milyen sütiket és mire használ az OTP Bank?

Webes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET) Webfejlesztés MVC architektúrában Fejlesztés ASP.

Pénzügyi algoritmusok

JNDI - alapok. Java Naming and Directory Interface

1/9. Sunell IP kamerák webes felületének használati útmutatója. Élő kép (Live Video)

Vectory telepítési útmutató

ERA KERETRENDSZER Felhasználói kézikönyv v

Jogtár szolgáltatás elérése otthonról, Windows XP alól

Moodle -egy ingyenes, sokoldalú LMS rendszer használata a felsőoktatásban

3 A hálózati kamera beállítása LAN hálózaton keresztül

Adatbázisok webalkalmazásokban

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Sulidoc Iskolai dokumentum megosztó Dokumentáció

SIP telefonközpont készítése Trixbox-szal

Titkosítás NetWare környezetben

Internetkonfigurációs követelmények. A számítógép konfigurálása. Beállítások Windows XP alatt

Operációs Rendszerek I.

Mikrotik 6.22 telepítés

Szoftvertechnológia 8. előadás. Szoftverrendszerek tervezése. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Szoftvertechnolo gia gyakorlat

és az instanceof operátor

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Kézikönyv. a HGCS-2014 Háztartási nagygépek cseréje. pályázati kiíráshoz kapcsolódó pályázati portál működéséhez.

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Yealink SIP Phone család. webes programozási útmutató. A leírás a MySIP X.50 IPPBX alközpont mellékleteként készült. v Young BTS. Kft.

r e l o a d. n o n p r o f i t f o r u m. e u Telepítési útmutató 3. RELOADED

Java programozási nyelv 5. rész Osztályok III.

Netscape Messenger levelező kliens beállítása POP3 típusú levelezéshez

Gyors telepítési kézikönyv

BackupPC. Az /etc/hosts fájlba betehetjük a hosztokat, ha nem a tejles (fqdn, DNS név) névvel hivatkozunk rájuk: # /etc/hosts #

A Scolvo DIRECT teljeskörű direkt marketing megoldást biztosít vállalata számára minden mobil eszközön alkalmazásként valamint weben és mobil weben.

Az autorizáció részletes leírása

További lehetőségek. Nighthawk X6 AC3200 Tri-Band WiFi-router. R8000-as modell

Bevezető. Servlet alapgondolatok

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

ZH mintapélda. Feladat. Felület

3. Osztályok II. Programozás II

Átírás:

Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 7. előadás Autentikáció és autorizáció (ASP.NET) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Autentikáció Egy weblap felhasználó kezelése számos elemmel rendelkezik, amelyek biztonságosra kell megvalósítanunk: regisztráció, adatmódosítás bejelentkezés, kijelentkezés, automatikus bejelentkeztetés elfelejtett jelszó/azonosító kezelése mivel a jelszót mindig kódolva tároljuk, ezért elfelejtett jelszó esetén a felhasználónak biztosítani kell új jelszó létrehozását (amennyiben meggyőződtünk az azonosságáról) extra funkcionalitások: felhasználói csoportok, láthatóságok kezelése, e-mailben történő megerősítés ELTE IK, Webes alkalmazások fejlesztése 7:2

ASP.NET Identity A felhasználói autentikáció összetettsége miatt az ASP.NET egy kész rendszert biztosít számunkra, ez az Identity biztosítja a felhasználó-kezeléshez szükséges funkciókat az adatkezeléstől a felületig a felhasználói adatok tárolására/elérésére számos lehetőséget ad, használhatunk lokális megoldásokat (pl. adatbázis, Windows Authentication), vagy más szolgáltatások fiókkezelését (pl. Microsoft Account, Twitter, Facebook) az alap funkcionalitás az AspNet.Identity.Core programkönyvtárból (NuGet csomagból) érhető el, az adattárolást további csomagok biztosítják ELTE IK, Webes alkalmazások fejlesztése 7:3

Felhasználók kezelése A felhasználók kezelését a UserManager osztály felügyeli, amely bármilyen speciális felhasználótípust kezelni tud a felhasználót regisztrálhatjuk (Create), azonosíthatjuk (Find), módosíthatjuk (ChangePassword), a felhasználó egy IUser interfészt megvalósító osztály, amelyet bármilyen további információval (jelszó, e-mail cím, ) kiegészíthetünk a menedzser osztály egy adattáron (IUserStore) keresztül kezeli a felhasználókat, vagyis ez szabja meg a konkrét felhasználó kezelési megoldást minden osztály a felhasználó típusra specializált ELTE IK, Webes alkalmazások fejlesztése 7:4

Felhasználók kezelése TUser : IUser IDisposable UserManager «interface» IUser «property» + Id() :String + UserName() :String TUser : IUser «interface» IUserStore IDisposable ELTE IK, Webes alkalmazások fejlesztése 7:5

Felhasználók kezelése Pl.: public class MyUser : IUser { } // a felhasználó típusa public class MyStore : IUserStore<MyUser> { } // az adattár típusa, a felhasználóra // specializálva UserManager<MyUser> manager = new UserManager<MyUser>(new MyStore()); // felhasználókezelő, a felhasználóra // specializálva MyUser user = manager.find(name, password); // felhasználó keresése (név, jelszó alapján) ELTE IK, Webes alkalmazások fejlesztése 7:6

Adattárolás entitásmodellel A felhasználói adatok tárolásának legegyszerűbb módja lokális adatbázis entitásmodellen keresztül történő kezelése (AspNet.Identity.EntityFramework) az entitásmodell (IdentityDbContext) névvel és jelszóval ellátott felhasználókat tud kezelni (IdentityUser) szintén specializálható, bármilyen tulajdonsággal bővíthető a felhasználó a kódban megadott adatok alapján hozza létre az adatbázis szerkezetet (code first) biztosítja a jelszavak kódolását (időfüggő sózással) az entitásmodell a csatolt UserStore osztállyal használható ELTE IK, Webes alkalmazások fejlesztése 7:7

Adattárolás entitásmodellel Pl.: IndentityDbContext<IdentityUser> context = new ; // adatbázis entitásmodell UserStore<IdentityUser> store = new UserStore<IdentityUser>(context); // adattár UserManager<IdentityUser> manager = new UserManager<IdentiyUser>(store); // felhasználókezelő IdentityUser user = manager.find(name, password); // felhasználó keresése ELTE IK, Webes alkalmazások fejlesztése 7:8

Adattárolás entitásmodellel Az adatokat célszerű egy olyan adatbázisban eltárolni, amelyet direkt autentikációs célokra használunk az IdentityDbContext konstruktorában megadjuk az adatbázis kapcsolódási adatait (connection string), amelyet a konfigurációban (web.config) helyezünk el alapértelmezett a DefaultConnection, ezt nem kell külön megadnunk, pl.: <connectionstrings> <add name="defaultconnection" connectionstring=" " providername=" " /> </connectionstrings> ELTE IK, Webes alkalmazások fejlesztése 7:9

OWIN A felhasználó egységes bejelentkeztetését, és az azonosság nyilvántartását az OWIN (Open Web Interface for.net) programozási felület biztosítja (Microsoft.Owin csomag) a be- és kijelentkeztetés a HttpContext osztály GetOwinContext().Authentication tulajdonsága segítségével történik (Microsoft.Owin.Host.SystemWeb csomag) a bejelentkeztetést a SignIn, a kijelentkeztetést a SignOut műveletek kezelik, amelyeknek megadható az azonosítás nyilvántartás módja (pl. süti alapú), illetve, hogy perzisztens legyen-e a bejelentkezés (azaz jegyezze meg az adatokat) a bejelentkezéshez követelés szükséges (ClaimsIdentity) ELTE IK, Webes alkalmazások fejlesztése 7:10

Felhasználó bejelentkeztetés Pl.: ClaimsIdentity claims = manager.createidentity( user, DefaultAuthenticationTypes.ApplicationCookie); // felhasználói követelesések létrehozása, süti // alapú kezeléssel HttpContext.GetOwinContext().Authentication. SignIn(claims); // bejelentkeztetés HttpContext.GetOwinContext().Authentication. SignOut(DefaultAuthenticationTypes. ApplicationCookie); // kijelentkeztetés ELTE IK, Webes alkalmazások fejlesztése 7:11

Felhasználó bejelentkeztetés Annak érdekében, hogy a funkciók a rendelkezésünkre álljanak, az alkalmazás számára konfigurálnunk kell az Identity működését ezt alapértelmezetten a Startup osztály Configure művelete végzi, amely paraméterben megkapja az autentikáció konfigurációs objektumát (IAppBuilder) a konfigurációs objektumnak kell megadnunk a megfelelő autentikációs lehetőségeket, pl.: public void Configure(IAppBuilder app){ app.usecookieauthentication( new CookieAuthenticationOptions { }); // süti alapú azonosítás engedélyezése } ELTE IK, Webes alkalmazások fejlesztése 7:12

Hozzáférés korlátozás Az így bejelentkezett felhasználót szintén a HttpContext osztályon keresztül kezelhetjük a Request.IsAuthenticated, illetve a User.Identity.IsAuthenticated tulajdonságok jelzik, hogy van-e bejelentkezett felhasználó a felhasználó nevét a User.Identity.Name tulajdonságon keresztül érhetjük el pl.: if (User.Identity.IsAuthenticated) { IdentityUser user = manager.findbyname( User.Identity.Name); // lekérjük a bejelentkezett felhasználót } ELTE IK, Webes alkalmazások fejlesztése 7:13

Példa Feladat: Valósítsuk az utazási ügynökség weblapjának felhasználó kezelési funkcióját. a felhasználókezelést Identity és OWIN segítségével valósítjuk meg, a felhasználói adatok a TravelAgencyAuthentication adatbázisban tároljuk (egy új kapcsolattal a konfigurációban) megvalósítunk egy új változatát a felhasználókezelésnek (IdentityAccountService), az alap felhasználói adatokat kiegészítjük a címmel és a teljes névvel (IdentityGuest) felvesszük a Startup osztályt a konfigurációhoz továbbra is meghagyjuk a regisztráció nélküli foglalást ELTE IK, Webes alkalmazások fejlesztése 7:14

Példa Tervezés: Startup + Configuration(IAppBuilder) :void BaseController Controllers::AccountController + Index() :ActionResult + Login() :ActionResult + Login(UserViewModel) :ActionResult + Logout() :ActionResult + Register() :ActionResult + Register(GuestRegistrationViewModel) :ActionResult «interface» Models::IAccountService + Create(GuestViewModel, String*) :Boolean + GetGuest(String) :Guest + Login(UserViewModel) :Boolean + Logout() :Boolean + Register(GuestRegistrationViewModel) :Boolean «property» + CurrentUserName() :String + UserCount() :Int32 IdentityUser Models::IdentityGuest «property» + Address() :String + Name() :String Models::IdentityAccountService - _entities :TravelAgencyEntities - _guestmanager :UserManager<IdentityGuest> ELTE IK, Webes alkalmazások fejlesztése 7:15

Példa Megvalósítás (IdentityAccountService.cs): public Boolean Login(UserViewModel user) { // megkeressük a felhasználót IdentityGuest identityguest = _guestmanager.find(user.username, user.userpassword); if (identityguest == null) return false; // ha valaki már bejelentkezett, // kijelentkeztetjük HttpContext.Current.GetOwinContext().Authentication.SignOut( ); ELTE IK, Webes alkalmazások fejlesztése 7:16

Példa Megvalósítás (IdentityAccountService.cs): // bejelentkeztetjük az új felhasználót ClaimsIdentity claimsidentity = _guestmanager.createidentity( identityguest, ); HttpContext.Current.GetOwinContext(). Authentication.SignIn( new AuthenticationProperties { IsPersistent = rememberme }, claimsidentity); // perzisztens bejelentkezést állítunk be, // amennyiben megjegyzést kért } ELTE IK, Webes alkalmazások fejlesztése 7:17

Hozzáférés korlátozás Erőforrások hozzáférése korlátozható a felhasználókra az Authorize attribútum alkalmazható vezérlőkre, illetve akcióműveletekre, így csak megfelelő autentikáció után vehető igénybe az erőforrás pl.: [Authorize] // csak a bejelentkezett felhasználó // férhet hozzá public ActionResult ManageAccount(){ } a hozzáférés korlátozható felhasználókra (Users) és szerepekre (Roles) teljes vezérlő korlátozása esetén felszabadíthatunk műveleteket (az AllowAnonymous attribútummal) ELTE IK, Webes alkalmazások fejlesztése 7:18

Hozzáférés korlátozás Pl.: [Authorize] // érvényes az összes műveletre public class AccountController : Controller { public ActionResult ManageAccount(){ } [Authorize(Roles = "admin")] // ehhez csak rendszergazda férhet hozzá public ActionResult ManageAllAccounts(){ } } [AllowAnonymous] // ehhez bárki hozzáférhet public ActionResult Login(){ } ELTE IK, Webes alkalmazások fejlesztése 7:19

Biztonságos kommunikáció Lehetőségünk van biztonságos kommunikációra, az üzenetek titkosítására Transport Layer Security (TLS, SSL) segítségével kizárja a kommunikáció lehallgatását, a munkamenet lopást (jó eséllyel), beállítása a webszerverre tartozik a weblap elvárhatja a biztonságos csatornát egy erőforrásra (a RequireHttps attribútummal), vagy ellenőrizheti a meglétét a Request.IsSecureConnection tulajdonsággal Pl.: [Authorize] [RequireHttps] // csak biztonságos adatközlés // mellett érhető el public class AccountController : Controller { } ELTE IK, Webes alkalmazások fejlesztése 7:20