L'elemento identity nel web.config supporta due attributi opzionali:

  • username
  • password

Questi, permettono di specificare le fixed identity da impersonificare nell'applicazione web che abbiamo sviluppato.

   userName="registry:HKLM\SOFTWARE\YourSecureApp\
             
identity\ASPNET_SETREG,userName"
   
password="registry:HKLM\SOFTWARE\YourSecureApp\
             
identity\ASPNET_SETREG,password"

Il codice sopra riportato mostra come utilizzare delle credenziali archiviate nel registro. Questa operazione è stata resa possibile dall'impiego del tool aspnet_setreg.exe. Il quale può essere scaricato da questo Url .

Cosa è aspnet_setreg.exe
aspnet_setreg è una utility che può essere utilizzata per codificare ed archiviare questi attributi nel registro di sistema sotto una chiave sicura.
Prima di partire è necessario utilizzare la funzione CryptProtectData con la flag CRYPTPROTECT_LOCAL_MACHINE, la quale di fatto codifica le credenziali inserite. Questo passo va effettuato perchè qualunque persona con accesso al server può chiamare la funzione CrupyUnprotectData, che, decodifica le credenziali.

Da ora in poi, ogni volta che ASP.NET tenterà di parsare il file di configurazione, questo andrà a leggere la chiave utilizzando prima la funzione CryptUnprotectData.

Attribuire i permessi all'account ASP.NET per leggere le chiavi di registro interessate.
Avvertimento: Non mi stancherò mai di ripeterlo, utilizzare l'editor di registro in modo errato può causare gravi danni al sistema. Quindi.. occhio ;)

  1. Eseguire regedt32, Windows + E (Start-Esegui)
  2. Fare click sulla chiave HKEY_LOCAL_MACHINE\SOFTWARE\MY_SECURE_APP\sottochiave
  3. Nel menù Modifica selezionare "Autorizzazione"
  4. Aggiungere ai profili l'utente ASP.NET.
  5. Impostare il permesso di Lettura.
  6. Applicare le modifiche.
  7. Chiudere il registro

Note
Di default le chiavi che vengono create da aspnet_setreg.exe attribuiscono il controllo agli account System,Administrator e Creator Owner. Per modificare questi livelli è possibile utilizzare Regedt32.exe per modificare il DACL nel registry key. Inutile dire che è necessario assicurarsi che utenti standart possano leggere queste chiavi.

Quando utilizzare Impersonate con le fixed identity.
E' bene sapere che utilizzare l'impersonate con le fixed identity in ambienti Windows 2000 con .NET Framework 1.0 è decisamente sconsigliato. Questo perchè, per eseguire la chiamata LogonUser, l'utente asp.net necessità del terribile privilegio meglio conosciuto come "Act as a part of the operating system" (!!). Il framework 1.1 non soffre di questo problema, dato che la chiamata LogonUser viene effettuata da Internet Information Services e non direttamente dal workerprocess.