2013-06-20 11 views
30

Non ho mai utilizzato l'autenticazione di Windows per le applicazioni Web ASP.NET MVC, ma l'autenticazione basata su moduli. Recentemente, ho avuto un'applicazione Web ASP.NET MVC 4 che richiede un'implementazione di autenticazione di Windows per gli utenti che sono autorizzati ad accedere al server Web della mia azienda. Quindi, ho alcune domande riguardanti l'autenticazione di Windows. Sto usando Visual Studio     2012.Autenticazione di Windows per ASP.NET MVC 4 - come funziona, come testarlo

  • Come funziona l'autenticazione di Windows?

  • Come implementare correttamente l'autenticazione di Windows nel file web.config?

  • Come verificare se l'autenticazione di Windows funziona davvero per il mio sito Web ASP.NET   MVC 4? In altre parole, come posso testarlo sul mio PC di sviluppo locale con locale IIS (versione 8) e sul server Web della mia azienda reale con IIS versione 7?

+0

Questo non dovrebbe essere diverso dal test in un'applicazione di moduli Web. – Jacob

+0

@jacob, grazie per la tua risposta. Puoi darmi qualche altro dettaglio? –

+0

Se si utilizza IIS Express per l'esecuzione in locale, probabilmente sarà necessario controllare anche questo post. http://stackoverflow.com/questions/4762538/iis-express-windows-authentication – thinklarge

risposta

9

Ho fatto questo con ASP.NET MVC 1.0. È stato un tempo relativamente lungo. Ricordo che le impostazioni di IIS erano confuse. Ho appena fatto qualche controllo, e non sembra che le cose siano cambiate molto in ASP.NET MVC 4.0 per quanto riguarda gli attributi sui controller.

Per le vostre domande:

  1. Come funziona? I seguenti riferimenti riassumono abbastanza bene le cose. Authenticating Users with Windows Authentication (C#) non è esattamente adatto per ASP.NET MVC 4.0, ma ha qualche background.

    How to Create an Intranet Site Using ASP.NET MVC è per ASP.NET MVC 3.0.

    Sono troppo nuovo per inviare più di due link, in modo da avere per la ricerca MSDN per "AuthorizeAttribute Class" per .NET Framework 4.

  2. Quali impostazioni per web.config? - Ricordo solo la modifica di un elemento, "modalità di autenticazione".

  3. Per quanto riguarda il test, le mie versioni del sistema operativo Windows corrispondono meglio e il mio computer di sviluppo era sullo stesso dominio Windows. Ma se ricordo bene, questo ha funzionato. YMMV, ma una cosa che ricordo è stata l'implementazione della mia autorizzazione. Forse è un modo per il tuo caso, di eseguire il rollover e quindi passare all'autenticazione di Windows in produzione. Ma suggerirei un paio di iterazioni di test con un server di test se è possibile crearne uno nel dominio aziendale.

+0

grazie mille per le tue gentilissime parole e aiuti. Ho trovato un video online (vedi sotto) che mi è stato utile, e il suo video funziona per me. Quindi, chiudo questo thread. –

27

Per IIS 8.5 e MVC 4:

Come funziona l'autenticazione di Windows?

In questa modalità, User.Identity (come in HttpContext.Current.User.Identity) viene popolato dal server Web sottostante. Questo potrebbe essere IIS Express nel collegamento di @R Kumar dimostrato, o IIS completo come nel video di @Thomas Benz.

In particolare, User.Identity è un oggetto WindowsIdentity. Per esempio. il seguente getto funziona:

WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity; 

Come faccio a implementare l'autenticazione di Windows in modo corretto nel file web.config?

<system.web> 
    <authentication mode="Windows" /> 
    ... 

Come faccio a testare se l'autenticazione di Windows funziona davvero per il mio sito ASP.NET MVC 4 web? In altre parole, come posso testarlo sul mio PC di sviluppo locale con IIS locale (versione 8) e sul server Web reale della mia azienda con IIS versione 7?

Innanzitutto, modificare l'autorizzazione ASP.NET per escludere l'utente corrente. Per esempio.

<system.web> 
    <authentication mode="Windows" /> 
    <authorization> 
     <allow users="yourdomain\someotheruser" /> 
     <deny users="*" /> 
    </authorization> 

In secondo luogo, abilitare l'autenticazione di Windows per il sito utilizzando Gestione IIS. È sotto la funzione 'Autenticazione'. E disabilita l'autenticazione anonima.

Si noti che la spiegazione precedente suggerirà di apportare modifiche sotto elemento del web.config del proprio sito. Tuttavia, le recenti implementazioni di IIS lo impediscono per motivi di sicurezza.

Tre, puntare il browser nella pagina Web. Il browser dovrebbe chiederti di fornire le credenziali, perché l'utente corrente non ha accesso al sito web. Fornire quelli che sono autorizzati per il sito e il codice MVC dovrebbe essere eseguito.

Quattro, controllare l'identità dell'utente. Per esempio.

WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity; 
+11

Per chiunque stia leggendo questo, per favore non usare il tag '' per sicurezza di produzione, [bloccare i percorsi correttamente] (http://stackoverflow.com/questions/11765030/how-to-lock-down-paths -in-asp-net-mVC). –

Problemi correlati