Spesso leggo sui forum, ed in particolare su DotNetHell (quello che seguo costantemente), richieste di aiuto per l’autenticazione degli utenti, nonché chiarimenti riguardanti il database ASPNETDB.MDF.
Voglio quindi dare alcune delucidazioni sugli strumenti che il framework, dalla versione 2.0, mette a disposizione per configurare correttamente un sito web.


Brand youbuy

Breve introduzione

Building BlocksASP.NET fornisce un un “servizio” pronto per l’utilizzo, composto da API e controlli che ci permettono di gestire l’autenticazione e l’autorizzazione in maniera veloce e semplice (facente parte dei Building Blocks). Il tutto si basa sul “provider model” che permette di reperire le informazioni necessarie presenti nello “store”, indipendentemente da quale esso sia: SQL Server, Active Directory o altro. Controlli

I blocchi interessati sono “Membership” e “Role Manager”. Appoggiati a questi ci sono i controlli che ci servono per creare interfacce in maniera rapida e senza scrivere codice (o quasi): i controlli di Security.

Dopo questa breve (brevissima) introduzione per capire gli strumenti che abbiamo a disposizione, andiamo a configurare l’applicazione e il database. In questo post vedremo la soluzione che utilizza il database SQL.

Configurazione

MenuEsiste un bellissimo strumento che ci permette di configurare facilmente sia il database che l’applicazione, in maniera facile utilizzando un’interfaccia web.
Questo strumento ha bisogno però di avere configurata la stringa di connessione al database. Riporto il codice da inserire nel web.config nel caso di SQL Express:




  <connectionStrings>
    <clear/>
    <add name="LocalSqlServer" 
            connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
            AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" 
            providerName="System.Data.SqlClient"/>
  </connectionStrings>


tabelle

Cartucce

Apportate le modifiche al web.config, da Visual Studio basta andare nel menù “Progetto” o ”Sito Web” e scegliere la voce “Configurazione di ASP.NET”. Cliccate sulla scheda “Sicurezza”, ed ecco che magicamente viene creato in automatico, nella cartella “App_Data”, il nostro DB. Qui di fianco le tabelle interessate.

Ma come fare se non vogliamo utilizzare un database separato avendone già uno per l’applicazione? Semplice, utilizziamo un widzard. Questo ci permette di aggiungere tutte le tabelle necessarie in un nostro database SQL Server. Ecco come lanciarlo:

  1. Aprite il prompt di comandi
  2. Andate nella cartella “C:\Windows\Microsoft.NET\Framework\v2.0.50727
  3. Lanciate il comando “aspnet_regsql.exe

Di seguito le schermate del widzard.

step1step2step3step4

Abbiamo bisogno anche di un’altra modifica sul web.config, ovvero dire al provider di accesso allo store, di utilizzare la stringa di connessione che sicuramente avete già. Qui sotto riporto tutto il codice necessario:

  <connectionStrings>
    <clear/>
    <add name="Northwind" 
             connectionString="Data Source=NB-HP;Initial Catalog=NORTHWND;User ID=app_usr;Password=app_usr" 
             providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
    </authentication>
    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider"
             connectionStringName="Northwind"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="false"
             requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="6"
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             applicationName="/"/>
      </providers>
    </membership>
    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider"
             connectionStringName="Northwind"
             applicationName="/"/>
      </providers>
    </profile>
    <roleManager enabled="false">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider"
             connectionStringName="Northwind"
             applicationName="/"/>
      </providers>
    </roleManager>
  </system.web>

Per finire, dallo Strumento Amministrazione sito Web, potete creare ruoli, utenti, regole di accesso, o addirittura utilizzare la Configurazione guidata sicurezza per configurare la sicurezza mediante passaggi successivi.


Lastminute Youbuy

Conclusione

La gestione utenti, l’autenticazione, l’autorizzazione ed anche la profilazione, con la versione 2 di ASP.NET, sono diventati passaggi molto semplici grazie a questi strumenti messi a disposizione dall’ambiente di sviluppo. Ricordo che questi sono passaggi semplici per configurazioni standard.

Spero di essere stato di aiuto, e sarò lieto di ricevere commenti e/o suggerimenti per migliorare il contenuto del blog.

Riferimenti

Sicurezza dei siti Web ASP.NET
ASP.NET 2.0 Membership, Roles, Forms Authentication, and Security Resources
Examining ASP.NET’s Membership, Roles, and Profile


Cd e Dvd