Grundlegende Informationen über die Rollenverwaltung
Aktualisiert: November 2007
Die Rollenverwaltung dient zum Verwalten der Autorisierung, mit der Sie festlegen können, auf welche Ressourcen Benutzer in Ihrer Anwendung zugreifen dürfen. Mit der Rollenverwaltung können Sie Benutzer in Gruppen einteilen, indem Sie jedem Benutzer eine Rolle zuweisen (Manager, Vertrieb, Mitglied usw.). (Unter Windows werden Rollen durch die Zuordnung von Benutzern zu Gruppen, wie beispielsweise Administratoren, Hauptbenutzer usw., erstellt).
Nachdem Sie die Rollen angelegt haben, können Sie in Ihrer Anwendung Zugriffsregeln erstellen. Womöglich enthält Ihre Site einige Seiten, die Sie nur Mitgliedern zugänglich machen möchten. Oder Sie möchten einen Teil einer Seite anzeigen oder verbergen, je nachdem, ob der aktuelle Benutzer ein Manager ist oder nicht. Mit Rollen können Sie diese Arten von Regeln unabhängig von einzelnen Anwendungsbenutzern erstellen. So müssen Sie z. B. nicht jedem einzelnen Mitglied Ihrer Site Zugriff auf die Seiten gewähren, die exklusiv für Mitglieder bestimmt sind. Stattdessen können Sie der Rolle Mitglied das Zugriffsrecht gewähren und dann einfach Benutzer dieser Rolle hinzufügen (wenn sie Mitglieder werden) oder daraus entfernen (wenn die Mitgliedschaft erlischt).
Benutzer können mehreren Rollen gleichzeitig angehören. Wenn es sich bei der Seite z. B. um ein Diskussionsforum handelt, können einige Benutzer sowohl der Rolle eines Mitglieds als auch der Rolle eines Moderators zugeordnet sein. Jede Rolle kann so definiert werden, dass sie auf der Site über unterschiedliche Rechte verfügt. Ein Benutzer, der zwei Rollen zugeordnet ist, hätte dann die Rechte beider Rollen.
Auch wenn Ihre Anwendung nur von wenigen Benutzern verwendet wird, ist das Erstellen von Rollen sinnvoll. Mit Rollen können Sie Berechtigungen flexibel handhaben, und Sie können Benutzer hinzufügen und entfernen, ohne dass Sie an verschiedenen Stellen der Site Änderungen vornehmen müssen. Besonders wenn die Zahl der Zugriffsregeln für Ihre Anwendung zunimmt, profitieren Sie bei der Rollenverwaltung von der einfachen Übertragung der Änderungen auf ganze Gruppen von Benutzern.
Rollen und Zugriffsregeln
Rollen dienen hauptsächlich dazu, die Verwaltung der Zugriffsrechte für Gruppen von Benutzern zu vereinfachen. Sie erstellen Benutzer und weisen den Benutzern anschließend Rollen (in Windows: Gruppen) zu. Ein typisches Anwendungsbeispiel ist das Erstellen von Seiten, auf die nur bestimmte Benutzer Zugriff haben sollen. Häufig werden solche zugriffsbeschränkten Seiten in einem gesonderten Ordner abgelegt. Dann können Sie Regeln erstellen, die den Zugriff auf zugriffsbeschränkte Ordner gewähren oder verweigern. Sie können die Site z. B. so konfigurieren, dass Mitglieder und Manager Zugriff auf die Seiten im zugriffsbeschränkten Ordner haben, alle anderen Benutzer hingegen nicht. Wenn ein nicht autorisierter Benutzer versucht, eine zugriffsbeschränkte Seite anzuzeigen, erhält er entweder eine Fehlermeldung, oder er wird auf eine von Ihnen festgelegte Seite weitergeleitet.
Rollenverwaltung, Benutzeridentität und Mitgliedschaft
Voraussetzung für die Verwendung von Rollen ist, dass Sie die Benutzer Ihrer Anwendung identifizieren können. Nur so ist eine Zuweisung zu einer Rolle möglich. Sie haben zwei Möglichkeiten, Ihre Anwendung zu konfigurieren, um Benutzeridentitäten einzurichten: Windows-Authentifizierung und Formularauthentifizierung. Wenn Ihre Anwendung in einem lokalen Netzwerk (d. h. in einer domänenbasierten Intranetanwendung) ausgeführt wird, können Sie Benutzer mithilfe des Benutzerkontos der Windows-Domäne identifizieren. In diesem Fall sind die Rollen eines Benutzers die Windows-Gruppen, zu denen er gehört.
Bei Internetanwendungen und in anderen Szenarien, in denen die Verwendung von Windows-Benutzerkonten nicht möglich ist, können Sie Benutzeridentitäten mithilfe der Formularauthentifizierung ermitteln. Dabei wird in der Regel eine Seite erstellt, auf der die Benutzer ihren Benutzernamen und ihr Kennwort eingeben können. Diese Eingaben überprüfen Sie dann. Die Steuerelemente in ASP.NET können Ihnen einen Großteil dieser Arbeit abnehmen. Alternativ dazu können Sie auch eine Anmeldeseite erstellen und die FormsAuthentication-Klasse verwenden, um eine Benutzeridentität anzulegen.
Hinweis: |
---|
Sie können Rollen nicht auf Benutzer anwenden, die in Ihrer Anwendung über keine Identität verfügen (anonyme Benutzer). |
Wenn Sie zum Anlegen einer Benutzeridentität Anmeldungssteuerelemente oder die Formularauthentifizierung verwenden, können Sie auch die Rollenverwaltung in Verbindung mit der Mitgliedschaft verwenden. In diesem Szenario verwenden Sie die Mitgliedschaft, um Benutzer und Kennwörter zu definieren. Sie können dann die Rollenverwaltung verwenden, um Rollen zu definieren und diesen Rollen Mitglieder zuzuweisen. Die Rollenverwaltung ist jedoch nicht von der Mitgliedschaft abhängig. Sofern Sie in Ihrer Anwendung die Möglichkeit vorsehen, die Benutzeridentität festzulegen, können Sie die Rollenverwaltung zur Autorisierung verwenden.
Rollenverwaltung und der ASP.NET-Rollendienst
Mit dem ASP.NET-Rollendienst können Sie auf Rollen als WCF (Windows Communication Framework)-Dienst zugreifen. Mit dem Rollendienst können Sie die Rollen eines Benutzers aus jeder Anwendung überprüfen, die einen WCF-Dienst lesen oder verarbeiten kann. Sie können die Rollen eines Benutzers beispielsweise von einer Windows Forms-Anwendung, einer Webanwendung oder einer Anwendung aus, die .NET Framework nicht verwendet, überprüfen. Weitere Informationen zum Rollenanwendungsdienst finden Sie unter Übersicht über den Windows Communication Foundation-Rollendienst.
Rollenverwaltungs-API
Die Rollenverwaltung geht über auf das Beschränken von Rechten für Seiten und Ordner weit hinaus. Die Rollenverwaltung stellt eine API zur Verfügung, mit der Sie programmgesteuert bestimmen können, ob ein Benutzer einer Rolle angehört. Dadurch können Sie Code schreiben, der die Vorteile von Rollen nutzt und beliebige Anwendungsaufgaben ausführt, die nicht nur von der Benutzeridentität, sondern auch von seiner Rollenzugehörigkeit abhängen.
Wenn Sie in Ihrer Anwendung eine Benutzeridentität anlegen, können Sie die Methoden der Rollenverwaltungs-API zum Erstellen von Rollen, zum Hinzufügen von Benutzern zu Rollen und zum Abrufen der Rolleninformationen einzelner Benutzer verwenden. Mit diesen Methoden können Sie Ihre eigene Schnittstelle für die Rollenverwaltung erstellen.
Wenn Ihre Anwendung die Windows-Authentifizierung verwendet, bietet Ihnen die Rollenverwaltungs-API weniger Möglichkeiten zur Rollenverwaltung. Zum Beispiel können Sie dann die Rollenverwaltung nicht zum Erstellen neuer Rollen verwenden. Verwenden Sie stattdessen die Windows-Benutzer- und Gruppenverwaltung, um Benutzerkonten und Gruppen zu erstellen und die Benutzer den Gruppen zuzuordnen. Die Rollenverwaltung kann die Windows-Benutzer- und Gruppeninformationen auslesen, sodass Sie die Informationen dann für die Authentifizierung verwenden können.
Wenn Sie den ASP.NET-Rollendienst verwenden, können Sie überprüfen, ob ein Benutzer zu einer bestimmten Rolle gehört, oder alle Rollen eines Benutzers abrufen. Sie können über die Rollendienst-API jedoch keine Rollen verwalten.
So funktioniert die ASP.NET-Rollenverwaltung
Um die Rollenverwaltung zu verwenden, müssen Sie diese zuerst aktivieren und dann – falls gewünscht – Zugriffsregeln für die jeweiligen Rollen konfigurieren. Sie können die Rollenverwaltungsfunktionen auch zur Laufzeit verwenden, um die Rollen zu verwenden.
Rollenverwaltungskonfiguration
Um die ASP.NET-Rollenverwaltung zu verwenden, müssen Sie sie in der Datei Web.config einer Anwendung aktivieren, indem Sie folgende Einstellung vornehmen:
<roleManager
enabled="true"
cacheRolesInCookie="true" >
</roleManager>
Ein typisches Anwendungsbeispiel für Rollen ist das Festlegen von Regeln, mit denen der Zugriff auf Seiten oder Ordner zugelassen oder verweigert wird. Sie können solche Zugriffsregeln im authorization-Abschnitt der Datei Web.config einrichten. Im folgenden Beispiel wird gezeigt, wie Sie das Anzeigen von Seiten aus dem Ordner MemberPages Benutzern gestatten, die der Rolle Mitglieder angehören, und allen anderen verweigern:
<configuration>
<location path="MemberPages">
<system.web>
<authorization>
<allow roles="members" />
<deny users="*" />
</authorization>
</system.web>
</location>
<!-- other configuration settings here -->
<configuration>
Weitere Informationen zum Einrichten von Zugriffsregeln finden Sie unter ASP.NET-Autorisierung.
Außerdem müssen Sie Rollen wie Manager oder Mitglied erstellen und diesen Rollen dann Benutzer-IDs zuweisen. Wenn Ihre Anwendung die Windows-Authentifizierung verwendet, können Sie Benutzer und Gruppen mit dem Computerverwaltungs-Tool von Windows erstellen.
Wenn Sie die Formularauthentifizierung verwenden, können Sie Benutzer und Rollen mit dem ASP.NET-Websiteverwaltungs-Tool einrichten. Sie können diese Aufgabe aber auch programmgesteuert ausführen, indem Sie verschiedene Rollenverwaltungsmethoden aufrufen. Im folgenden Beispiel wird gezeigt, wie Sie die Rolle members erstellen.
Roles.CreateRole("members")
Roles.CreateRole("members");
Im folgenden Beispiel wird gezeigt, wie Sie den Benutzer JoeWorden der Rolle manager einzeln hinzufügen, und wie Sie die Benutzer JillShrader und ShaiBassli der Rolle members in einem Schritt hinzufügen:
Roles.AddUsersToRole("JoeWorden", "manager")
Dim userGroup(2) As String
userGroup(0) = "JillShrader"
userGroup(1) = "ShaiBassli"
Roles.AddUsersToRole(userGroup, "members")
Roles.AddUsersToRole("JoeWorden", "manager");
string[] userGroup = new string[2];
userGroup[0] = "JillShrader";
userGroup[1] = "ShaiBassli";
Roles.AddUsersToRole(userGroup, "members");
Hinweis: |
---|
Die Features der Rollenverwaltung sind nicht über den ASP.NET-Rollendienst verfügbar. Der Rollendienst kann nur Informationen über einen bestimmten Benutzer zurückgeben. |
Verwenden von Rollen zur Laufzeit
Wenn Benutzer Ihre Site zur Laufzeit besuchen, werden Identitäten der Benutzer angelegt. Das geschieht entweder über einen Windows-Kontonamen oder über eine direkte Anmeldung bei der Anwendung. (Wenn Benutzer Ihre Website besuchen, ohne sich anzumelden (anonym), haben sie keine Benutzeridentität und sind daher auch keiner Rolle zugeordnet.) Informationen über den angemeldeten Benutzer stehen der Anwendung über die User-Eigenschaft zur Verfügung. Bei aktivierten Rollen ermittelt ASP.NET die Rollen des aktuellen Benutzers und fügt sie dem User-Objekt hinzu. Dort können Sie auf diese Informationen zugreifen. Im folgenden Beispiel wird gezeigt, wie ermittelt wird, ob der aktuelle Benutzer die Rolle eines Mitglieds hat. Wenn der Benutzer zu dieser Rolle gehört, wird vom Code eine Schaltfläche für Mitglieder angezeigt:
If User.IsInRole("members") Then
buttonMembersArea.Visible = True
End If
if (User.IsInRole("members"))
{
buttonMembersArea.Visible = True;
}
Außerdem erstellt ASP.NET eine Instanz der RolePrincipal-Klasse und fügt sie dem aktuellen Anforderungskontext hinzu. Dadurch können Sie Rollenverwaltungsaufgaben, wie das Ermitteln der Benutzer einer bestimmten Rolle, programmgesteuert ausführen. Im folgenden Beispiel wird gezeigt, wie eine Liste der Rollen des gerade angemeldeten Benutzers abgerufen wird.
Dim userRoles() as String = CType(User, RolePrincipal).GetRoles()
string[] userRoles = ((RolePrincipal)User).GetRoles();
Wenn Sie in Ihrer Anwendung das LoginView-Steuerelement verwenden, prüft das Steuerelement die Rollen des Benutzers und passt auf Grundlage dieser Rollen die Benutzeroberfläche an.
Zwischenspeichern von Rolleninformationen
Wenn der Browser eines Benutzers Cookies zulässt, kann ASP.NET Rolleninformationen optional in einem verschlüsselten Cookie auf dem Computer des Benutzers speichern. Bei jeder Seitenanforderung liest ASP.NET das Cookie aus und füllt die Rolleninformationen für diesen Benutzer mit den Informationen aus dem Cookie auf. Mit dieser Strategie ist es seltener erforderlich, Rolleninformationen aus der Datenbank zu lesen. Wenn der Browser des Benutzers keine Cookies unterstützt oder die Cookies deaktiviert sind, dann werden die Rolleninformationen nur für die Dauer der jeweiligen Seitenanforderung zwischengespeichert.