Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Microsoft
Erfahren Sie, wie Sie Windows-Authentifizierung im Kontext einer MVC-Anwendung verwenden. Sie erfahren, wie Sie Windows-Authentifizierung in der Webkonfigurationsdatei Ihrer Anwendung aktivieren und die Authentifizierung mit IIS konfigurieren. Schließlich erfahren Sie, wie Sie das [Authorize]-Attribut verwenden, um den Zugriff auf Controlleraktionen auf bestimmte Windows-Benutzer oder -Gruppen einzuschränken.
In diesem Tutorial wird erläutert, wie Sie die in Internetinformationsdienste integrierten Sicherheitsfeatures nutzen können, um die Ansichten in Ihren MVC-Anwendungen mit Einem Kennwort zu schützen. Sie erfahren, wie Controlleraktionen nur von bestimmten Windows-Benutzern oder Benutzern, die Mitglieder bestimmter Windows-Gruppen sind, aufgerufen werden können.
Die Verwendung Windows-Authentifizierung ist sinnvoll, wenn Sie eine interne Unternehmenswebsite (eine Intranetwebsite) erstellen und möchten, dass Ihre Benutzer ihre Windows-Standardbenutzernamen und -kennwörter beim Zugriff auf die Website verwenden können. Wenn Sie eine nach außen gerichtete Website (eine Internetwebsite) erstellen, sollten Sie stattdessen die Formularauthentifizierung verwenden.
Aktivieren der Windows-Authentifizierung
Wenn Sie eine neue ASP.NET MVC-Anwendung erstellen, ist Windows-Authentifizierung standardmäßig nicht aktiviert. Die Formularauthentifizierung ist der Standardauthentifizierungstyp, der für MVC-Anwendungen aktiviert ist. Sie müssen Windows-Authentifizierung aktivieren, indem Sie die Webkonfigurationsdatei (web.config) Ihrer MVC-Anwendung ändern. Suchen Sie den <Abschnitt Authentifizierung> , und ändern Sie ihn so, dass anstelle der Forms-Authentifizierung Windows verwendet wird:
<authentication mode="Windows">
</authentication>
Wenn Sie Windows-Authentifizierung aktivieren, ist Ihr Webserver für die Authentifizierung von Benutzern verantwortlich. In der Regel gibt es zwei verschiedene Arten von Webservern, die Sie beim Erstellen und Bereitstellen einer ASP.NET MVC-Anwendung verwenden.
Zunächst verwenden Sie beim Entwickeln einer MVC-Anwendung den in Visual Studio enthaltenen ASP.NET Development Web Server. Standardmäßig führt der ASP.NET Development Web Server alle Seiten im Kontext des aktuellen Windows-Kontos aus (unabhängig davon, welches Konto Sie für die Anmeldung bei Windows verwendet haben).
Der ASP.NET-Entwicklungswebserver unterstützt auch die NTLM-Authentifizierung. Sie können die NTLM-Authentifizierung aktivieren, indem Sie im Fenster Projektmappen-Explorer mit der rechten Maustaste auf den Namen Ihres Projekts klicken und Eigenschaften auswählen. Aktivieren Sie als Nächstes die Registerkarte Web, und aktivieren Sie das Kontrollkästchen NTLM (siehe Abbildung 1).
Abbildung 1: Aktivieren der NTLM-Authentifizierung für den ASP.NET Development-Webserver
Für eine Produktionswebanwendung verwenden Sie IIS als Webserver. IIS unterstützt verschiedene Arten der Authentifizierung, einschließlich:
- Standardauthentifizierung: Als Teil des HTTP 1.0-Protokolls definiert. Sendet Benutzernamen und Kennwörter in Klartext (Base64-codiert) über das Internet. – Digestauthentifizierung – Sendet einen Hash eines Kennworts anstelle des Kennworts selbst über das Internet. – Integrierte Windows-Authentifizierung (NTLM): Die beste Authentifizierungsart, die in Intranetumgebungen mit Windows verwendet werden kann. - Zertifikatauthentifizierung: Ermöglicht die Authentifizierung mithilfe eines clientseitigen Zertifikats. Das Zertifikat wird einem Windows-Benutzerkonto zugeordnet.
Hinweis
Eine ausführlichere Übersicht über diese verschiedenen Authentifizierungstypen finden Sie unter https://msdn.microsoft.com/library/aa292114(VS.71).aspx.
Sie können den Internetinformationsdienste-Manager verwenden, um einen bestimmten Authentifizierungstyp zu aktivieren. Beachten Sie, dass bei jedem Betriebssystem nicht alle Authentifizierungstypen verfügbar sind. Wenn Sie IIS 7.0 mit Windows Vista verwenden, müssen Sie außerdem die verschiedenen Typen von Windows-Authentifizierung aktivieren, bevor sie im Internetinformationsdienste-Manager angezeigt werden. Öffnen Sie Systemsteuerung, Programme, Programme und Features, Windows-Features aktivieren oder deaktivieren, und erweitern Sie den Knoten Internetinformationsdienste (siehe Abbildung 2).
Abbildung 2– Aktivieren von Windows IIS-Features
Mithilfe von Internetinformationsdiensten können Sie verschiedene Authentifizierungstypen aktivieren oder deaktivieren. Abbildung 3 veranschaulicht beispielsweise das Deaktivieren der anonymen Authentifizierung und das Aktivieren der integrierten Windows-Authentifizierung (NTLM) bei Verwendung von IIS 7.0.
Abbildung 3: Aktivieren der integrierten Windows-Authentifizierung
Autorisieren von Windows-Benutzern und -Gruppen
Nachdem Sie Windows-Authentifizierung aktiviert haben, können Sie das [Authorize]-Attribut verwenden, um den Zugriff auf Controller oder Controlleraktionen zu steuern. Dieses Attribut kann auf einen gesamten MVC-Controller oder eine bestimmte Controlleraktion angewendet werden.
Beispielsweise macht der Home-Controller in Listing 1 drei Aktionen mit dem Namen Index(), CompanySecrets() und StephenSecrets() verfügbar. Jeder kann die Index()-Aktion aufrufen. Die CompanySecrets()-Aktion können jedoch nur Mitglieder der lokalen Windows-Manager-Gruppe aufrufen. Schließlich kann nur der Windows-Domänenbenutzer mit dem Namen Stephen (in der Redmond-Domäne) die StephenSecrets()-Aktion aufrufen.
Auflistung 1 – Controllers\HomeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[Authorize(Roles = "Managers")]
public ActionResult CompanySecrets()
{
return View();
}
[Authorize(Users="redmond\\swalther")]
public ActionResult StephenSecrets()
{
return View();
}
}
}
Hinweis
Aufgrund der Windows-Benutzerkontensteuerung (UAC) verhält sich die lokale Administratorgruppe bei der Arbeit mit Windows Vista oder Windows Server 2008 anders als andere Gruppen. Das Attribut [Authorize] erkennt ein Mitglied der lokalen Administratorgruppe nicht ordnungsgemäß, es sei denn, Sie ändern die UAC-Einstellungen Ihres Computers.
Was genau geschieht, wenn Sie versuchen, eine Controlleraktion aufzurufen, ohne die richtigen Berechtigungen zu haben, hängt vom Typ der aktivierten Authentifizierung ab. Standardmäßig erhalten Sie bei Verwendung des ASP.NET Development Server einfach eine leere Seite. Die Seite wird mit dem Http-Antwortstatus 401 Nicht autorisiert bereitgestellt.
Wenn Sie dagegen IIS mit deaktivierter anonymer Authentifizierung und Aktivierter Standardauthentifizierung verwenden, erhalten Sie bei jeder Anforderung der geschützten Seite eine Eingabeaufforderung im Anmeldedialogfeld (siehe Abbildung 4).
Abbildung 4– Dialogfeld "Standardauthentifizierung"
Zusammenfassung
In diesem Tutorial wurde erläutert, wie Sie Windows-Authentifizierung im Kontext einer ASP.NET MVC-Anwendung verwenden können. Sie haben erfahren, wie Sie Windows-Authentifizierung in der Webkonfigurationsdatei Ihrer Anwendung aktivieren und die Authentifizierung mit IIS konfigurieren. Schließlich haben Sie erfahren, wie Sie das [Authorize]-Attribut verwenden, um den Zugriff auf Controlleraktionen auf bestimmte Windows-Benutzer oder -Gruppen einzuschränken.