2013-10-08 25 views
6

Potrzebuję mojej aplikacji MVC4, aby uzyskać bieżącego użytkownika domeny, który jest zalogowany na komputerze, automatycznie logował się na mojej stronie index.cshtml.Aplikacja intranetowa ASP.NET MVC z uwierzytelnianiem Windows, jak automatycznie uzyskać bieżącego użytkownika domeny?

Reszta aplikacji działa zgodnie z przeznaczeniem, korzystając z atrybutu Autoryzuj, które należy podjąć.

Muszę tylko napisać do aplikacji "pobierz bieżącą maszynę zalogowanego użytkownika, nie zabezpieczyć niczego i zabrać użytkownika do strony docelowej".

web.config:

<authentication mode="Windows" /> 

jak to użytkownik jest puste na stronie docelowej.

Jeśli spróbuję umieścić tylko [Autoryzuj] na mojej akcji indeksu, prosi o poświadczenia, a następnie kontynuuje, jak chcę, bez zabezpieczenia niczego na stronie docelowej.

Czy jest jakiś sposób obejścia tego?

UPDATE:

Bez względu na to, co robisz, to wydaje się, że nie ma sposobu, aby obejść ekran logowania i zrobić automatycznie aplikacja uzyskać bieżącego użytkownika domeny i zalogować się go w aplikacji.

+0

Podałem poniżej przetestowaną odpowiedź, która jest sprzeczna z "Aktualizacją". Mógłbyś rzucić okiem? Dzięki. –

+0

której przeglądarki używasz/czy próbowałaś to zrobić? Odkryłem, że tylko IE zachowa się w ten sposób. – Michael

Odpowiedz

3

Sprawdź to z MSDN

dodać impersonate="true" wraz z nim

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

Następnie użyj

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

nope..i próbowałem tego i próbowałem ponownie teraz. Nadal prosi o uwierzytelnienie. W aplikacji IIS dla tej aplikacji powinien być włączony anonimowy login? – e4rthdog

+0

@ e4rthdog, Nie. Anonimowe logowanie nie jest wymagane. –

+0

właśnie próbowałem. Jeśli nie mam włączonej anonimowości, pojawia się okno dialogowe logowania. jeśli uznaję to za anonimowe, to tożsamość użytkownika jest pusta, bez pola logowania – e4rthdog

0

Możesz także spróbować dodanie następujących do <appSettings>:

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

Użyj uwierzytelniania systemu Windows i dla ASP.NET i IIS i określ autoryzację adresu URL platformy ASP.NET w pliku web.config as shown in this answer. Za każdym razem, gdy bieżący użytkownik jest uprawniony, użytkownik zostanie zalogowany w trybie cichym.

Testowany przy użyciu IE 11, IIS 8.5, Windows Server 2012 R2.

1

Właśnie skończyłem walkę z tym problemem. Powinienem przedmówić, że jest to z iis 7 działającym przy wygrywaniu 2k8r2. poprawka była dla mnie przejściem do menu uwierzytelniania w iis -> wybierz uwierzytelnianie systemu Windows -> kliknij dostawców w prawym okienku -> dostosuj tak, aby tylko ntlm znajdowało się na liście dostępnych dostawców. negocjacje wydają się być winowajcą wymuszania zgłoszenia logowania.

+1

To była odpowiedź dla mnie (uruchamianie IIS 7.5). – user3256944