Verwenden der IIS-Authentifizierung mit ASP.NET-Identitätswechsel
Internetinformationsdienste (IIS) stellt mehrere Authentifizierungsschemas bereit, die zum Sichern einer Webanwendung eingesetzt werden können. Zu den klassischen Beispielen gehört der Einsatz der integrierten Windows-Authentifizierung (NTLM) im Intranet eines Unternehmens, um die Identität von Benutzern auf Grundlage der Windows-Anmeldeinformationen zu bestimmen, oder auch das Angeben einer einzigen anonymen Identität für eine bestimmte Anwendung. Mit der von IIS bereitgestellten Windows-Identität lässt sich anschließend bestimmen, ob die Webanwendung Zugriff auf eine geschützte Windows-Ressource hat, z. B. eine Datei, die über eine Zugriffssteuerungsliste (ACL) geschützt ist, oder eine Netzwerkressource, wie etwa ein Datei- oder Datenbankserver. Sie können ASP.NET per Identitätswechsel für das Verwenden der von IIS bereitgestellten Windows-Identität konfigurieren.
ASP.NET ist standardmäßig für die Verwendung des Windows-Authentifizierungsmodus konfiguriert, der die von IIS bereitgestellte Windows-Identität auf die User-Eigenschaft des aktuellen HttpContext-Objekts anwendet. Auf diese Weise können Sie zwar die von IIS bereitgestellte Identität über die User-Eigenschaft bestimmen (bei Verwendung der anonymen Identifikation bleibt der Name des Benutzers leer), die bereitgestellte Identität wird jedoch nicht als WindowsIdentity für die aktuelle Seite verwendet. Die WindowsIdentity für eine Anwendung wird verwendet, um zu bestimmen, ob die Anwendung Zugriff auf eine bestimmte Datei oder Netzwerkressource hat.
Damit ASP.NET mithilfe eines Identitätswechsels die von IIS bereitgestellte Windows-Identität als WindowsIdentity für die ASP.NET-Anwendung verwenden kann, müssen Sie die Datei Web.config der Anwendung bearbeiten und das impersonate-Attribut des identity-Konfigurationselements auf true festlegen:
<configuration>
<system.web>
<identity impersonate="true" />
</system.web>
</configuration>
Der Identitätswechsel ist vom im authentication-Konfigurationselement konfigurierten Authentifizierungs-mode unabhängig. Das Authentifizierungselement wird verwendet, um die User-Eigenschaft des aktuellen HttpContext zu bestimmen. Der Identitätswechsel wird verwendet, um die WindowsIdentity der ASP.NET-Anwendung zu bestimmen.
Im Folgenden wird am Beispiel einer Intranetumgebung beschrieben, wie sich der Identitätswechsel aktivieren lässt. Im Beispiel wird eine interne Unternehmenswebsite zum Veröffentlichen von Mitarbeiterinformationen eingerichtet. Einige der Informationen sind allerdings nur für Manager bestimmt. Um den Zugriff auf die Managerinformationen einzuschränken, lassen sich diese Informationen in einem Unterverzeichnis der Mitarbeiterinformationssite veröffentlichen. IIS bestimmt die Identität des Benutzers mithilfe der integrierten Windows-Sicherheit (NTLM). Voraussetzungen für dieses Beispiel sind:
Als Betriebssystem des Webservers ist Microsoft Windows NT Server, Windows 2000 Server oder Windows Server 2003 installiert.
Auf dem Webserver ist IIS 6.0 installiert.
Die Webserverfestplatte ist mit NTFS formatiert.
Alle Mitarbeiter, die Zugriff auf beschränkte Ressourcen benötigen, verwenden Windows.
Als Administrator der Anwendung müssen Sie wie folgt vorgehen:
Erstellen Sie die in der folgenden Abbildung gezeigten Dateien und Verzeichnisse:
Erstellen Sie eine Windows-Gruppe mit dem Namen Managers, der sämtliche Benutzer angehören, die Zugriff auf die Datei ManagerInfo.aspx haben sollen.
Verwenden Sie den Internetinformationsdienste-Manager (IIS), um die anonyme Authentifizierung für die Anwendung zu deaktivieren und die integrierte Windows-Authentifizierung zu aktivieren.
Legen Sie in der Datei Web.config der Anwendung das impersonate-Attribut im identity-Element auf true fest.
Legen Sie die NTFS-ACL (Access Control List, Zugriffssteuerungsliste) für das Verzeichnis ManagerInformation so fest, dass nur Identitäten aus der Windows-Gruppe Manager und eventuell erforderliche Systemkonten Zugriffsrechte haben. Vergessen Sie dabei nicht, auch die Identität für den ASP.NET-Prozess hinzuzufügen. Die Identität des ASP.NET-Prozesses ist unter Windows 2000 Server oder Windows NT das lokale ASPNET-Konto. Die Identität des ASP.NET-Prozesses ist ab Windows Server 2003 die Identität des IIS-Anwendungspools, standardmäßig also das NETZWERKDIENST-Konto.
Hinweis
Das ASP.NET-Rollenverwaltungsfeature bietet eine weitere Möglichkeit zum Einschränken des Zugriffs auf Bereiche der Webanwendung. Weitere Informationen finden Sie unter Verwalten der Autorisierung mithilfe von Rollen.
Siehe auch
Konzepte
Grundlegende Sicherheitshinweise für Webanwendungen