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
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
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
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
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.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla