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

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

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 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) 2015 Giachetta Roberto

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

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 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

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

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

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

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)

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

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

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

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

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

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

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

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

1. beadandó feladat dokumentáció

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

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

API tervezése mobil környezetbe. gyakorlat

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

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.

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

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

Könyvesbolt Adatbázis Alapú Rendszerek Kötelező program Készítette: Gmóser Ádám Ádám Gergő

Hiteles Elektronikus Postafiók

Biztonságos mobilalkalmazás-fejlesztés a gyakorlatban. A CryptTalk fejlesztése során alkalmazott módszerek. Dr. Barabás Péter Arenim Technologies

Regisztrációs útmutató a Közokos- a BME Közoktatási Vezető Képzésének Online Oktatási Rendszeréhez Őszi beíratkozott hallgatók részére

HÁLÓZATI HASZNÁLATI ÚTMUTATÓ

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

A biztonsági fenyegetettségek száma és területe gyorsan változik. De nem csak a támadók dolgoznak ezen, a végfelhasználók is sokat tesznek ezért.

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

Szoftver technológia. Projektmenedzsment eszközök. Cserép Máté ELTE Informatikai Kar 2019.

KEZELÉSI ÚTMUTATÓ WIFI ADAPTER

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

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

Operációs Rendszerek I.

Windows biztonsági problémák

Titkosítás NetWare környezetben

Felhasználói kézikönyv

Mobil eszközökön tárolt adatok biztonsága

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

Levelezési beállítások

Biztonság a glite-ban

Felhasználói kézikönyv

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

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.

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

Használati utasítás.

Magyar Nemzeti Bank - Elektronikus Rendszer Hitelesített Adatok Fogadásához ERA. Elektronikus aláírás - felhasználói dokumentáció

Felhasználói kézikönyv

E mail titkosítás az üzleti életben ma már követelmény! Ön szerint ki tudja elolvasni bizalmas leveleinket?

ECAS KÉZIKÖNYV. Tartalom

Digitális aláíró program telepítése az ERA rendszeren

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk. Cserép Máté

A tűzfal mögötti adatvédelem. Kalmár István ICT technológia szakértő

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.

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

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

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

Kezdő lépések Outlook Web Access

e-szignó Online e-kézbesítés Végrehajtási Rendszerekhez

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

1. A Windows Vista munkakörnyezete 1

Antenna Hungária Jövőbe mutató WiFi megoldások

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.

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

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

Belépés a GroupWise levelező rendszerbe az Internet felől

Tartalom. Bejelentkezés...2 Feltöltés...3 Dokumentumok...4 Jelszómódosítás...7 Jelszókérés...7 Kijelentkezés...8

Nokia N97_mini (Mail for Exchange) beállítása Virtualoso levelezésre

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

MTMT adatbázis Változásjegyzék *

EU Login kézikönyv (rövidített változat)

Felhasználó kezelés fejlesztési dokumentáció

BEJELENTKEZÉS AZ EPK RENDSZERÉBE

Diplomaterv Portál. Elektronikus szakdolgozat és diplomaterv nyilvántartó és archiváló rendszer. Útmutató a címtáras bejelentkezéshez v14

Egy családfaszerkesztő alkalmazás leírása

Oszkar.com Android alkalmazás v1.2

Okostelefon használati útmutató

DMS One Oktatási Portál Felhasználói segédlet. DMS One Zrt

A NÉGY BŰVÖS HÁRMAS WWW FTP SQL PHP. BRKK::Békéscsaba Linux rendszergazda képzés 2008

Microsoft Office 365 szakembereknek és kisvállalatoknak (P1 csomag) 1. útmutató Saját Office 365-fiók regisztrálása és az első lépések

Privacy problémák közösségi hálózatokban

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

Tájékoztató az elektronikus ügyintézésről

Java Programozás 11. Ea: MVC modell

ADATKEZELÉSI SZABÁLYZAT KIVONATA

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

EU LOGIN KÉZIKÖNYV. Tartalom

Sú gó az ASIR/PA IR Públikús felú lethez

Aranykor Önkéntes Nyugdíjpénztár Partner Portál

SSL VPN KAPCSOLAT TELEPÍTÉSI ÚTMUTATÓ

Á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 Core) Cserép Máté mcserep@inf.elte.hu http://mcserep.web.elte.hu

Autentikáció Egy weblap felhasználó kezelése számos elemmel rendelkezik, amelyeket biztonságosan 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), más szolgáltatások fiókkezelését (pl. Microsoft Account, Twitter, Facebook), általánosságban támogatott az OAuth és OpenId. az alap funkcionalitás a Microsoft.AspNetCore.Identity 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, műveletei az aszinkron végrehajtást támogatják a felhasználót regisztrálhatjuk (CreateAsync), azonosíthatjuk (FindByIdAsync, FindByEmailAsync, stb.), módosíthatjuk (ChangePasswordAsync), stb. a felhasználó tetszőleges típus lehet, amelyet reprezentálja a szükséges információt (jelszó, e-mail cím, stb.) 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 : MyUser IDisposable UserManager «interface» MyUser «property» + Id(): String + UserName(): String TUser : MyUser IDisposable «interface» IUserStore ELTE IK, Webes alkalmazások fejlesztése 7:5

Felhasználók kezelése Pl.: public class MyUser { } // 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 = await manager.findbynameasync(name); // 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 (Microsoft.AspNetCore.Identity.EntityFrameworkCore) az entitásmodell (IdentityDbContext) névvel és jelszóval ellátott felhasználókat tud kezelni (IdentityUser) az IdentityUser 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> usermanager = new UserManager<IdentiyUser>(store); // felhasználókezelő IdentityUser user = await usermanager.findbynameasync(name); // felhasználó keresése ELTE IK, Webes alkalmazások fejlesztése 7:8

Felhasználók hitelesítése A felhasználók bejelentkeztetését, és az azonosság nyilvántartását a SignInManager osztály felügyeli, amely szintén a felhasználó típusára specializált és aszinkron műveleteket biztosít a felhasználónév-jelszó páros alapú direkt bejelentkeztetést a PasswordSignInAsync, a kijelentkeztetést a SignOutAsync műveletek kezelik, amelyeknek megadható, hogy perzisztens legyen-e a bejelentkezés (azaz jegyezze meg az adatokat), valamint hibás adatok esetén kizárásra kerüljön-e a felhasználó (lockout) támogatja a külső autentikációs providereken keresztüli hitelesítést (ExternalLoginSignInAsync) és a két faktoros autentikációt (TwoFactorAuthenticatorSignInAsync) ELTE IK, Webes alkalmazások fejlesztése 7:9

Felhasználó bejelentkeztetés Bejelentkeztetés: public async Task<IActionResult> Login( ) { // var result = await signinmanager.passwordsigninasync(username, password, remember, false); // bejelentkeztetés if(result.succeeded) { } } Kijelentkeztetés: public async Task<IActionResult> Logout() { await signinmanager.signoutasync(); } ELTE IK, Webes alkalmazások fejlesztése 7:10

Hitelesítés konfigurációja 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 a Startup osztály ConfigureServices művelete végzi, amely paraméterben megkapja a szolgáltatások kollekcióját (IServiceCollection), amely bővíthető és beállítható az AddIdentity<MyUser> segítségével felvehetjük az autentikációs szolgáltatást a gyűjteménybe az AddUserStore<MyStore> megadja az alkalmazandó felhasználói adattár típusát az AddEntityFrameworkStores<MyDbContext> Entity Framework Core alapú adattárolást állít be és megadja a használandó adatbázis entitás kontextus típusát ELTE IK, Webes alkalmazások fejlesztése 7:11

Hitelesítés konfigurációja Pl.: services.addidentity<myuser>().addentityframeworkstores<mydbcontext>().adddefaulttokenproviders(); // beállítások services.configure<identityoptions>(options => { options.password.requiredigit = true; options.password.requiredlength = 8; options.password.requirenonalphanumeric = false; options.password.requireuppercase = true; options.password.requirelowercase = false; options.password.requireduniquechars = 3; options.user.requireuniqueemail = true; }); 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 User.Identity.IsAuthenticated tulajdonság jelzi, 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 = await usermanager. FindByNameAsync(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 ASP.NET Core Identity segítségével valósítjuk meg, a TravelAgencyContext entitás kontextus típust specializálja IdentityDbContext típus. A Guest az IdentityUser specializációja, teljes névvel és címmel kiegészítve. A felhasználókezelést az AccountService szolgáltatás helyett az integrált UserManager és SignInManager szolgáltatásokra bízzuk. egészítsük ki a Startup osztályt a konfigurációhoz továbbra is meghagyjuk a regisztráció nélküli foglalást, ilyenkor automatikusan regisztrálunk egy új felhasználót ELTE IK, Webes alkalmazások fejlesztése 7:14

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 IActionResult 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:15

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

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.IsHttps 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:17