Uwierzytelnianie użytkowników za pomocą uwierzytelniania systemu Windows (VB)

autor: Microsoft

Dowiedz się, jak używać uwierzytelniania systemu Windows w kontekście aplikacji MVC. Dowiesz się, jak włączyć uwierzytelnianie systemu Windows w pliku konfiguracji sieci Web aplikacji i jak skonfigurować uwierzytelnianie za pomocą usług IIS. Na koniec dowiesz się, jak za pomocą atrybutu [Autoryzuj] ograniczyć dostęp do akcji kontrolera do określonych użytkowników lub grup systemu Windows.

Celem tego samouczka jest wyjaśnienie sposobu korzystania z funkcji zabezpieczeń wbudowanych w usługi Internet Information Services w celu ochrony widoków w aplikacjach MVC. Dowiesz się, jak zezwolić na wywoływanie akcji kontrolera tylko przez określonych użytkowników systemu Windows lub użytkowników, którzy są członkami określonych grup systemu Windows.

Korzystanie z uwierzytelniania systemu Windows ma sens podczas tworzenia wewnętrznej firmowej witryny internetowej (witryny intranetowej) i chcesz, aby użytkownicy mogli używać swoich standardowych nazw użytkowników i haseł systemu Windows podczas uzyskiwania dostępu do witryny internetowej. Jeśli tworzysz zewnętrzną witrynę internetową (internetową witrynę internetową), rozważ użycie uwierzytelniania formularzy.

Włączanie uwierzytelniania systemu Windows

Podczas tworzenia nowej ASP.NET aplikacji MVC uwierzytelnianie systemu Windows nie jest domyślnie włączone. Uwierzytelnianie formularzy to domyślny typ uwierzytelniania włączony dla aplikacji MVC. Należy włączyć uwierzytelnianie systemu Windows, modyfikując plik konfiguracji sieci Web aplikacji MVC (web.config). Znajdź sekcję uwierzytelniania> i zmodyfikuj <ją tak, aby korzystała z systemu Windows zamiast uwierzytelniania formularzy w następujący sposób:

<authentication mode="Windows">

</authentication>

Po włączeniu uwierzytelniania systemu Windows serwer internetowy staje się odpowiedzialny za uwierzytelnianie użytkowników. Zazwyczaj istnieją dwa różne typy serwerów internetowych używanych podczas tworzenia i wdrażania aplikacji MVC ASP.NET.

Najpierw podczas tworzenia aplikacji MVC należy użyć serwera internetowego dewelopera ASP.NET dołączonego do programu Visual Studio. Domyślnie program ASP.NET Development Web Server wykonuje wszystkie strony w kontekście bieżącego konta systemu Windows (niezależnie od konta użytego do zalogowania się do systemu Windows).

Serwer sieci Web ASP.NET Development obsługuje również uwierzytelnianie NTLM. Uwierzytelnianie NTLM można włączyć, klikając prawym przyciskiem myszy nazwę projektu w oknie Eksplorator rozwiązań i wybierając polecenie Właściwości. Następnie zaznacz kartę Sieć Web i zaznacz pole wyboru NTLM (zobacz Rysunek 1).

Rysunek 1. Włączanie uwierzytelniania NTLM dla serwera internetowego programowania ASP.NET

clip_image002

W przypadku produkcyjnej aplikacji internetowej używasz usług IIS jako serwera internetowego. Usługi IIS obsługują kilka typów uwierzytelniania, w tym:

  • Uwierzytelnianie podstawowe — definiowane jako część protokołu HTTP 1.0. Wysyła nazwy użytkowników i hasła w postaci zwykłego tekstu (zakodowane w formacie Base64) w Internecie. - Uwierzytelnianie szyfrowe — wysyła skrót hasła zamiast samego hasła w Internecie. - Zintegrowane uwierzytelnianie systemu Windows (NTLM) — najlepszy typ uwierzytelniania do użycia w środowiskach intranetowych przy użyciu okien. - Uwierzytelnianie certyfikatu — włącza uwierzytelnianie przy użyciu certyfikatu po stronie klienta. Certyfikat jest mapowy na konto użytkownika systemu Windows.

Uwaga

Aby uzyskać bardziej szczegółowe omówienie tych różnych typów uwierzytelniania, zobacz https://msdn.microsoft.com/library/aa292114(VS.71).aspx.

Można użyć Internet Information Services Manager, aby włączyć określony typ uwierzytelniania. Należy pamiętać, że wszystkie typy uwierzytelniania nie są dostępne w przypadku każdego systemu operacyjnego. Ponadto, jeśli używasz usług IIS 7.0 z systemem Windows Vista, należy włączyć różne typy uwierzytelniania systemu Windows przed ich pojawieniem się w Menedżerze internetowych usług informacyjnych. Otwórz Panel sterowania, programy, programy i funkcje, włącz lub wyłącz funkcje systemu Windows i rozwiń węzeł Internet Information Services (zobacz Rysunek 2).

Rysunek 2. Włączanie funkcji usług IIS systemu Windows

clip_image004

Za pomocą usług Internet Information Services można włączyć lub wyłączyć różne typy uwierzytelniania. Na przykład rysunek 3 przedstawia wyłączenie uwierzytelniania anonimowego i włączenie zintegrowanego uwierzytelniania systemu Windows (NTLM) w przypadku korzystania z usług IIS 7.0.

Rysunek 3. Włączanie zintegrowanego uwierzytelniania systemu Windows

clip_image006

Autoryzowanie użytkowników i grup systemu Windows

Po włączeniu uwierzytelniania systemu Windows można użyć atrybutu <Authorize> do kontrolowania dostępu do kontrolerów lub akcji kontrolera. Ten atrybut można zastosować do całego kontrolera MVC lub określonej akcji kontrolera.

Na przykład kontroler macierzysty na liście 1 uwidacznia trzy akcje o nazwie Index(), CompanySecrets() i StephenSecrets(). Każda osoba może wywołać akcję Index(). Jednak tylko członkowie lokalnej grupy Menedżerowie systemu Windows mogą wywołać akcję CompanySecrets(). Na koniec tylko użytkownik domeny systemu Windows o nazwie Stephen (w domenie Redmond) może wywołać akcję StephenSecrets().

Lista 1 — Controllers\HomeController.vb

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return View()
    End Function

    <Authorize(Roles:="Managers")> _
    Function CompanySecrets()
        Return View()
    End Function


    <Authorize(Users:="redmond\swalther")> _
    Function StephenSecrets()
        Return View()
    End Function

End Class

Uwaga

Ze względu na kontrolę konta użytkownika systemu Windows (UAC) podczas pracy z systemem Windows Vista lub Windows Server 2008 lokalna grupa administratorów będzie zachowywać się inaczej niż inne grupy. Atrybut <Authorize> nie rozpozna poprawnie członka lokalnej grupy administratorów, chyba że zmodyfikujesz ustawienia kontroli konta użytkownika komputera.

Dokładnie to, co się dzieje, gdy próbujesz wywołać akcję kontrolera bez bycia odpowiednimi uprawnieniami, zależy od typu włączonego uwierzytelniania. Domyślnie w przypadku korzystania z serwera deweloperów ASP.NET wystarczy uzyskać pustą stronę. Strona jest obsługiwana ze stanem 401 Nieautoryzowana odpowiedź HTTP.

Jeśli z drugiej strony używasz usług IIS z wyłączonym uwierzytelnianiem anonimowym i włączonym uwierzytelnianiem podstawowym, po każdym żądaniu strony chronionej otrzymujesz monit z okna dialogowego logowania (zobacz Rysunek 4).

Rysunek 4. Okno dialogowe logowania uwierzytelniania podstawowego

clip_image008

Podsumowanie

W tym samouczku wyjaśniono, jak używać uwierzytelniania systemu Windows w kontekście aplikacji MVC ASP.NET. Przedstawiono sposób włączania uwierzytelniania systemu Windows w pliku konfiguracji sieci Web aplikacji oraz sposobu konfigurowania uwierzytelniania za pomocą usług IIS. Na koniec pokazano, jak za pomocą atrybutu <Authorize> ograniczyć dostęp do akcji kontrolera do określonych użytkowników lub grup systemu Windows.