ASP.NET-Autorisierung
Aktualisiert: November 2007
Mithilfe der Autorisierung wird bestimmt, ob einer Identität Zugriff auf eine bestimmte Ressource gewährt wird. In ASP.NET gibt es zwei Verfahren, den Zugriff auf eine angegebene Ressource zu autorisieren:
Dateiautorisierung Die Dateiautorisierung wird durch das FileAuthorizationModule ausgeführt. Dabei wird die ACL (Access Control List, Zugriffssteuerungsliste) der ASPX- oder ASMX-Handlerdatei überprüft, um zu ermitteln, ob ein Benutzer über Zugriffsrechte verfügt. Wenn die Windows-Authentifizierung aktiviert ist, werden die ACL-Berechtigungen der Windows-Identität des Benutzers überprüft. Andernfalls werden die ACL-Berechtigungen der Windows-Identität des ASP.NET-Prozesses überprüft. Weitere Informationen finden Sie unter Identitätswechsel in ASP.NET.
URL-Autorisierung Die URL-Autorisierung wird durch das UrlAuthorizationModule ausgeführt, das Benutzern und Rollen URLs in ASP.NET-Anwendungen zuordnet. Mit diesem Modul kann bestimmten Benutzern oder Rollen gezielt der Zugriff auf beliebige Teile einer Anwendung (i. d. R. Verzeichnisse) gewährt oder verweigert werden.
Verwenden der URL-Autorisierung
Bei Verwendung der URL-Autorisierung wird der Zugriff auf ein bestimmtes Verzeichnis abhängig vom Benutzernamen oder der Rolle gewährt bzw. verweigert. Dazu erstellen Sie in der Konfigurationsdatei für dieses Verzeichnis einen authorization-Abschnitt. Um die URL-Autorisierung zu aktivieren, geben Sie eine Liste von Benutzern oder Rollen im allow-Element oder im deny-Element des authorization-Abschnitts einer Konfigurationsdatei an. Die für dieses Verzeichnis festgelegten Berechtigungen gelten auch für die Unterverzeichnisse, sofern sie nicht durch Konfigurationsdateien in einem Unterverzeichnis überschrieben werden.
Im Folgenden wird die Syntax des authorization-Abschnitts veranschaulicht:
<authorization>
<[allow|deny] usersrolesverbs />
</authorization>
Eines der Elemente allow und deny ist erforderlich. Sie müssen entweder das users-Attribut oder das roles-Attribut angeben. Es ist nicht erforderlich, dass beide Attribute eingefügt werden. Das verbs-Attribut ist optional.
Mithilfe des allow-Elements und des deny-Elementskann der Zugriff jeweils gewährt bzw. verweigert werden. Jedes Element unterstützt die in der folgenden Tabelle aufgeführten Attribute:
Attribute |
Beschreibung |
---|---|
users |
Bezeichnet die Zielidentitäten (Benutzerkonten) für dieses Element. Anonyme Benutzer werden mit einem Fragezeichen (?) gekennzeichnet. Mit einem Sternchen (*) können alle authentifizierten Benutzer angegeben werden. |
roles |
Bezeichnet eine Rolle (ein RolePrincipal-Objekt) für die aktuelle Anforderung, der der Zugriff auf die Ressource gewährt oder verweigert wird. Weitere Informationen finden Sie unter Verwalten der Autorisierung mithilfe von Rollen. |
verbs |
Definiert die HTTP-Verben, auf die sich die Aktion bezieht, z. B. GET, HEAD und POST. Der Standard ist "*", das für alle Verben steht. |
Im folgenden Beispiel wird der Identität Kim und den Mitgliedern der Rolle Admins der Zugriff gewährt, während allen anonymen Benutzern und der Identität John der Zugriff verweigert wird (es sei denn, die Identität John ist Mitglied der Rolle Admins):
<authorization>
<allow users="Kim"/>
<allow roles="Admins"/>
<deny users="John"/>
<deny users="?"/>
</authorization>
Der folgende authorization-Abschnitt veranschaulicht, wie der Identität John der Zugriff gewährt und allen anderen Benutzern der Zugriff verweigert wird:
<authorization>
<allow users="John"/>
<deny users="*"/>
</authorization>
Sie können sowohl für das users-Attribut als auch für das roles-Attribut mehrere Entitäten in einer durch Kommas getrennten Liste angeben, wie im folgenden Beispiel dargestellt:
<allow users="John, Kim, contoso\Jane"/>
Beachten Sie bei der Angabe eines Domänenkontonamens, dass der Name sowohl die Domäne als auch den Benutzernamen enthalten muss (contoso\Jane).
Im folgenden Beispiel wird allen Benutzern die Ausführung von HTTP-GET für eine Ressource gestattet, während lediglich die Identität Kim eine POST-Operation ausführen darf:
<authorization>
<allow verbs="GET" users="*"/>
<allow verbs="POST" users="Kim"/>
<deny verbs="POST" users="*"/>
</authorization>
Die Regeln werden folgendermaßen angewendet:
Die in Konfigurationsdateien auf Anwendungsebene enthaltenen Regeln haben Vorrang gegenüber geerbten Regeln. Das System ermittelt, welche Regel Vorrang hat, indem es alle Regeln für einen URL zu einer Liste zusammenführt, wobei sich die neuesten Regeln (die nächsten in der Hierarchie) am Anfang der Liste befinden.
Wenn für eine Anwendung ein Satz zusammengeführter Regeln vorhanden ist, prüft ASP.NET die Regeln vom Anfang der Liste an, bis die erste Übereinstimmung gefunden wird. Die Standardkonfiguration von ASP.NET enthält ein <allow users="*">-Element, das alle Benutzer autorisiert. (Standardmäßig wird diese Regel zuletzt angewendet.) Wenn keine anderen passenden Autorisierungsregeln gefunden werden, wird die Anforderung zugelassen. Wenn eine Übereinstimmung mit einem deny-Element gefunden wird, wird die Anforderung mit dem HTTP-Statuscode 401 zurückgegeben. Wenn eine Übereinstimmung mit einem allow-Element gefunden wird, gestattet das Modul die weitere Verarbeitung der Anforderung.
In einer Konfigurationsdatei können Sie auch ein location-Element erstellen, um eine bestimmte Datei oder ein bestimmtes Verzeichnis anzugeben, auf die oder das die im location-Element festgelegten Einstellungen angewendet werden sollen.
Siehe auch
Konzepte
Konfigurieren von bestimmten Dateien und Unterverzeichnissen