Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
da Microsoft
Informazioni su come usare autenticazione di Windows nel contesto di un'applicazione MVC. Si apprenderà come abilitare autenticazione di Windows all'interno del file di configurazione Web dell'applicazione e come configurare l'autenticazione con IIS. Infine, si apprenderà come usare l'attributo [Autorizza] per limitare l'accesso alle azioni del controller a specifici utenti o gruppi di Windows.
L'obiettivo di questa esercitazione è spiegare come sfruttare le funzionalità di sicurezza incorporate in Internet Information Services per proteggere le visualizzazioni nelle applicazioni MVC. Si apprenderà come consentire l'richiamare le azioni del controller solo da specifici utenti o utenti di Windows che sono membri di gruppi di Windows specifici.
L'uso di autenticazione di Windows ha senso quando si crea un sito Web aziendale interno (un sito Intranet) e si vuole che gli utenti possano usare i nomi utente e le password di Windows standard quando si accede al sito Web. Se si sta creando un sito Web esterno (un sito Web Internet) prendere in considerazione l'uso dell'autenticazione dei moduli.
Abilitazione dell'autenticazione di Windows
Quando si crea una nuova applicazione MVC ASP.NET, autenticazione di Windows non è abilitata per impostazione predefinita. L'autenticazione dei moduli è il tipo di autenticazione predefinito abilitato per le applicazioni MVC. È necessario abilitare autenticazione di Windows modificando il file di configurazione Web dell'applicazione MVC (web.config). Trovare la <sezione di autenticazione e modificarla per l'uso di Windows anziché l'autenticazione> di Forms come illustrato di seguito:
<authentication mode="Windows">
</authentication>
Quando si abilita autenticazione di Windows, il server Web diventa responsabile dell'autenticazione degli utenti. In genere, esistono due diversi tipi di server Web usati durante la creazione e la distribuzione di un'applicazione MVC ASP.NET.
Prima di tutto, durante lo sviluppo di un'applicazione MVC, usare il server Web di sviluppo ASP.NET incluso in Visual Studio. Per impostazione predefinita, il server Web di sviluppo ASP.NET esegue tutte le pagine nel contesto dell'account Windows corrente (qualsiasi account usato per accedere a Windows).
Il server Web di sviluppo ASP.NET supporta anche l'autenticazione NTLM. È possibile abilitare l'autenticazione NTLM facendo clic con il pulsante destro del mouse sul nome del progetto nella finestra Esplora soluzioni e selezionando Proprietà. Selezionare quindi la scheda Web e selezionare la casella di controllo NTLM (vedere Figura 1).
Figura 1: abilitazione dell'autenticazione NTLM per il server Web di sviluppo ASP.NET
Per un'applicazione Web di produzione, a mano, si usa IIS come server Web. IIS supporta diversi tipi di autenticazione, tra cui:
- Autenticazione di base: definita come parte del protocollo HTTP 1.0. Invia nomi utente e password in testo chiaro (con codifica Base64) in Internet. - Autenticazione digest: invia un hash di una password, anziché la password stessa, su Internet. - Autenticazione integrata di Windows (NTLM): il tipo migliore di autenticazione da usare negli ambienti Intranet usando le finestre. - Autenticazione certificato: abilita l'autenticazione usando un certificato lato client. Il certificato esegue il mapping a un account utente di Windows.
Nota
Per una panoramica più dettagliata di questi diversi tipi di autenticazione, vedere https://msdn.microsoft.com/library/aa292114(VS.71).aspx.
È possibile usare Internet Information Services Manager per abilitare un particolare tipo di autenticazione. Tenere presente che tutti i tipi di autenticazione non sono disponibili nel caso di ogni sistema operativo. Inoltre, se si usa IIS 7.0 con Windows Vista, sarà necessario abilitare i diversi tipi di autenticazione di Windows prima che vengano visualizzati in Internet Information Services Manager. Aprire Pannello di controllo, Programmi, Programmi e funzionalità, Attivare o disattivare le funzionalità di Windows e espandere il nodo Internet Information Services (vedere la figura 2).
Figura 2: Abilitazione delle funzionalità di Windows IIS
Usando Internet Information Services, è possibile abilitare o disabilitare diversi tipi di autenticazione. La figura 3 illustra ad esempio la disabilitazione dell'autenticazione anonima e l'abilitazione dell'autenticazione ntLM (Integrated Windows) quando si usa IIS 7.0.
Figura 3 : Abilitazione dell'autenticazione integrata di Windows
Creazione di utenti e gruppi di Windows
Dopo aver abilitato autenticazione di Windows, è possibile usare l'attributo [Autorizza] per controllare l'accesso ai controller o alle azioni del controller. Questo attributo può essere applicato a un intero controller MVC o a un'azione specifica del controller.
Ad esempio, il controller Home in List 1 espone tre azioni denominate Index(), CompanySecrets() e StephenSecrets(). Chiunque può richiamare l'azione Index(). Tuttavia, solo i membri del gruppo Manager locali di Windows possono richiamare l'azione CompanySecrets(). Infine, solo l'utente di dominio Windows denominato Stephen (nel dominio Redmond) può richiamare l'azione StephenSecrets().
Elenco 1 - Controller\HomeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[Authorize(Roles = "Managers")]
public ActionResult CompanySecrets()
{
return View();
}
[Authorize(Users="redmond\\swalther")]
public ActionResult StephenSecrets()
{
return View();
}
}
}
Nota
A causa del controllo account utente di Windows, quando si usa Windows Vista o Windows Server 2008, il gruppo Administrators locale si comporta in modo diverso da altri gruppi. L'attributo [Autorizza] non riconoscerà correttamente un membro del gruppo Administrators locale, a meno che non si modificano le impostazioni dell'interfaccia utente del computer.
Esattamente ciò che accade quando si tenta di richiamare un'azione del controller senza essere le autorizzazioni corrette dipende dal tipo di autenticazione abilitato. Per impostazione predefinita, quando si usa il server di sviluppo ASP.NET, è sufficiente ottenere una pagina vuota. La pagina viene servita con uno stato di risposta HTTP non autorizzato 401 .
Se, invece, si usa IIS con l'autenticazione anonima disabilitata e l'autenticazione di base, si continua a ottenere una finestra di dialogo di accesso ogni volta che si richiede la pagina protetta (vedere la figura 4).
Figura 4 - Finestra di dialogo di accesso di autenticazione di base
Riepilogo
Questa esercitazione illustra come usare autenticazione di Windows nel contesto di un'applicazione MVC ASP.NET. Si è appreso come abilitare autenticazione di Windows all'interno del file di configurazione Web dell'applicazione e come configurare l'autenticazione con IIS. Infine, si è appreso come usare l'attributo [Autorizza] per limitare l'accesso alle azioni del controller a determinati utenti o gruppi di Windows.