ASP.NET-Sicherheitsarchitektur

Aktualisiert: November 2007

Dieser Abschnitt enthält eine Übersicht über die ASP.NET-Sicherheitsinfrastruktur. Die folgende Abbildung veranschaulicht die Zusammenhänge zwischen den Sicherheitssystemen in ASP.NET.

ASP.NET-Architektur

Wie in der Abbildung dargestellt, erfolgt die Kommunikation aller Webclients mit ASP.NET-Anwendungen über Microsoft IIS. IIS authentifiziert die Anforderung ggf. und sucht anschließend die angeforderte Ressource (z. B. eine ASP.NET-Anwendung). Wenn der Client autorisiert ist, wird die Ressource zur Verfügung gestellt.

Eine ASP.NET-Anwendung kann bei der Ausführung integrierte ASP.NET-Sicherheitsfeatures verwenden. Zusätzlich kann eine ASP.NET-Anwendung die Sicherheitsfeatures von .NET Framework verwenden. Weitere Informationen finden Sie unter Schlüsselbegriffe der Sicherheit.

Integrieren der ASP.NET-Authentifizierung mit IIS

Zusätzlich zu den Authentifizierungsmöglichkeiten von IIS können Sie die Authentifizierung in ASP.NET durchführen. Wenn Sie die ASP.NET-Authentifizierung in Betracht ziehen, sollten Sie die Interaktion mit den IIS-Authentifizierungsdiensten verstehen.

IIS geht davon aus, dass ein Satz von Anmeldeinformationen einem Microsoft Windows NT-Konto zugeordnet ist und diese Anmeldeinformationen zur Authentifizierung des Benutzers verwendet werden sollen. In IIS 5.0 und 6.0 werden drei verschiedene Authentifizierungsarten unterstützt: Basis-, Digest- und integrierte Windows-Sicherheit (NTLM oder Kerberos). Sie können die Art der Authentifizierung in den Verwaltungsdiensten von IIS auswählen. Weitere Informationen über IIS-Authentifizierung finden Sie in der IIS-Dokumentation.

Wenn Benutzer eine URL anfordern, die einer ASP.NET-Anwendung zugeordnet ist, werden die Informationen zur Anforderung und zur Authentifizierung an die Anwendung übergeben. ASP.NET stellt die Formularauthentifizierung bereit. Dabei handelt es sich um ein System, bei dem nicht authentifizierte Anforderungen zu einer von Ihnen erstellten ASP.NET-Webseite umgeleitet werden. Der Benutzer stellt Anmeldeinformationen bereit und sendet die Seite. Wenn die Anwendung die Anforderung authentifiziert, gibt das System ein Authentifizierungsticket in einem Cookie aus, das die Anmeldeinformationen oder einen Schlüssel zum Wiedererlangen der Identität enthält. Bei nachfolgenden Anforderungen wird zusammen mit der Anforderung ein Authentifizierungsticket übertragen.

Hinweis:

ASP.NET-Mitgliedschaft und ASP.NET-Anmeldesteuerelemente arbeiten implizit mit Formularauthentifizierung.

Sicherheitseinstellungen in ASP.NET-Konfigurationsdateien

ASP.NET-Sicherheitseinstellungen werden in den Dateien Machine.config und Web.config konfiguriert. Wie alle anderen Konfigurationsinformationen werden die Grundeinstellungen und die Standardeinstellungen in der Datei Machine.config im Unterverzeichnis Config der aktuellen .NET Framework-Installation gespeichert. Die Web.config-Dateien im Stammverzeichnis der Website sowie in den Stammverzeichnissen der Anwendungen bieten Ihnen die Möglichkeit, sitespezifische und anwendungsspezifische Einstellungen festzulegen, die auch Einstellungen der Datei Machine.config überschreiben können. Unterverzeichnisse übernehmen die Einstellungen eines Verzeichnisses, sofern diese nicht von einer Datei Web.config im Unterverzeichnis überschrieben werden. Ein Beispiel für die Funktionsweise dieses hierarchischen Konfigurationssystems in Bezug auf die Sicherheit finden Sie unter configSections-Element (allgemeines Einstellungsschema).

Eine Web.config-Datei enthält drei Hauptabschnitte: den authentication-Abschnitt, den authorization-Abschnitt und den identity-Abschnitt. Im Normalfall werden die Werte für jedes Sicherheitselement in der Datei Machine.config festgelegt und je nach den Erfordernissen in der Datei Web.config auf Anwendungsebene überschrieben. Alle Unterverzeichnisse übernehmen diese Einstellungen automatisch. Unterverzeichnisse können jedoch eigene Konfigurationsdateien enthalten, die die geerbten Einstellungen überschreiben.

Hinweis:

Die ASP.NET-Konfiguration ist nur für ASP.NET-Ressourcen gültig, und zwar nur für diejenigen, die für die Behandlung durch die Aspnet_isapi.dll-Erweiterung in IIS registriert wurden. Die ASP.NET-Konfiguration stellt keine Autorisierung für Ressourcen zur Verfügung, die nicht von ASP.NET verarbeitet werden. Daher können alle Benutzer je nach den IIS-Berechtigungen auf TXT, HTM, HTML, GIF, JPG, JPEG, ASP und weitere Dateitypen zugreifen. Beispielsweise können trotz möglicher Einschränkung der ASP.NET-Ressourcen eines Verzeichnisses durch eine Datei Web.config die Dateien in diesem Verzeichnis sämtlichen Benutzern angezeigt werden, wenn das Durchsuchen von Verzeichnissen aktiviert ist und keine weiteren Einschränkungen vorliegen. Sie können diese Dateitypen in die ASP.NET-Sicherheit einschließen, indem Sie die Dateinamenerweiterungen mithilfe des IIS-Verwaltungstools explizit der Aspnet_isapi.dll-Erweiterung zuordnen. Die Verarbeitung dieser Dateitypen durch ASP.NET kann jedoch die Leistung der Website beeinflussen.

Mit dem location-Konfigurationselement können Sie eine bestimmte Datei oder ein bestimmtes Verzeichnis angeben, auf die oder auf das die Einstellungen angewendet werden sollen. Weitere Informationen finden Sie unter configSections-Element (allgemeines Einstellungsschema) und unter Konfigurieren von bestimmten Dateien und Unterverzeichnissen. Weitere Informationen zur ASP.NET-Konfiguration im Allgemeinen finden Sie unter Übersicht über die ASP.NET-Konfiguration.

Das folgende Beispiel veranschaulicht die Syntax der Sicherheitsabschnitte einer Konfigurationsdatei:

<authentication mode="[Windows|Forms| None]">
  <forms name="name" 
    loginUrl="url" 
    protection="[All|None|Encryption|Validation]"
    path="path" timeout="minutes"
    requireSSL="[true|false]" 
    slidingExpiration="[true|false]">
    <credentials passwordFormat="[Clear|MD5|SHA1]">
      <user name="********" 
        password="********"/>
      </credentials>
  </forms>
</authentication>

<authorization>
  <allow users="comma-separated list of users"
      roles="comma-separated list of roles" />
  <deny  users="comma-separated list of users"
      roles="comma-separated list of roles" />
</authorization>

<identity impersonate ="[true|false]"
  userName="domain\username"
  password="password" />

<trust level="[Full|High|Medium|Low|Minimal]" 
  originUrl=""/>

<securityPolicy>
  <trustLevel name="Full" policyFile="internal"/>
  <trustLevel name="High" policyFile="web_hightrust.config"/>
  <trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
  <trustLevel name="Low"  policyFile="web_lowtrust.config"/>
  <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>

Die folgende Tabelle enthält die Standardeinstellungen für diese Elemente.

Standardwert

Beschreibung

<allow roles="" />

Eine leere Zeichenfolge, die angibt, dass standardmäßig alle Rollen zugelassen sind.

<allow users="*" />

Eine leere Zeichenfolge, die angibt, dass allen Benutzern der Zugriff gewährt wird (keine Authentifizierung erforderlich).

<authentication mode="Windows" />

Der Authentifizierungstyp, der die Quelle des aktuellen User-Werts bestimmt. Der Standardwert ist Windows.

<credentials passwordFormat="SHA1" />

Der für Kennwörter verwendete Hashalgorithmus. Der Standardwert ist SHA1.

<deny roles="" />

Eine leere Zeichenfolge, die angibt, dass standardmäßig keiner Rolle der Zugriff verweigert wird.

<deny users="" />

Eine leere Zeichenfolge, die angibt, dass standardmäßig keinem Benutzer der Zugriff verweigert wird.

<forms loginUrl="logon.aspx" />

Die URL, zu der die Anforderung umgeleitet wird, wenn Sie den Authentifizierungs-mode auf Forms festgelegt haben und die Anforderung nicht über ein gültiges Authentifizierungsticket verfügt.

<forms name=".ASPXAUTH" />

Der Name, unter dem das Formularauthentifizierungscookie auf dem Computer des Benutzers gespeichert ist.

<forms path="/" />

Der Pfad, für den die Formularauthentifizierung gültig ist. Standardmäßig sind dies alle Pfade vom Anwendungsstamm abwärts.

<forms protection="All" />

Die Sicherheit, die für das Formularauthentifizierungsticket gültig ist. Zu den Werten zählen: All, None, Encryption und Validation.

<forms timeout="30" />

Das Timeout in Minuten, nach dem das Formularauthentifizierungsticket abläuft und sich die Benutzer erneut authentifizieren müssen.

<forms requireSSL="false" />

Ein boolescher Wert, der angibt, ob zur Übertragung des Authentifizierungscookies eine SSL-Verbindung erforderlich ist.

<forms slidingExpiration="true" />

Ein boolescher Wert, der angibt, ob die gleitende Ablaufzeit aktiviert ist. Weitere Informationen finden Sie in den Ausführungen zur SlidingExpiration-Eigenschaft.

<identity impersonate="false" />

Ein boolescher Wert, der angibt, ob der Identitätswechsel deaktiviert ist. Weitere Informationen finden Sie unter Identitätswechsel in ASP.NET.

<identity userName="" />

Eine leere Zeichenfolge, die angibt, dass standardmäßig keine Benutzeridentität angegeben wird.

<identity password="" />

Eine leere Zeichenfolge, die angibt, dass standardmäßig für die Benutzeridentität kein Kennwort angegeben wird.

<trust level="Full" originUrl="" />

Die Sicherheitsrichtlinie, die für die Anwendung verwendet wird.

<trustLevel name="Full" policyFile="internal"/>

Die Standardrichtliniendatei für die Vertrauensebene Full.

<trustLevel name="High" policyFile="web_hightrust.config"/>

Die Standardrichtliniendatei für die Vertrauensebene High.

<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>

Die Standardrichtliniendatei für die Vertrauensebene Medium.

<trustLevel name="Low" policyFile="web_lowtrust.config"/>

Die Standardrichtliniendatei für die Vertrauensebene Low.

<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>

Die Standardrichtliniendatei für die Vertrauensebene Minimal.

Siehe auch

Konzepte

Übersicht über die ASP.NET-Konfiguration

Weitere Ressourcen

Sichern von ASP.NET-Websites

Schlüsselbegriffe der Sicherheit

Formularauthentifizierungsanbieter