Membership e Roles API: autenticazione, autorizzazione e gestione dei ruoli con ASP.NET 2.0

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Gestione degli utenti anonimi

ASP.NET 2.0 introduce anche la gestione avanzata degli utenti anonimi, caratteristica che permette, anche senza che l'utente inserisca le credenziali, il suo riconoscimento grazie ad un cookie. Di default questa gestione degli utenti è disabilitata e per attivarla dobbiamo inserire nel web.config queste direttive:

<anonymousIdentification
    enabled="true"
    cookieless="UseCookies"
    cookieProtection="All"
    cookieTimeout="100000"
    />

Una volta attivata la gestione, all'utente viene assegnato come identificativo un ID alfanumerico casuale:

fr86ed98-aa99-3455-dj4e-dme84le9ak34

Che possiamo ricavare con questo codice:

identificativo = Request.AnonymousId

Una volta attivato, quando un utente ritornerà nella nostra web application sarà riconosciuto proprio come se avesse eseguito l'autenticazione e sarà quindi possibile operare di conseguenza per fornire vari servizi.

Gestione dei roles

Finalmente di base è inclusa la gestione dei roles (o gruppi) assegnati agli utenti. Grazie alla nuova API Role Manager possiamo inserire gli utenti in particolari gruppi, senza grossi sforzi. Questo ci consente di poter chiudere determinate aree del nostro sito ad utenti che appartengono a determinati gruppi.

Dietro al funzionamento della API Role Manager c'è la classe Roles che, come la classe Membership dev'essere configurata con un provider nel web.config e, a differenza di quest'ultima, di default è disattivata.

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <system.web>
    <roleManager
      enabled="true"
      cacheRolesInCookie="true"
    />
  <authentication mode="Forms" />
  </system.web>
</configuration>

Anche in questo caso dobbiamo configurare il provider, se ne utilizziamo uno diverso da quello di default. Ipoteticamente si potrebbe utilizzare per la gestione degli utenti con la Membership un provider e per la gestione di Roles un'altra base di dati con un altro provider (ad esempio, Active Directory nel primo caso e SQL Server nel secondo):

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
    <add name="MioDatabase" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\prova.mdf;Integrated Security=True; User Instance=True" />
</connectionStrings>
  <system.web>
    <roleManager
      enabled="true"
      cacheRolesInCookie="true"
      defaultProvider="SqlProvider">
        <providers>
          <add name="SqlProvider"  type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                connectionStringName="MioDatabase"
            />
        </providers>
    </roleManager>
    <authentication mode="Forms" />
  </system.web>
</configuration>

Una delle proprietà più importanti nella fase di configurazione di questo provider è cacheRolesInCookie. Impostando a "true" questo attributo facciamo in modo che, dopo l'autenticazione, il gruppo o i gruppi a cui appartiene l'utente vengano memorizzati in formato criptato all'interno di un cookie. Se impostato a "false", ad ogni richiesta dell'utente di una pagina protetta, sarà eseguito un accesso alla base dati contenente i ruoli per verificare se quell'utente può effettivamente accedere a quella sezione del sito.

Autenticazione senza cookie

Uno dei grandi difetti che ha sempre minato le versioni 1.x di ASP.NET è l'impossibilità di un'autenticazione con le API fornite con il Framework, qualora il browser di un utente abbia i cookie disabilitati.

Nella versione 2.0 finalmente è stato superato questo inconveniente in modo ottimale e sono stati introdotti nuovi attributi nelle impostazioni all'interno del web.config:

<authentication mode="Forms">
  <forms name=".ASPXAUTH"
    loginUrl="login.aspx"
    protection="All|None|Ecryption|Validation"
    timeout="30"
    path="/"
    requireSSL="true|false"
    slidingExpiration="true|false"
    defaultUrl="default.aspx"
    cookieless="UseCookies|UseUri|AutoDetect|UseDeviceProfile" />
</authentication>

Oltre a quelli già conosciuti come loginUrl o protection, ecco i nuovi attributi in dettaglio:

  • defaultUrl: è la pagina di default richiamata da FormsAuthentication nel caso non sia stata specificata alcuna pagina di ritorno;
  • slidingExpiration: una delle novità introdotte da ASP.NET 2.0, consente che l'autenticazione scada automaticamente dopo n minuti, anche se l'utente continua a visitare pagine nel sito;
  • cookieless: permette di selezionare come mantenere l'autenticazione dell'utente.

Nell'attributo cookieless possiamo specificare quattro opzioni: UseCookies è il metodo tradizionale già presente in ASP.NET 1.x e l'autenticazione viene memorizzata in un cookie, mentre con UseUri, l'identificativo dell'utente viene inserito nell'url di pagina:

Immagine

http://locahost/autentica2/(F(G9cCdsJeKDdLcIX4TLtEChADixmpQgCv5imp7yWlz_ HD6NXtfzMLma9F9wRr4CtvlOwsrGd6SUw5NJ1VNgVLlA2))/secret/Default.aspx

L'opzione più potente è AutoDetect, perchè in questo caso sarà ASP.NET, verificando le capacità del client che ha richiamato la pagina, a decidere quale metodo utilizzare. Con un normale browser utilizzerà il cookie, nel caso di un browser con i cookie disabilitati invece imposterà in automatico la modalità UseUri. Questa opzione diventa comodissima per quei siti che necessitano dell'uso dell'autenticazione anche con browser senza cookie, per esempio siti di e-commerce o community.

Infine con l'opzione UseDeviceProfile la scelta avviene leggendo il tipo di browser dell'utente. In caso di un browser tradizionale saranno sempre usati i cookie, in casi di device senza cookie sarà inserito l'identificativo nell'URL di pagina.

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC