Gincsai Gábor MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék.

Hasonló előadás


Az előadások a következő témára: "Gincsai Gábor MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék."— Előadás másolata:

1 Gincsai Gábor gincsai@aut.bme.hu MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék Biztonság és jogosultság kezelés ASP.NET 2.0 környezetben

2 2 Tartalom  Membership szolgáltatás  Role manager szolgáltatás  Profilok használata  Egyéb újdonságok

3 3 Membership szolgáltatás  Felhasználók kezelése és azonosítása  Deklaratív elérés: Web Site Admin Tool  Programozott elérés: Membership API  Egyszerűsíti az űrlap alapú hitelesítést  Logika a felhasználó nevének és jelszavának ellenőrzésére, létrehozására stb.  Felhasználók bejelentkezési adatainak, e- mail címének stb. tárolása  Provider-alapú  rugalmas tárolás!

4 4 Tagság séma API Adatok SQL Server stb. Providerek Active Directory Active Directory Login LoginStatus LoginView stb. Membership MembershipUser SqlMembershipProvider ActiveDirectory- MembershipProvider stb. Vezérlők

5 5 Provider modell SQL Server Alkalmazás API Provider Interface Konfig ASP.NET.dll SQL Provider SQL Provider Access Provider Access Provider Egyéb Provider Egyéb Provider Access stb.

6 6 Provider Toolkit  Letölthető Starter Kit  Access adatbázist használó provider minta implementációja  Membership  Role Manager  Profil http://msdn.microsoft.com/asp.net/downloads/providers/default.aspxhttp://msdn.microsoft.com/asp.net/downloads/providers/default.aspx

7 7 Aspnet_regsql.exe  SqlMembershipProvider által használt adatbázis létrehozását segítő eszköz.

8 8 Milyen adatbázist hoz létre?

9 9 <membership defaultProvider="AspNetSqlMembershipProvider„ userIsOnlineTimeWindow="15"> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, …" connectionStringName="LocalSqlServer" enablePasswordRetrieval="[true|false]" enablePasswordReset="[true|false]" requiresQuestionAndAnswer="[true|false]" applicationName="/" requiresUniqueEmail="[true|false]" passwordFormat="[Clear|Encrypted|Hashed]" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression="" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" /> <membership defaultProvider="AspNetSqlMembershipProvider„ userIsOnlineTimeWindow="15"> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, …" connectionStringName="LocalSqlServer" enablePasswordRetrieval="[true|false]" enablePasswordReset="[true|false]" requiresQuestionAndAnswer="[true|false]" applicationName="/" requiresUniqueEmail="[true|false]" passwordFormat="[Clear|Encrypted|Hashed]" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression="" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" /> SqlMembershipProvider beállítása web.config

10 10 Membership osztály System.Web.Security  Statikus függvények a tagsági feladatokra.  Felhasználó létrehozása és törlése  Információk elkérése a felhasználóról  Új jelszó létrehozása  Belépés ellenőrzése  Provider beállítások elérése.

11 11 Felhasználó ellenőrzése ASP.NET v1.X Stored Procedures Data Access Layer (DAL) Business Logic Layer (BLL)

12 12 if( Membership.ValidateUser( UserName.Text, Password.Text ) ) { RedirectFromLoginPage(UserName.Text,RememberMe.Checked ); } else { // TODO: Nem sikerült belépni } if( Membership.ValidateUser( UserName.Text, Password.Text ) ) { RedirectFromLoginPage(UserName.Text,RememberMe.Checked ); } else { // TODO: Nem sikerült belépni } Felhasználó ellenőrzése ASP.NET v2.0

13 13 try { Membership.CreateUser("Gina","pass","gincsai@aut.bme.hu"); } catch( MembershipCreateUserException e ) { // Miért nem sikerült létrehozni a felhasználót switch( e.StatusCode ) { case MembershipCreateStatus.DuplicateUsername: … case MembershipCreateStatus.DuplicateEmail: … case MembershipCreateStatus.InvalidPassword: … default: … } try { Membership.CreateUser("Gina","pass","gincsai@aut.bme.hu"); } catch( MembershipCreateUserException e ) { // Miért nem sikerült létrehozni a felhasználót switch( e.StatusCode ) { case MembershipCreateStatus.DuplicateUsername: … case MembershipCreateStatus.DuplicateEmail: … case MembershipCreateStatus.InvalidPassword: … default: … } Új felhasználó létrehozása C#

14 14 MembershipUser osztály System.Web.Security  Regisztrált felhasználót reprezentáló osztály.  Tulajdonságok a felhasználó adatainak elkérésére / beállítására.  A Membership osztály függvényei ezt adják vissza.

15 15 if( Membership.ValidateUser( UserName.Text, Password.Text ) ) { MembershipUser user = Membership.GetUser( UserName.Text ); user.Comment = "0"; // Hibás próbálkozások törlése RedirectFromLoginPage( UserName.Text, RememberMe.Checked ); } else { MembershipUser user = Membership.GetUser( UserName.Text ); if( user != null ) { // Hibás próbálkozások számának növelése string count = Convert.ToInt32( user.Comment ) + 1; // Ha 4-nél több, akkor kitiltjuk if( count > 4 ) user.IsApproved = false; // Hibás próbálkozások számának frissítése user.Comment = count.ToString(); } if( Membership.ValidateUser( UserName.Text, Password.Text ) ) { MembershipUser user = Membership.GetUser( UserName.Text ); user.Comment = "0"; // Hibás próbálkozások törlése RedirectFromLoginPage( UserName.Text, RememberMe.Checked ); } else { MembershipUser user = Membership.GetUser( UserName.Text ); if( user != null ) { // Hibás próbálkozások számának növelése string count = Convert.ToInt32( user.Comment ) + 1; // Ha 4-nél több, akkor kitiltjuk if( count > 4 ) user.IsApproved = false; // Hibás próbálkozások számának frissítése user.Comment = count.ToString(); } Felhasználó kitiltása C#

16 16 Login vezérlők  Felület és logika a biztonsággal kapcsolatos feladatokhoz Login Password- Recovery Password- Recovery LoginStatus LoginName LoginView CreateUser- Wizard CreateUser- Wizard Change- Password Change- Password Tagság és szerepkör kezelés

17 17 Login Controls  Felhasználó beléptetése  Jelszó emlékeztető  Jelszó csere

18 18 Tartalom  Membership szolgáltatás  Role manager szolgáltatás  Profilok használata  Egyéb újdonságok

19 19 Role Manager szolgáltatás  Szerep alapú jogosultság kezelés készen  Deklaratív elérés: Web Site Admin Tool  Programozott elérés: Roles API  Egyszerűbb szerep alapú jogosultság kezelés űrlap alapú hitelesítés esetén  Minden kérésnél szerepekhez rendeli a felhasználót  Tárolja a szerepkörök adatait  Provider-alapú  rugalmas tárolás!

20 20 Szerepkör kezelés séma Role API Adatok SQL Server stb. Providerek Authorization Manager Authorization Manager Login LoginStatus LoginView stb. Vezérlők Roles SqlRole- Provider AuthorizationStore- RoleProvider stb. WindowsToken- RoleProvider

21 21 Role Manager bekapcsolása  A szerepkör kezelés alapértelmezés szerint nincs engedélyezve.  Engedélyezzük a web.config-ban: web.config

22 22 <roleManager enabled="[true|false]" defaultProvider="AspNetSqlRoleProvider" createPersistentCookie="[true|false]" cacheRolesInCookie="[true|false]" cookieName=".ASPXROLES" cookieTimeout="00:30:00" cookiePath="/" cookieRequireSSL="[true|false]" cookieSlidingExpiration="[true|true]" cookieProtection="[None|Validation|Encryption|All]" domain="" maxCachedResults="25" > <add applicationName="/" connectionStringName="LocalSqlServer" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider,System.Web,…" /> <roleManager enabled="[true|false]" defaultProvider="AspNetSqlRoleProvider" createPersistentCookie="[true|false]" cacheRolesInCookie="[true|false]" cookieName=".ASPXROLES" cookieTimeout="00:30:00" cookiePath="/" cookieRequireSSL="[true|false]" cookieSlidingExpiration="[true|true]" cookieProtection="[None|Validation|Encryption|All]" domain="" maxCachedResults="25" > <add applicationName="/" connectionStringName="LocalSqlServer" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider,System.Web,…" /> Role Manager beállítása web.config

23 23 Roles osztály System.Web.Security  Átjáró a Role Management API-hoz  Legfontosabb feladatokhoz statikus függvények  Szerepek létrehozása / törlése  Felhasználók szerephez rendelése  Felhasználók eltávolítása egy szerepből  Provider beállítások elérése

24 24 // Ha nem létezik a szerepkör, létrehozzuk if( !Roles.RoleExists("Bloggers" ) ) { Roles.CreateRole( "Bloggers" ); } // Elkérjük az aktuális felhasználót string name = Membership.GetUser().Username; // Hozzáadjuk a szerepkörhöz Roles.AddUserToRole( name, "Bloggers" ); // Ha nem létezik a szerepkör, létrehozzuk if( !Roles.RoleExists("Bloggers" ) ) { Roles.CreateRole( "Bloggers" ); } // Elkérjük az aktuális felhasználót string name = Membership.GetUser().Username; // Hozzáadjuk a szerepkörhöz Roles.AddUserToRole( name, "Bloggers" ); Használata C#

25 25 Szerepkör cache  Ha a süti engedélyezve van  Titkosított lista a szerepkörökről  Nem kell adatbázishoz fordulni minden kérésénél  Ha a süti nincs engedélyezve  A Role Manager továbbra is működik  Az első alkalommal lekérdezni a szerepeket  Az oldalon található többi hivatkozás a cache-elt listát használja.

26 26 Role Management  Web Site Admin Tool  Felhasználók kezelése

27 27 Tartalom  Membership szolgáltatás  Role manager szolgáltatás  Profilok használata  Egyéb újdonságok

28 28 Profilok  Felhasználói adatok perzisztens tárolása  Erősen típusos elérés (  Session)  Felolvasás igény esetén (  Session)  Perzisztens (  Session)  Bejelentkezett és névtelen felhasználóknak  Saját típusok támogatása  Elérés HttpProfileBase segítségével  Provider-alapú  rugalmas tárolás!

29 29 Profil séma Profilok Profil adatok SQL Server Express Expressstb.stb. ProfileBaseProfileBase ProfileCommonProfileCommon stb.stb. Profil providerek SqlProfileProviderSqlProfileProvider SQL Server

30 30 // Cím és téma belállítása Profile.Title = "Gina Blooooogja"; // Szerző azonosítójának beállítása Profile.AuthorID = new Guid(user.ProviderUserKey.ToString()); // Fénykép beállítása Profile.Photo = myPhoto; // Cím és téma belállítása Profile.Title = "Gina Blooooogja"; // Szerző azonosítójának beállítása Profile.AuthorID = new Guid(user.ProviderUserKey.ToString()); // Fénykép beállítása Profile.Photo = myPhoto; <add name="Photo" type="System.Drawing.Image" serializeAs="Binary"/> <add name="Photo" type="System.Drawing.Image" serializeAs="Binary"/> Profil definíció és elérése C# web.config

31 31 Egyedi típusok  Type attribútummal adható meg a típus  Teljesen meghatározott névvel (FQN) kell rá hivatkozni  serializeAs hogyan sorosítsa  Binary | Xml | String  serializeAs="Binary„  Sorosíthatónak kell lennie a típusnak  serializeAs="String„  Típus konverziót támogatni kell

32 32 public partial class _Default : System.Web.UI.Page { … protected ProfileCommon Profile { get { return ((ProfileCommon)(this.Context.Profile)); } } … } public partial class _Default : System.Web.UI.Page { … protected ProfileCommon Profile { get { return ((ProfileCommon)(this.Context.Profile)); } } … } Hogyan működik? Az oldal generált osztálya ProfileBase-ből származó generált osztály, ami tartalmazza a profil adatokat A generált oldal osztály tartalmazza a Profile tulajdonságot. C#

33 33 Profil csoportok  Tulajdonságokat csoportosíthatjuk  kulcsszóval definiáljuk  Csoportok nem ágyazhatók egymásba

34 34 // Beállítjuk a blog címét Profile.BlogData.Title = "Gina Bloooogja"; // Beállítjuk az alcímet Profile.BlogData.SubTitle = "Mert blogolni jó :)"; // Beállítjuk a blog címét Profile.BlogData.Title = "Gina Bloooogja"; // Beállítjuk az alcímet Profile.BlogData.SubTitle = "Mert blogolni jó :)"; Profil csoport létrehozása web.config

35 35 Anonymous profil  Alapértelmezés szerint nincs engedélyezve.  Azonosított felhasználó ID-jával indexeli  Anonymous profil engedélyezése  Engedélyezzük az anonymous azonosítást  Határozzuk meg, mely profil tulajdonságokkal rendelkezzen az anonymous felhasználó  Anonymous ID-val indexeli az adatokat.

36 36 Anonymous profil web.config

37 37 <anonymousIdentification enabled="[true|false]" cookieName=".ASPXANONYMOUS" cookieTimeout="69:10:40" cookiePath="/" cookieRequireSSL="[true|false]" cookieSlidingExpiration="[true|false]" cookieProtection="[None|Validation|Encryption|All]" cookieless="[UseUri|UseCookies|AutoDetect|UseDeviceProfile]" domain="" /> <anonymousIdentification enabled="[true|false]" cookieName=".ASPXANONYMOUS" cookieTimeout="69:10:40" cookiePath="/" cookieRequireSSL="[true|false]" cookieSlidingExpiration="[true|false]" cookieProtection="[None|Validation|Encryption|All]" cookieless="[UseUri|UseCookies|AutoDetect|UseDeviceProfile]" domain="" /> Anonymous azonosítás  Sütivel, vagy süti nélküli (URL munging) web.config

38 38 Eseménykezelő neve Leírás AnonymousIdentification_ Creating Az anonymous ID létrehozása előtt váltódik ki. Profile_MigrateAnonymous A felhasználó belépésekor váltódik ki, hogy ha az anonymous felhasználók is tárolhatnak adatok a Profilba, lehessen ezeket az információkat átmigrálni a belépett felhasználó profiljába. Profile_Personalize A profil betöltődése előtt váltódik ki, hogy lehessen saját profilt is betölteni. Profile_ProfileAutoSaving A profil mentése előtt váltódik ki, hogy a saját típusokat tartalmazó profilokat testreszabhassuk. Profil események  A profil szolgáltatás és az anonymous azonosítás globális eseményeket vált ki.

39 39 void Profile_MigrateAnonymous( Object sender, ProfileMigrateEventArgs e) { if( Profile.Title == null ) Profile.Title = Profile.GetProfile(e.AnonymousID).Title; } void Profile_MigrateAnonymous( Object sender, ProfileMigrateEventArgs e) { if( Profile.Title == null ) Profile.Title = Profile.GetProfile(e.AnonymousID).Title; } Anonymous felhasználó migrálása global.asax

40 40 <profile enabled="[true|false]" defaultProvider="AspNetSqlProfileProvider" automaticSaveEnabled="[true|false]" inherits=""> <add applicationName="/" connectionStringName="LocalSqlServer" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlProfileProvider, …" /> <profile enabled="[true|false]" defaultProvider="AspNetSqlProfileProvider" automaticSaveEnabled="[true|false]" inherits=""> <add applicationName="/" connectionStringName="LocalSqlServer" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlProfileProvider, …" /> Profil szolgáltatás beállítása web.config

41 41 Profil  Saját profil létrehozása  Regisztráció  Profil adatok módosítása

42 42 Tartalom  Membership szolgáltatás  Role manager szolgáltatás  Profilok használata  Egyéb újdonságok

43 43 web.config titkosítása  Bizalmas információ a web.config-ban  Pl: adatbázishoz kapcsolódási adatok  aspnet_regiis tudja titkosítani  A.NET fel tudja olvasni, számunkra transzparens módon aspnet_regiis –pef ”ConnectionStrings” ”c:\Blog” –prov ”DataProtectionConfigurationProvider”

44 44 Nem ASP.NET fájlok védelme  Cassini  Alapértelmezés szerint védi  Web.config alapján  IIS 6.0  Alapértelmezésben nem védi  Az IIS nem továbbítja a kérést  Web.config-ban megadható, hogy védje

45 45 Összefoglalás  Biztonság sokkal kevesebb kóddal  Login kontrollok kódolás nélkül  Kiterjeszthető, rugalmas modell  Beépített webes adminisztrációs felület  Nem újdonság, megoldás!

46 46 További információk  Fejlesztői Portál:  http://www.devportal.hu http://www.devportal.hu  Webfejlesztés témaközpont:  http://www.devportal.hu/Portal/Webdevelopment.aspx http://www.devportal.hu/Portal/Webdevelopment.aspx  ASP.NET honlap  http://www.asp.net http://www.asp.net  MSDN ASP.NET Developer Center  http://msdn.microsoft.com/asp.net/ http://msdn.microsoft.com/asp.net/  Visual Studio 2005 MSDN Documentation  http://msdn2.microsoft.com http://msdn2.microsoft.com  Visual Web Developer 2005 Express Edition  http://msdn.microsoft.com/vstudio/express/vwd/ http://msdn.microsoft.com/vstudio/express/vwd/  Visual Web Developer 2005 Express Edition MSDN documentation  http://msdn2.microsoft.com/ms178093(en-US,VS.80).aspx http://msdn2.microsoft.com/ms178093(en-US,VS.80).aspx  ASP.NET 2.0 Quickstart tutorial  http://www.asp.net/Tutorials/quickstart.aspx http://www.asp.net/Tutorials/quickstart.aspx  Scott Guthrie blogja  http://weblogs.asp.net/scottgu/ http://weblogs.asp.net/scottgu/

47 47 Kérdések és válaszok Értékelőlapok!

48 48 © 2006 Microsoft Corporation. Minden jog fenntartva. Az előadás csupán tájékoztató jellegű, a Microsoft Magyarország a benne szereplő esetleges hibákért vagy tévedésekért semmilyen felelősséget nem vállal.


Letölteni ppt "Gincsai Gábor MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék."
Google Hirdetések