Condividi tramite


Autenticazione degli utenti con l'autenticazione di Windows (VB)

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

clip_image002

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

clip_image004

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

clip_image006

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.vb

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return View()
    End Function

    <Authorize(Roles:="Managers")> _
    Function CompanySecrets()
        Return View()
    End Function


    <Authorize(Users:="redmond\swalther")> _
    Function StephenSecrets()
        Return View()
    End Function

End Class

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 <Authorize> non riconosce 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

clip_image008

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.