Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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."

Hasonló előadás


Google Hirdetések