2013-06-20 17 views
30

Nigdy wcześniej nie korzystałem z uwierzytelniania systemu Windows dla aplikacji internetowych ASP.NET MVC, ale z uwierzytelniania za pomocą formularzy. Niedawno miałem aplikację sieci web ASP.NET MVC 4, która wymaga implementacji uwierzytelniania systemu Windows dla użytkowników, którzy mają prawo do logowania się na mój firmowy serwer sieciowy. Tak, mam kilka pytań dotyczących uwierzytelniania systemu Windows. Używam programu Visual Studio     2012.Uwierzytelnianie systemu Windows dla programu ASP.NET MVC 4 - jak to działa, jak go przetestować

  • Jak działa uwierzytelnianie systemu Windows?

  • Jak poprawnie zaimplementować uwierzytelnianie systemu Windows w pliku web.config?

  • Jak sprawdzić, czy uwierzytelnianie systemu Windows rzeczywiście działa na mojej stronie ASP.NET   MVC 4? Innymi słowy, w jaki sposób mogę przetestować go na moim lokalnym komputerze programistycznym z lokalną wersją IIS (wersja 8) i na moim prawdziwym serwerze sieciowym z wersją IIS programu IIS?

+0

Nie powinno to być niczym innym niż testowanie go w formularzu internetowym. – Jacob

+0

@jacob, dzięki za odpowiedź. Czy możesz podać mi więcej szczegółów? –

+0

Jeśli używasz IIS Express do działania lokalnie, prawdopodobnie będziesz musiał również sprawdzić ten wpis. http://stackoverflow.com/questions/4762538/iis-express-windows-authentication – thinklarge

Odpowiedz

9

Zrobiłem to z ASP.NET MVC 1.0. To było stosunkowo dawno temu. Pamiętam, że ustawienia IIS są mylące. Właśnie sprawdziłem i nie wygląda na to, że wiele zmieniło się w ASP.NET MVC 4.0, jeśli chodzi o atrybuty kontrolerów.

Na pytania:

  1. Jak to działa? Poniższe piśmiennictwo dość dobrze podsumowuje sytuację. Authenticating Users with Windows Authentication (C#) NIE jest dokładnie dla ASP.NET MVC 4.0, ale ma pewne tło.

    How to Create an Intranet Site Using ASP.NET MVC jest dla ASP.NET MVC 3.0.

    jestem zbyt nowe aby umieścić więcej niż dwa linki, więc trzeba będzie szukać MSDN dla „AuthorizeAttribute klasy” dla .NET Framework 4.

  2. Jakie ustawienia dla web.config? - Pamiętam tylko zmianę jednego elementu, "tryb uwierzytelniania".

  3. Jeśli chodzi o testowanie, moje wersje systemu operacyjnego Windows lepiej pasowały, a mój komputer programistyczny był w tej samej domenie systemu Windows. Ale jeśli dobrze pamiętam, to po prostu zadziałało. YMMV, ale jedno, o czym pamiętam, to fakt, że wdrażałem własne upoważnienie. Być może jest to droga do twojej sprawy, aby przetasować własną, a następnie przejść do uwierzytelniania systemu Windows w produkcji. Proponuję jednak kilka iteracji testowych z serwerem testowym, jeśli możesz ustawić go w domenie firmy.

+0

dziękuję bardzo za bardzo miłe słowa i pomaga. Dowiedziałem się, że wideo online (patrz poniżej) jest dla mnie pomocne, a jego film działa dla mnie. Zamykam ten wątek. –

27

Dla IIS 8.5 i MVC 4:

Jak działa uwierzytelnianie systemu Windows?

W tym trybie User.Identity (jak w HttpContext.Current.User.Identity) jest zapełniany przez bazowy serwer WWW. Może to być IIS Express w linku z demonstrowanego @R Kumar, lub pełnowymiarowy IIS jak w wideo @Thomas Benz.

W szczególności User.Identity jest obiektem WindowsIdentity. Na przykład. następujące obsada będzie działać:

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

Jak zaimplementować uwierzytelnianie systemu Windows prawidłowo w pliku web.config?

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

Jak mogę sprawdzić, czy naprawdę działa uwierzytelnianie systemu Windows dla mojej strony ASP.NET MVC 4 internetowej? Innymi słowy, w jaki sposób mogę przetestować go na lokalnym komputerze programistycznym z lokalnymi usługami IIS (wersja 8) i na moim prawdziwym serwerze WWW z usługą IIS w wersji 7?

Najpierw zmień autoryzację ASP.NET, aby wykluczyć bieżącego użytkownika. Na przykład.

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

drugie, umożliwiają uwierzytelnianie systemu Windows na swoim miejscu przy użyciu Menedżera IIS. Jest to funkcja "Uwierzytelnianie". i wyłącz anonimowe uwierzytelnianie.

Pamiętaj, że starsze wyjaśnienie sugeruje wprowadzenie zmian pod elementem web.config witryny. Jednak ostatnie wdrożenia IIS zapobiegają temu ze względów bezpieczeństwa.

Po trzecie, skieruj swoją przeglądarkę na stronę. Przeglądarka powinna prosić o podanie poświadczeń, ponieważ bieżący użytkownik nie ma dostępu do witryny. Podaj te, które są autoryzowane dla witryny, a Twój kod MVC powinien zostać uruchomiony.

Po czwarte, sprawdź tożsamość użytkownika. Na przykład.

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

Dla każdego, kto to czyta, proszę nie używać znacznika '' dla bezpieczeństwa produkcji, [blokowania ścieżek poprawnie] (http://stackoverflow.com/questions/11765030/how-to-lock-down-paths -in-asp-net-mvc). –

Powiązane problemy