Uwierzytelnianie Windows dla ASP.NET MVC 4 - Jak to działa, jak go przetestować

Nigdy nie używałem uwierzytelniania Windows dla ASP.NET MVC aplikacje internetowe wcześniej, ale tworzy uwierzytelnianie. Ostatnio miałem ASP.NET aplikacja webowa MVC 4 wymagająca implementacji uwierzytelniania systemu Windows dla użytkowników, którzy mają możliwość logowania się na firmowym serwerze WWW. Mam więc kilka pytań dotyczących uwierzytelniania systemu Windows. Używam Visual Studio 2012.

  • Jak działa uwierzytelnianie systemu Windows?

  • Jak zaimplementować Windows Poprawne uwierzytelnianie w sieci.plik konfiguracyjny?

  • Jak sprawdzić, czy uwierzytelnianie systemu Windows naprawdę działa dla mojego ASP.NET strona MVC 4? Innymi słowy, jak przetestować go na moim lokalnym komputerze deweloperskim z local IIS (Wersja 8) i na moim firmowym serwerze rzeczywistym web z IIS w wersji 7?

Author: Peter Mortensen, 2013-06-21

3 answers

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 wypełniany przez bazowy serwer WWW. To może być IIS Express W linku z @ R Kumar, lub full blown IIS jak w filmie @Thomas Benz.

Konkretnie, Użytkownik.Tożsamość jest obiektem typu WindowsIdentity. Np. będzie działać następująca Obsada:

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

Jak poprawnie zaimplementować uwierzytelnianie systemu Windows w sieci.config akta?

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

Jak sprawdzić, czy uwierzytelnianie systemu Windows naprawdę działa dla mojego ASP.NET strona MVC 4? Innymi słowy, jak mogę go przetestować na moim lokalnym komputerze deweloperskim z lokalnym IIS (wersja 8) i na moim firmowym serwerze rzeczywistym web z IIS w wersji 7?

Najpierw zmień ASP.NET autoryzacja do wykluczenia bieżącego użytkownika. Np.

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

Po Drugie, Włącz uwierzytelnianie systemu Windows dla witryny za pomocą Menedżera usług IIS. Znajduje się w funkcji "uwierzytelnianie". i wyłączają uwierzytelnianie anonimowe.

Zwróć uwagę, że starsze wyjaśnienia sugerują wprowadzenie zmian w elemencie strony internetowej.config. Jednak ostatnie implementacje IIS zapobiegają temu ze względów bezpieczeństwa.

Po Trzecie, skieruj przeglądarkę na stronę. Przeglądarka powinna poprosić o podanie danych uwierzytelniających, 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 uciekaj. Cztery, sprawdź tożsamość użytkownika. Np.
WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;
 28
Author: Donal Lafferty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-14 14:31:44

Zrobiłem to z ASP.NET MVC 1.0. To było stosunkowo dawno temu. Pamiętam, że ustawienia IIS były mylące. Po prostu zrobiłem kilka sprawdzanie, i nie wygląda na to, że rzeczy zmieniły się wiele do ASP.NET MVC 4.0 jeśli chodzi o atrybuty na kontrolerach.

Na twoje pytania:

  1. Jak to działa? Poniższe odniesienia podsumowują wszystko całkiem dobrze. uwierzytelnianie użytkowników za pomocą uwierzytelniania Windows (C#) to nie do końca prawda na ASP.NET MVC 4.0, ale ma pewne tło.

    Jak stworzyć witrynę intranetową za pomocą ASP.NET MVC jest dla ASP.NET MVC 3.0.

    Jestem zbyt Nowy, aby publikować więcej niż dwa linki, więc będziesz musiał wyszukać MSDN dla "AuthorizeAttribute Class" 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 Windows pasowały lepiej, a mój maszyna programistyczna była w tej samej domenie Windows. Ale jeśli dobrze pamiętam, to po prostu zadziałało. YMMV , ale jedną rzeczą, którą pamiętam, było wdrożenie własnej autoryzacji. Może to jest droga dla twojej sprawy, aby zwinąć własną, a następnie przełączyć się na uwierzytelnianie Windows w produkcji. Ale sugerowałbym kilka iteracji testowych z serwerem testowym, jeśli można ustawić jeden na domenie firmowej.

 9
Author: BillH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-14 09:52:10

Znalazłem pomocny film, który był bardzo przydatny dla mnie, pokazując krok po kroku, aby zaimplementować i przetestować uwierzytelnianie systemu Windows dla ASP.NET strona internetowa MVC. Więc zamykam to pytanie.

Filmik z bardzo miłego plakatu:

jak zaimplementować uwierzytelnianie windows w ASP.NET aplikacja MVC 3 (Model view controller)?

 8
Author: Thomas.Benz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-14 09:55:06