5

Ho sviluppato un'app Web in ASP.NET MVC che stiamo utilizzando internamente. Ora vogliamo renderlo disponibile tramite il nostro server su Internet - per semplificare la vita quando stiamo facendo lavori sul posto.ASP.NET MVC Autenticazione di Windows in cima all'autenticazione moduli

Idealmente mi piacerebbe attaccare solo l'autenticazione di Windows infront di esso, in modo che chiunque con un account di dominio può accedere.

Il problema è che io sto già utilizzando l'autenticazione moduli in app.

Non abbiamo alcuna restrizione password per l'app, è sufficiente selezionare l'utente che si desidera accedere come e quindi inviare il modulo. Sul lato server che fa proprio questo -

FormsAuthentication.SetAuthCookie(viewModel.Username, true); 

Questo rende il nome dell'utente disponibile in tutto tutti i controller e le viste utilizzando l'oggetto utente (user.identity.name).

Tuttavia ... quando abilito l'autenticazione di Windows in IIS, l'app Web inizia a pensare che user.identity.name sia "ourdomain \ domainuser".

Quello che mi piacerebbe è usare l'autenticazione dei moduli insieme all'autenticazione di Windows, ma non averli integrati in alcun modo.

C'è un modo semplice per raggiungere questo obiettivo?

+0

Bene, il nome _is_ 'ourdomain \ domainuser'. Cosa ti aspettavi/vuoi? –

risposta

6

Il team ASP.NET non supporta ufficialmente l'autenticazione in modalità mista in un'applicazione. Se cerchi sul Web, troverai post di blog su come eseguire questa operazione, ma tieni presente che sono scoraggiati dal team di ASP.NET. Il motivo per cui questo è scoraggiato è che è molto difficile ragionare da un punto di vista della correttezza, e ci sono attacchi banali contro una tale configurazione che può consentire ai client maligni di mascherarsi come utente autenticato.

+1

Alla fine ho deciso che non ne valeva la pena. – NoPyGod

1

Non è possibile utilizzare l'autenticazione moduli e l'autenticazione di Windows contemporaneamente in IIS 7 e versioni successive in Modalità integrata. Pertanto, scorgerò molto questo approccio. Tuttavia, è possibile utilizzare lo strumento integrato ActiveDirectoryMembershipProvider Class per autenticare gli account utente di Windows tramite un modulo e legare il proprio login a quello.

+0

In realtà, è possibile utilizzare Autenticazione Windows e Autenticazione moduli in IIS7 +. Puoi utilizzare la modalità classica o con la modalità integrata. Devi solo fare un piccolo tweaking in background per integrato. Vedi http://mvolo.com/blogs/serverside/archive/2008/02/11/IIS-7.0-Two_2D00_Level-Authentication-with-Forms-Authentication-and-Windows-Authentication.aspx –

+0

@MystereMan In realtà, il tuo tweaking link continua a non usarli entrambi allo stesso tempo anche se dà quell'apparizione ad un utente. Tuttavia, sei corretto che puoi ancora fare l'autenticazione a due stadi usando la Modalità Classica. Non vedo però nessuno dei due come una soluzione particolarmente buona. Per la soluzione mvolo.com stai introducendo molta complessità aggiuntiva che può essere evitata. Per la modalità classica segui un modello che probabilmente scomparirà alla fine. La mia opinione è che è meglio progettare correttamente le cose in primo luogo. – JamieSee

+0

@MystereMan Questo articolo non discute l'autenticazione mista nel contesto di MVC. –

Problemi correlati