Der Sicherheitsdatenfluss in ASP.NET
Aktualisiert: November 2007
Sie haben beim Entwickeln ASP.NET-Anwendungen verschiedene Möglichkeiten zur Erhöhung der Sicherheit. Dieses Thema beschreibt den Sicherheitsdatenfluss für zwei häufige Szenarios: Identitätswechsel und Formularauthentifizierung unter Verwendung von Cookies.
Szenario 1: Identitätswechsel
In einem Szenario mit Identitätswechsel werden die Authentifizierung durch Microsoft IIS sowie die Microsoft Windows-Dateizugriffssicherheit verwendet, um den Programmieraufwand für Sicherheit in der eigentlichen ASP.NET-Anwendung möglichst gering zu halten. Die folgende Abbildung stellt den Datenfluss dar.
Identitätswechsel
Die Abbildung stellt die folgende Abfolge von Ereignissen dar:
Von einem Netzwerkclient wird eine Anforderung an IIS gerichtet.
IIS authentifiziert den Client durch Basis- oder Digestsicherheit oder durch die integrierte Sicherheit von Windows (NTLM oder Kerberos).
Nach der Authentifizierung des Clients übergibt IIS die authentifizierte Anforderung an ASP.NET.
Die ASP.NET-Anwendung nimmt mithilfe des von IIS übergebenen Zugriffstokens die Identität des anfordernden Clients an und geht davon aus, dass die NTFS-Dateiberechtigungen Zugriff auf die Ressourcen gewähren. Die ASP.NET-Anwendung muss lediglich überprüfen, ob der Identitätswechsel in der ASP.NET-Konfigurationsdatei auf true festgelegt ist; es ist kein ASP.NET-Sicherheitscode erforderlich.
Wenn der Identitätswechsel deaktiviert ist, wird die Anwendung mit der ASP.NET-Prozessidentität ausgeführt. Die Standardidentität für Microsoft Windows 2000 Server und Windows XP Professional ist ein lokales Konto mit dem Namen ASPNET, das bei der Installation von ASP.NET automatisch erstellt wird. Für Microsoft Windows Server 2003 ist die Standardidentität die Identität des Anwendungspools für die IIS-Anwendung (standardmäßig das NETZWERKDIENST-Konto).
Hinweis: Wenn der Identitätswechsel deaktiviert ist und Sie den Zugriff für einen bestimmten Benutzer oder eine Reihe von Benutzern beschränken möchten, z. B. Benutzer, die Formularauthentifizierung verwenden, müssen Sie eine andere Form der Autorisierung verwenden, z. B. URL-Autorisierung. Weitere Informationen zur URL-Autorisierung finden Sie unter ASP.NET-Autorisierung.
Ausführliche Informationen über den Identitätswechsel in ASP.NET-Anwendungen finden Sie unter Identitätswechsel in ASP.NET und Verwenden der IIS-Authentifizierung mit ASP.NET-Identitätswechsel.
Wenn der Zugriff gewährt wird, gibt die ASP.NET-Anwendung die angeforderte Ressource über IIS zurück.
Szenario 2: Formularauthentifizierung
In einem Szenario mit Formularauthentifizierung werden Anmeldeinformationen wie Name und Kennwort von der Anwendung direkt vom anfordernden Client entgegengenommen und deren Authentizität direkt bestimmt. Die IIS-Authentifizierung wird nicht von der Anwendung verwendet, jedoch können die IIS-Authentifizierungseinstellungen die Formularauthentifizierung beeinflussen. Im Allgemeinen aktivieren Sie den anonymen Zugriff in IIS, wenn Sie die Formularauthentifizierung verwenden. Andernfalls hängt die Möglichkeit des Benutzers, die Anwendung zu erreichen und Benutzername und Kennwort für die Formularauthentifizierung anzugeben, von der erfolgreichen IIS-Authentifizierung ab.
Die folgende Abbildung stellt den Datenfluss in diesem Szenario dar.
Formularauthentifizierung
Die Abbildung stellt die folgende Abfolge von Ereignissen dar:
Ein Benutzer generiert die Anforderung für eine geschützte Ressource.
IIS erhält die Anforderung, und da der anonyme Zugriff in IIS aktiviert ist, wird von IIS keine Benutzerauthentifizierung durchgeführt, sondern die Anforderung an die ASP.NET-Anwendung durchgereicht.
Da der ASP.NET-Authentifizierungsmodus auf Formularauthentifizierung festgelegt ist, wird die Anforderung von der ASP.NET-Anwendung auf ein Formularauthentifizierungsticket (ein spezielles Cookie) hin untersucht. Enthält die Anforderung kein Authentifizierungsticket, wird die Anforderung von ASP.NET auf die in der Konfigurationsdatei der Anwendung angegebene Anmeldeseite umgeleitet.
Auf der Anmeldeseite gibt der Benutzer die erforderlichen Anmeldeinformationen ein, i. d. R. Name und Kennwort. Im Anwendungscode werden die Anmeldeinformationen auf ihre Authentizität hin überprüft. Wenn die Anmeldeinformationen authentifiziert wurden, wird vom Anwendungscode ein Authentifizierungsticket, das die Benutzeranmeldeinformationen darstellt, an die Antwort angefügt. (Das Kennwort wird nicht mit angefügt). Wenn die Authentifizierung fehlschlägt, wird die Antwort mit der Meldung zurückgegeben, dass der Zugriff verweigert wurde, oder das Anmeldeformular wird erneut angezeigt.
Das ausgestellte Authentifizierungsticket ist in allen nachfolgenden Anforderungen an die ASP.NET-Anwendung enthalten. ASP.NET überprüft das Ticket mit einer Überprüfung der Nachrichtenauthentifizierung (Message Authentication Check, MAC) auf seine Gültigkeit.
Wenn der Benutzer authentifiziert wurde, wird die Autorisierung von ASP.NET überprüft. Anschließend wird entweder Zugriff auf die ursprünglich angeforderte Ressource gewährt, oder die Anforderung wird auf eine andere Seite oder an ein benutzerdefiniertes Autorisierungsmodul umgeleitet. Dort wird dann überprüft, ob die Anmeldeinformationen die Autorisierung zum Zugriff auf die geschützte Ressource besitzen. Wenn die Autorisierung fehlschlägt, leitet ASP.NET den Benutzer zur Anmeldeseite um.
Wenn der Benutzer autorisiert ist, wird Zugriff auf die geschützte Ressource gewährt. Je nach Aufbau der Anwendung kann eine zusätzliche Überprüfung der Anmeldeinformationen erforderlich sein, bevor der Zugriff auf die geschützte Ressource autorisiert wird.
Hinweis: Formularauthentifizierung und die Autorisierungsprüfung gelten für nur Ressourcen, die mit dem authentication-Konfigurationselement und dem authorization-Konfigurationselement geschützt sind. Der Zugriff auf durch Zugriffssteuerungslisten (ACLs) geschützte Windows-Ressourcen wird mithilfe der aktuellen Windows-Identität der ASP.NET-Anwendung überprüft. Weitere Informationen finden Sie unter Identitätswechsel in ASP.NET.
Siehe auch
Aufgaben
Gewusst wie: Implementieren der einfachen Formularauthentifizierung
Konzepte
Verwenden der IIS-Authentifizierung mit ASP.NET-Identitätswechsel
Weitere Ressourcen
Verwalten von Benutzern durch Mitgliedschaft
Verwalten der Autorisierung mithilfe von Rollen