Membership .NET

La nuove funzioni di membership sono state sicuramente una delle cose più gradite della vesione 2.0 di ASP.NET. Al di là dei nuovi controlli per la gestione completa del logon e della creazione dell'utente ci sono però molte altre novità non sempre note.

Il tipo di autenticazione

Oltre all'accesso anonimo, ASP.NET supporta 3 tipi di autenticazione: Windows, Forms e Passport. Vediamo quello che c'è da sapere per quella Windows.

Per forzare IIS alla richiesta di password è innazitutto necessario disattivare l'accesso anonimo disabilitando l'utente al quale è legato il processo ASP.NET (generalmente il nome è del tipo IUSR_nomemacchina). A questo punto non rimane che mettere mano al web.config file.

<configuration> <system.web> <authentication mode="Windows"> <authorization> <deny users="?" /> </authorization> </authentication> </system.web> </configuration>

Una cosa importante da ricordare sono i due verbi a disposizione per le autorizzazioni.

  • deny (esempio <deny users="?" />
  • allow (esempio <allow users="?" />

Poi ci sono le categorie che si possono autorizzare.

  • users (per gli utenti)
  • roles (per i gruppi)

Ed infine i caratteri jolly.

  • * per tutti gli utenti
  • ? per tutti gli utenti anonimi

Come avviene l'autenticazione

Una volta che l'utente viene autenticato l'informazione deve essere ricordata fino al logoff. ASP.NET memorizza questa informazione o in un cookie oppure nella Url a seconda delle impostazioni che forniamo nella sezione forms. Le possibilità sono:

  • UseDeviceProfile: si controlla se il browser utilizzato supporta i cookie (il che non vuol dire che siano però abilitati). Questa è l'impostazione di default.
  • AutoDetect: si controlla se il browser ha i cookie funzionanti inviandone uno di prova.
  • UseCookie: si invia sempre un cookie
  • UseUri: si utilizza sempre la URL

Ecco un esempio su come impostare questi valori

<configuration> <system.web> <authentication mode="Forms"> <forms Cookieless="UseUri" > </authentication> </system.web> </configuration>

Una caratteristica poco nota è quella di memorizzare, magari solo nella fase di sviluppo, le credenziali all'interno del web.config file.

<system.web> <authentication> <forms protection="Encryption" timeout="30"> <credentials passwordFormat="SHA1"> <user name="massimo" password="6D617373696D6F"/> <user name="betty" password="6265747479" /> </credentials> </forms > </authentication> </system.web>

Per la creazione delle password ecco una semplice utility costruita appositamente

Password:
Encoded password:

Ovviamente questa funziona non può essere utilizzata per il vostro web. Quindi ecco tutto il sorgente da copiare.

Protected Sub encodePswButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles encodePswButton.Click Dim typedpsw As String = Me.pswTextBox.Text Dim out As New StringBuilder Dim myhash As SHA1CryptoServiceProvider = New SHA1CryptoServiceProvider Dim psw As Byte() = Encoding.ASCII.GetBytes(typedpsw) myhash.ComputeHash(psw) For Each b As Byte In psw out.Append(b.ToString("X2")) Next Me.pswencodedTextBox.Text = out.ToString End Sub

Impersonation

Le applicazioni ASP.NET di default utilizzano l'account asp.net (IIS 5) o il Network service account (IIS 6). Questo comportamento è configurabile tramite web.config ed il default è:

<processModel autoConfig="true">

Se si utilizza la Windows authentication si può far girare la richiesta con l'account dell'utente

<identity impersonate="true" />

Si può anche impostare per tutte le richieste un account differente

<identity impersonate="true" userName="DOMAIN/user" password="Password" />
ie firefox opera safari Valid XHTML Valid CSS Icra Approved Cosa vogliono dire?
Copyright © 2006/07 Softgens S.r.l. PI 02854230543 info@softgens.com