Ověřování uživatelů pomocí ověřování systému Windows (VB)
od Microsoftu
Naučte se používat ověřování Windows v kontextu aplikace MVC. Dozvíte se, jak povolit ověřování Systému Windows v konfiguračním souboru webu vaší aplikace a jak nakonfigurovat ověřování pomocí služby IIS. Nakonec se dozvíte, jak pomocí atributu [Authorize] omezit přístup k akcím kontroleru na konkrétní uživatele nebo skupiny Windows.
Cílem tohoto kurzu je vysvětlit, jak můžete využít funkce zabezpečení integrované v Internetové informační službě k ochraně zobrazení v aplikacích MVC heslem. Dozvíte se, jak povolit, aby akce kontroleru mohly být vyvolány pouze určitými uživateli Windows nebo uživateli, kteří jsou členy konkrétních skupin Systému Windows.
Ověřování windows dává smysl, když vytváříte interní firemní web (intranetový web) a chcete, aby uživatelé mohli při přístupu k webu používat svá standardní uživatelská jména a hesla windows. Pokud vytváříte web směřující ven (internetový web), zvažte místo toho použití ověřování pomocí formulářů.
Povolení ověřování systému Windows
Když vytvoříte novou aplikaci ASP.NET MVC, ověřování systému Windows není ve výchozím nastavení povolené. Ověřování pomocí formulářů je výchozí typ ověřování povolený pro aplikace MVC. Ověřování systému Windows je nutné povolit úpravou souboru webové konfigurace aplikace MVC (web.config). <Vyhledejte oddíl ověřování> a upravte ho tak, aby místo ověřování pomocí formulářů používal Windows, například takto:
<authentication mode="Windows">
</authentication>
Když povolíte ověřování systému Windows, stane se webový server zodpovědným za ověřování uživatelů. Při vytváření a nasazování aplikace ASP.NET MVC se obvykle používají dva různé typy webových serverů.
Nejprve při vývoji aplikace MVC použijete webový server pro vývoj ASP.NET, který je součástí sady Visual Studio. Ve výchozím nastavení webový server ASP.NET Development Web Server spouští všechny stránky v kontextu aktuálního účtu systému Windows (bez ohledu na účet, který jste použili pro přihlášení k Windows).
Webový server ASP.NET Development Web Server také podporuje ověřování protokolem NTLM. Ověřování protokolem NTLM můžete povolit tak, že v okně Průzkumník řešení kliknete pravým tlačítkem na název projektu a vyberete Vlastnosti. Dále vyberte kartu Web a zaškrtněte políčko NTLM (viz Obrázek 1).
Obrázek 1 – Povolení ověřování NTLM pro webový server ASP.NET Development Web Server
Pro produkční webovou aplikaci používáte jako webový server službu IIS. Služba IIS podporuje několik typů ověřování, mezi které patří:
- Základní ověřování – definováno jako součást protokolu HTTP 1.0. Odesílá uživatelská jména a hesla ve formátu prostého textu (kódování Base64) přes internet. - Ověřování algoritmem Digest – odesílá přes internet hodnotu hash hesla místo samotného hesla. – Integrované ověřování systému Windows (NTLM) – nejlepší typ ověřování, který se používá v intranetových prostředích s windows. – Ověřování certifikátů – Umožňuje ověřování pomocí certifikátu na straně klienta. Certifikát se mapuje na uživatelský účet Windows.
Poznámka
Podrobnější přehled těchto různých typů ověřování najdete v tématu https://msdn.microsoft.com/library/aa292114(VS.71).aspx.
Správce Internetové informační služby můžete použít k povolení určitého typu ověřování. Mějte na paměti, že v případě každého operačního systému nejsou k dispozici všechny typy ověřování. Pokud navíc používáte službu IIS 7.0 se systémem Windows Vista, budete muset povolit různé typy ověřování systému Windows, než se zobrazí ve Správci Internetové informační služby. Otevřete Ovládací panely, Programy, Programy a funkce, Zapněte nebo vypněte funkce systému Windows a rozbalte uzel Internetová informační služba (viz Obrázek 2).
Obrázek 2 – Povolení funkcí služby Windows IIS
Pomocí Internetové informační služby můžete povolit nebo zakázat různé typy ověřování. Obrázek 3 například znázorňuje zakázání anonymního ověřování a povolení integrovaného ověřování systému Windows (NTLM) při použití služby IIS 7.0.
Obrázek 3 – Povolení integrovaného ověřování systému Windows
Autorizace uživatelů a skupin Systému Windows
Po povolení ověřování systému Windows můžete pomocí atributu <Autorizovat> řídit přístup k kontrolerům nebo akcím kontroleru. Tento atribut lze použít pro celý kontroler MVC nebo konkrétní akci kontroleru.
Například kontroler Domů v seznamu 1 zveřejňuje tři akce s názvy Index(), CompanySecrets() a StephenSecrets(). Akci Index() může vyvolat kdokoli. Akci CompanySecrets() však můžou vyvolat jenom členové místní skupiny Správci systému Windows. Akci StephenSecrets() může vyvolat pouze uživatel domény Windows s názvem Stephen (v doméně Redmond).
Výpis 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
Poznámka
Kvůli řízení uživatelských účtů systému Windows se při práci se systémem Windows Vista nebo Windows Server 2008 bude místní skupina Administrators chovat jinak než jiné skupiny. Atribut <Authorize (Autorizovat> ) správně nerozpozná člena místní skupiny Administrators, pokud nezměníte nastavení Nástroje řízení uživatelských účtů v počítači.
Přesně to, co se stane, když se pokusíte vyvolat akci kontroleru bez správného oprávnění, závisí na typu povoleného ověřování. Při použití vývojového serveru ASP.NET ve výchozím nastavení jednoduše získáte prázdnou stránku. Stránka se obsluhuje se stavem neautorizované odpovědi HTTP 401 .
Pokud naopak používáte službu IIS se zakázaným anonymním ověřováním a povoleným základním ověřováním, zobrazí se při každé žádosti o chráněnou stránku výzva k přihlášení (viz obrázek 4).
Obrázek 4 – Dialogové okno základního ověřování pro přihlášení
Souhrn
Tento kurz vysvětluje, jak můžete používat ověřování systému Windows v kontextu aplikace ASP.NET MVC. Dozvěděli jste se, jak povolit ověřování Windows v konfiguračním souboru webu vaší aplikace a jak nakonfigurovat ověřování pomocí služby IIS. Nakonec jste se dozvěděli, jak pomocí atributu <Authorize> omezit přístup k akcím kontroleru na konkrétní uživatele nebo skupiny Windows.