ASP.NET 2.0 Security Andrea Saltarello Software Architect – Software Architect – Managed Designs S.r.l.Managed Designs S.r.l. Andrea Saltarello Software Architect – Software Architect – Managed Designs S.r.l.Managed Designs S.r.l.
SponsorSponsor
Parliamo di… AmarcordAmarcord Membership APIMembership API Login Controls bucketLogin Controls bucket Implementazione di ProviderImplementazione di Provider AmarcordAmarcord Membership APIMembership API Login Controls bucketLogin Controls bucket Implementazione di ProviderImplementazione di Provider
Nella v1.x, limplementazione della Forms Authentication è tutta a nostro carico: –Invocare opportunamente RedirectFromLoginPage() o SetAuthCookie() –Costruire il SecurityPrincipal nellevento AuthenticateRequest ASP.NET v2 espone una API completa per la security applicativa: la Membership API Nella v1.x, limplementazione della Forms Authentication è tutta a nostro carico: –Invocare opportunamente RedirectFromLoginPage() o SetAuthCookie() –Costruire il SecurityPrincipal nellevento AuthenticateRequest ASP.NET v2 espone una API completa per la security applicativa: la Membership API
Membership API Astrae la struttura del DB utenti dalla applicazione –I nomi Mapper e Gateway vi ricordano qualcosa? –I nomi Mapper e Gateway vi ricordano qualcosa? Lastrazione si presenta sotto forma di Provider (à la ADO.NET) I Provider implementano interfacce (conosciute al runtime) che espongono le operazioni security- oriented più comuni, ad es: –GetAllUsers –GetUser –GetRoles –IsInRole –… Astrae la struttura del DB utenti dalla applicazione –I nomi Mapper e Gateway vi ricordano qualcosa? –I nomi Mapper e Gateway vi ricordano qualcosa? Lastrazione si presenta sotto forma di Provider (à la ADO.NET) I Provider implementano interfacce (conosciute al runtime) che espongono le operazioni security- oriented più comuni, ad es: –GetAllUsers –GetUser –GetRoles –IsInRole –…
Membership Providers ASP.NET 2 offre alcuni provider: Access (sarà rimosso in beta2, ma dicono che sarà rilasciato il sorgente attuale)Access (sarà rimosso in beta2, ma dicono che sarà rilasciato il sorgente attuale)dicono SQL ServerSQL Server Active DirectoryActive Directory E possibile implementare provider custom (ne parliamo dopo ) ASP.NET 2 offre alcuni provider: Access (sarà rimosso in beta2, ma dicono che sarà rilasciato il sorgente attuale)Access (sarà rimosso in beta2, ma dicono che sarà rilasciato il sorgente attuale)dicono SQL ServerSQL Server Active DirectoryActive Directory E possibile implementare provider custom (ne parliamo dopo )
Controlli Login Web Controls che si basano sulla membership API: Non richiedono scrittura di codiceNon richiedono scrittura di codice Si interfacciano alle feature di security di ASP.NET 2.0Si interfacciano alle feature di security di ASP.NET 2.0
DemoDemo
ASP.NET Admin Tool I provider espongono anche le funzionalità di create/update/delete degli utenti, quindi è possibile creare un tool generico di amministrazione basato sulla membership API Lidea è troppo intelligente per essere mia, infatti ASP.NET 2 lo ha già Lidea è troppo intelligente per essere mia, infatti ASP.NET 2 lo ha già I provider espongono anche le funzionalità di create/update/delete degli utenti, quindi è possibile creare un tool generico di amministrazione basato sulla membership API Lidea è troppo intelligente per essere mia, infatti ASP.NET 2 lo ha già Lidea è troppo intelligente per essere mia, infatti ASP.NET 2 lo ha già
DemoDemo
Membership API vs. Custom DB Per utilizzare il proprio DB utenti, è sufficiente creare un nuovo provider Occorre implementare: –Membership Provider: implementa il mapping tra la API e il database utenti –Role Provider: implementa il mapping tra gli utenti ed il database dei ruoli applicativi Per utilizzare il proprio DB utenti, è sufficiente creare un nuovo provider Occorre implementare: –Membership Provider: implementa il mapping tra la API e il database utenti –Role Provider: implementa il mapping tra gli utenti ed il database dei ruoli applicativi
Membership Providers E una classe derivata di System.Web.Security.MembershipProvider Deve essere registrata E una classe derivata di System.Web.Security.MembershipProvider Deve essere registrata <add name="CustomMembershipProvider type=MioNamespace.CustomMembershipProvider" /> <add name="CustomMembershipProvider type=MioNamespace.CustomMembershipProvider" />
Role Providers E una classe derivata di System.Web.Security.RoleProvider Deve essere registrata E una classe derivata di System.Web.Security.RoleProvider Deve essere registrata
Porting di codebase ASP.NET 1.1 In fase di migrazione di applicazioni ASP.NET esistenti, è possibile sfruttare la membership API utilizzando il pattern Adapter per esporre sotto forma di provider le funzionalità implementate ai… tempi della pietra (cioè con la v1.1 )
Adapter pattern 101 Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.
demodemo
Role-based Navigation Lelemento siteMapNode nel file web.sitemap dispone di un attributo roles Lattributo roles specifica i ruoli applicativi cui sarà accessibile la voce del menu. Richiede labilitazione del SecurityTrimming Lelemento siteMapNode nel file web.sitemap dispone di un attributo roles Lattributo roles specifica i ruoli applicativi cui sarà accessibile la voce del menu. Richiede labilitazione del SecurityTrimming
SecurityTrimmingSecurityTrimming Non può essere (dis)abilitato programmaticamente Deve essere impostato nel file di configurazione: Non può essere (dis)abilitato programmaticamente Deve essere impostato nel file di configurazione: <add name="AspNetXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider, System.Web, Version= , Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile="web.sitemap" SecurityTrimmingEnabled="true" /> <add name="AspNetXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider, System.Web, Version= , Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile="web.sitemap" SecurityTrimmingEnabled="true" />
demodemo
LinksLinks