Beschränken des Zugriffs auf ASP.NET-Websites
Aktualisiert: November 2007
Das Beschränken des Zugriffs auf eine Anwendung wird in zwei Themen unterteilt: Authentifizierung, womit eine Anwendung Ihre Identität feststellt, und Autorisierung, womit eine Anwendung feststellt, über welche Berechtigungen Sie verfügen. Dieses Thema enthält eine Übersicht über Authentifizierung und Autorisierung in ASP.NET-Webanwendungen. Weitere Informationen finden Sie unter Sicherheit für ASP.NET-Webanwendungen.
Authentifizieren von Benutzern
ASP.NET-Anwendungen enthalten eine Reihe von verschiedenen Optionen zum Authentifizieren von Benutzern. Verwenden Sie für schreibgeschützte Anwendungen, die von jedem Benutzer angezeigt werden können, die anonyme Authentifizierung. Für stärker beschränkten Zugriff auf eine Anwendung müssen Sie mithilfe einer Form der Authentifizierung Benutzer identifizieren. Zwei Identitäten müssen bei der Authentifizierung von Benutzern für die ASP.NET-Anwendung berücksichtigt werden: die Anwendungsidentität, mit der auf Windows-Ressourcen zugegriffen wird, und die ASP.NET-Benutzeridentität, mit der ein Benutzer für ASP.NET identifiziert wird.
Die Anwendung kann ohne eine ASP.NET-Benutzeridentität ausgeführt werden, es ist jedoch immer eine Windows-Anwendungsidentität erforderlich. Um die Sicherheit der Anwendung zu verbessern, sollten Sie die Windows-Identität für die Anwendung auf die erforderlichen Ressourcen beschränken, z. B. Datei- und Datenbankzugriff.
ASP.NET-Anwendungsidentität
Während eine ASP.NET-Seite ausgeführt wird, muss der Server über einen Sicherheitskontext, oder eine Identität, für den Prozess verfügen, der den ASP.NET-Code ausführt. Diese Identität wird beim Sichern von Ressourcen mithilfe der integrierten Sicherheit von Windows verwendet, z. B. mithilfe des NTFS-Dateisystems oder von Netzwerkressourcen geschützte Dateien.
Die Dateien, die den im Unterverzeichnis App_Code einer Anwendung gespeicherten Anwendungscode enthalten, müssen beispielsweise nur von der ASP.NET-Anwendungsidentität gelesen werden. Daher können die Sicherheitseinstellungen der Dateien im Verzeichnis App_Code so beschränkt werden, dass die ASP.NET-Anwendungsidentität nur über Lesezugriff verfügt. Die Windows-Identität der ASP.NET-Anwendung wird auch häufig als Identität einer Verbindung zu einem SQL-Server mit integrierter Sicherheit verwendet. Weitere Informationen finden Sie unter Erforderliche Zugriffssteuerungslisten für ASP.NET und unter Gewusst wie: Zugreifen auf SQL Server mit integrierter Windows-Sicherheit.
Die Identität einer ASP.NET-Anwendung wird von mehreren Faktoren bestimmt. ASP.NET-Seiten werden standardmäßig mit der Windows-Identität des Diensts ausgeführt, der ASP.NET-Seiten auf dem Webserver ausführt. Auf einem Computer, auf dem Windows Server 2003 ausgeführt wird, entspricht diese Identität der Identität des Anwendungspools, der die ASP.NET-Anwendung enthält (standardmäßig das Konto NETZWERKDIENST). Auf Computern, auf denen Windows 2000 und Windows XP Professional ausgeführt wird, entspricht die Identität dem lokalen ASPNET-Konto, das bei der Installation von .NET Framework erstellt wird. Für diese Identität kann in der Konfiguration eine andere Identität festgelegt werden, wenn dies erforderlich ist. Weitere Informationen finden Sie unter Konfigurieren der Prozessidentität in ASP.NET.
Sie können die Windows-Identität, unter der die ASP.NET-Seite ausgeführt wird, mithilfe des identity-Elements des Konfigurationsabschnitts system.web ändern. Mit dem identity-Element kann ASP.NET angewiesen werden, eine Windows-Benutzer-ID zu imitieren. Imitieren einer Windows-Identität bedeutet, dass die ASP.NET-Seiten der Anwendung unter der Windows-Identität ausgeführt werden. Sie können einen Benutzernamen und ein Kennwort angeben, die imitiert werden sollen. Als Alternative können Sie den Identitätswechsel aktivieren, und ASP.NET wird auf eine der beiden folgenden Weisen ausgeführt: als eine von IIS angegebene anonyme Identität oder als die von IIS bestimmte authentifizierte Browseridentität (z. B. anonyme Authentifizierung, integrierte Windows-Authentifizierung (NTLM), usw.). Weitere Informationen finden Sie unter Identitätswechsel in ASP.NET.
Wenn eine Windows-Identität imitiert wird, können Sie Code ausführen, der die ursprüngliche Identität des Prozesses anstelle der imitierten Benutzer-ID wiederherstellt. Aus diesem Grund sollten Sie in Umgebungen, in denen Anwendungen voneinander getrennt sein müssen, die Anwendungen in separaten Anwendungspools auf Computern isolieren, auf denen Windows Server 2003 ausgeführt wird. Für jeden Anwendungspool muss in der Konfiguration eine eindeutige Windows-Identität festgelegt sein.
Die Windows-Identität des Betriebssystemthreads, der die ASP.NET-Seite ausführt, kann auf einfache Weise mithilfe der Name-Eigenschaft der von der GetCurrent-Methode zurückgegebenen WindowsIdentity bestimmt werden. Dies wird im folgenden Codebeispiel veranschaulicht.
<%=System.Security.Principal.WindowsIdentity.GetCurrent().Name%>
ASP.NET-Benutzer
Mit der ASP.NET-Benutzeridentität wird auf ASP.NET-spezifische Ressourcen zugegriffen. Sie können zum Beispiel einen Teil der Anwendung identifizieren, der nur für bestimmte Benutzer verfügbar ist, während andere Teile der Anwendung für alle Benutzer verfügbar sind.
Der ASP.NET-Benutzer wird vom authentication-Element des system.web-Abschnitts der Datei Web.config der Anwendung bestimmt. Es gibt verschiedene Möglichkeiten zum Authentifizieren der ASP.NET-Identität für die Anwendung. Sie können den Windows-Benutzernamen verwenden, der von IIS, der ASP.NET-Formularauthentifizierung, der Passport-Authentifizierung oder einem benutzerdefinierten Authentifizierungsschema bestimmt wurde. Auf die ASP.NET-Identität kann mithilfe der User-Eigenschaft des aktuellen HttpContext zugegriffen werden. Weitere Informationen finden Sie unter Authentifizierung in ASP.NET.
Wenn Sie mithilfe der ASP.NET-Formularauthentifizierung oder einer benutzerdefinierten Authentifizierungslösung die ASP.NET-Identität bereitstellen, können Sie mithilfe der ASP.NET-Mitgliedschaft einen Benutzerdatenspeicher und Benutzerverwaltungsfunktionen bereitstellen. Weitere Informationen hierzu finden Sie unter Verwalten von Benutzern durch Mitgliedschaft.
Autorisieren von Benutzern
Die Autorisierung umfasst das Beschränken des Benutzerzugriffs auf erforderliche Ressourcen. Dazu gehört das Beschränken des Zugriffs ausschließlich auf die erforderliche Dateien, Datenbanken und Teile der Anwendung. Außerdem schließt dies ein, mithilfe der Codezugriffssicherheit den Zugriff auf Code zu beschränken.
Sie können mithilfe von NTFS-Zugriffssteuerungslisten und FileAuthorizationModule den Zugriff auf Dateien beschränken. Weitere Informationen finden Sie unter ASP.NET-Autorisierung und Erforderliche Zugriffssteuerungslisten für ASP.NET.
Sie können mithilfe von UrlAuthorizationModule und der ASP.NET-Rollenverwaltung den Zugriff auf Teile der Anwendung beschränken. Weitere Informationen finden Sie unter ASP.NET-Autorisierung und unter Verwalten der Autorisierung mithilfe von Rollen.