2013-10-08 13 views
6

Ho bisogno della mia app MVC4 per far accedere automaticamente l'utente di dominio attualmente connesso alla macchina nella mia pagina index.cshtml.Applicazione intranet ASP.NET MVC con autenticazione Windows, come ottenere automaticamente l'utente del dominio corrente?

il resto dell'applicazione funziona come previsto utilizzando l'attributo Autorizza le azioni che ho bisogno protetto.

Ho solo bisogno di dire all'app "ottenere la macchina corrente che ha effettuato l'accesso, non proteggere nulla e portare l'utente alla pagina di destinazione".

web.config:

<authentication mode="Windows" /> 

come questo l'utente è vuoto nella pagina di destinazione.

Se provo a mettere solo [Autorizza] sul mio indice, allora chiede le credenziali e poi continua come voglio, senza mettere nulla sulla pagina di destinazione.

C'è qualche modo per aggirare questo?

UPDATE:

Non importa quello che fai, sembra che non v'è alcun modo per bypassare il prompt di login e rendere l'applicazione automaticamente ottenere l'utente dominio corrente e lo accedere al app.

+0

Ho fornito una risposta testata sotto che contraddice l '"aggiornamento". Potresti dare un'occhiata? Grazie. –

+0

con quale browser stai/stavi tentando di fare questo? Ho scoperto che solo IE si comporterà in questo modo. – Michael

risposta

3

controllare questo da MSDN

aggiungere impersonate="true" con esso

<identity impersonate="true"/> 
    <authentication mode="Windows" /> 

Quindi utilizzare

((HttpContext)context).User.Identity as WindowsIdentity 
+0

no .. ho provato questo e provato di nuovo ora ... Richiede ancora l'autenticazione. Accesso anonimo dovrebbe essere abilitato in IIS per questa app? – e4rthdog

+0

@ e4rthdog, No. Accesso anonimo non richiesto. –

+0

appena provato. Se non sono anonimo abilitato, viene visualizzata la finestra di dialogo di accesso. se io sono anonimo, l'identità dell'utente è vuota, senza box di login – e4rthdog

0

Si può anche provare ad aggiungere quanto segue al <appSettings>:

<add key="enableSimpleMembership" value="false" /> 
1

Utilizzare l'autenticazione di Windows e per ASP.NET e IIS e specificare l'autorizzazione dell'URL di ASP.NET nel web.config as shown in this answer. Ogni volta che l'utente corrente è autorizzato, l'utente verrà automaticamente connesso.

Testato utilizzando IE 11, IIS 8.5, Windows Server 2012 R2.

1

ho appena finito di combattere con questo problema. dovrei dire che questo è con iis 7 in esecuzione su win 2k8r2. la soluzione per me era accedere al menu di autenticazione in iis -> selezionare l'autenticazione di Windows -> fare clic su provider nel pannello di destra -> regolare in modo che solo ntlm sia presente nell'elenco dei provider disponibili. negoziare sembra essere il colpevole per forzare il prompt di log-in.

+1

Questa era la risposta per me (con IIS 7.5). – user3256944

Problemi correlati