Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Scott Mitchell
Hinweis
Da dieser Artikel geschrieben wurde, werden die ASP.NET Mitgliedschaftsanbieter von ASP.NET Identity abgelöst. Es wird dringend empfohlen, Apps so zu aktualisieren, dass sie die ASP.NET Identity Platform anstelle der Mitgliedschaftsanbieter verwenden, die zu dem Zeitpunkt dieses Artikels vorgestellt wurden. ASP.NET Identity hat eine Reihe von Vorteilen gegenüber dem ASP.NET Mitgliedschaftssystem, darunter:
- Bessere Leistung
- Verbesserte Erweiterbarkeit und Testbarkeit
- Unterstützung für OAuth, OpenID Connect und zweistufige Authentifizierung
- Anspruchsbasierte Identitätsunterstützung
- Bessere Interoperabilität mit ASP.Net Core
Das ASP.NET Websiteverwaltungstool (WSAT) bietet eine webbasierte Benutzeroberfläche zum Konfigurieren von Mitgliedschafts- und Rolleneinstellungen sowie zum Erstellen, Bearbeiten und Löschen von Benutzern und Rollen. Leider funktioniert der WSAT nur, wenn er von localhost besucht wird, was bedeutet, dass Sie das Verwaltungstool der Produktionswebsite nicht über Ihren Browser erreichen können. Die gute Nachricht ist, dass es Problemumgehungen gibt, mit denen Benutzer und Rollen in der Produktion verwaltet werden können. In diesem Tutorial werden diese Problemumgehungen und weitere behandelt.
Einleitung
ASP.NET 2.0 hat eine Reihe von Anwendungsdiensten eingeführt, bei denen es sich um eine Reihe von Bausteindiensten handelt, die Sie Ihrer Webanwendung hinzufügen können. Wir haben die Mitgliedschafts- und Rollendienste zu der Website "Buchüberprüfungen" schon im Tutorial Konfigurieren einer Website, die Anwendungsdienste verwendet hinzugefügt. Der Mitgliedschaftsdienst erleichtert das Erstellen und Verwalten von Benutzerkonten; der Rollendienst bietet eine API zum Kategorisieren von Benutzern in Gruppen. Die Book Reviews-Website verfügt über drei Benutzerkonten – Scott, Jisun und Alice – und eine einzige Rolle, Administrator, mit Scott und Jisun in der Administratorrolle.
ASP.NET. Die Anwendungsdienste von ASP.NET sind nicht an eine bestimmte Implementierung gebunden. Stattdessen weisen Sie die Anwendungsdienste an, einen bestimmten Anbieter zu verwenden, und dieser Anbieter implementiert den Dienst mithilfe einer bestimmten Technologie. Wir haben die Webanwendung "Book Reviews" so konfiguriert, dass sie die Anbieter SqlMembershipProvider
und SqlRoleProvider
für die Mitgliedschafts- und Rollendienste verwendet. Diese beiden Anbieter speichern Benutzerkonto- und Rolleninformationen in einer SQL Server-Datenbank und sind die am häufigsten verwendeten Anbieter für internetbasierte Webanwendungen, die in einem Webhosting-Unternehmen gehostet werden.
Eine häufige Herausforderung für Entwickler, die die Mitgliedschafts- und Rollendienste verwenden, ist die Verwaltung der Benutzer und Rollen in der Produktionsumgebung. Wie löschen Sie ein Benutzerkonto von der Produktionswebsite, fügen eine neue Rolle hinzu, oder fügen Sie einer vorhandenen Rolle einen vorhandenen Benutzer hinzu? In diesem Lernprogramm werden verschiedene Techniken zum Verwalten von Benutzern und Rollen auf der Produktionswebsite untersucht.
Verwenden des ASP.NET-Websiteverwaltungstools
ASP.NET enthält ein Web Site Administration Tool (WSAT), das das Erstellen und Verwalten von Benutzerkonten und Rollen sowie die Angabe von benutzer- und rollenbasierten Autorisierungsregeln erleichtert. Wenn Sie das WSAT verwenden möchten, klicken Sie im Projektmappen-Explorer auf das Symbol "ASP.NET Konfiguration", oder wechseln Sie zum Menü "Website" oder "Projekt", und wählen Sie die Option "ASP.NET Konfiguration" aus. Mit jedem der Ansätze wird ein Webbrowser gestartet, der den WSAT unter einer Adresse wie http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication
aufruft.
Der WSAT ist in drei Abschnitte unterteilt:
- Sicherheit – Verwalten von Benutzern, Rollen und Autorisierungsregeln.
- ApplicationConfiguration – Verwalten Sie die <appSettings> - und SMTP-Einstellungen von hier aus. Sie können die Anwendung auch offline schalten und Debug- und Ablaufverfolgungseinstellungen von hier aus verwalten sowie die standardmäßige benutzerdefinierte Fehlerseite angeben.
- ProviderConfiguration – konfigurieren Sie die von den Anwendungsdiensten verwendeten Anbieter.
Der Abschnitt "Sicherheit" (siehe Abbildung 1) enthält Links zum Erstellen neuer Benutzer, zum Verwalten von Benutzern, zum Erstellen und Verwalten von Rollen sowie zum Erstellen und Verwalten von Zugriffsregeln. Von hier aus können Sie dem System eine neue Rolle hinzufügen, einen vorhandenen Benutzer löschen oder Rollen aus einem bestimmten Benutzerkonto hinzufügen oder entfernen.
Abbildung 1: Der Abschnitt "WSAT Security" enthält Optionen für die Verwaltung von Benutzern und Rollen
(Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Leider ist der WSAT nur lokal zugänglich. Sie können das WSAT nicht auf Ihrer Remote-Produktionswebsite besuchen; wenn Sie www.yoursite.com/asp.netwebadminfiles/default.aspx
aufrufen, erhalten Sie eine 404-Fehlermeldung "Nicht gefunden". Der Code, der den WSAT unterstützt, verwendet die Klassen Membership
und Roles
in der .NET Framework, um Benutzer und Rollen zu erstellen, zu bearbeiten und zu löschen. Diese Klassen konsultieren die Konfigurationsinformationen der Webanwendung, um zu bestimmen, welcher Anbieter verwendet werden soll. Im Tutorial Konfigurieren einer Website, die Anwendungsdienste verwendet haben wir die Book Reviews-Website so eingerichtet, dass sie die Anbieter SqlMembershipProvider
und SqlRoleProvider
verwendet. Dies beinhaltete das Hinzufügen von <membership>
und <roleManager>
Abschnitten zu Web.config
.
<?xml version="1.0"?>
<configuration>
...
<connectionStrings configSource="ConfigSections\databaseConnectionStrings.config" />
<system.web>
...
<membership defaultProvider="ReviewMembership">
<providers>
<clear />
<add type="System.Web.Security.SqlMembershipProvider"
name="ReviewMembership"
connectionStringName="ReviewsConnectionString"
applicationName="BookReviews" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="ReviewRole">
<providers>
<clear />
<add type="System.Web.Security.SqlRoleProvider"
name="ReviewRole"
connectionStringName="ReviewsConnectionString"
applicationName="BookReviews" />
</providers>
</roleManager>
</system.web>
...
</configuration>
Beachten Sie, dass die <membership>
- und <roleManager>
-Abschnitte in ihrem SqlMembershipProvider
-Attribut jeweils auf die SqlRoleProvider
- bzw. type
-Anbieter verweisen. Diese Anbieter speichern die Benutzer- und Rolleninformationen in einer angegebenen SQL Server-Datenbank. Die von diesen Anbietern verwendete Datenbank wird durch das connectionStringName
Attribut angegeben, ReviewsConnectionString
das in der ~/ConfigSections/databaseConnectionStrings.config
Datei definiert ist. Denken Sie daran, dass die databaseConnectionStrings.config
Datei in der Entwicklungsumgebung die Verbindungszeichenfolge mit der Entwicklungsdatenbank enthält, während die Datei in der databaseConnectionStrings.config
Produktion die Verbindungszeichenfolge mit der Produktionsdatenbank enthält.
Kurz gesagt, auf das WSAT muss lokal über die Entwicklungsumgebung zugegriffen werden, und es funktioniert mit den Benutzer- und Rolleninformationen in der datenbank, die in der databaseConnectionStrings.config
Datei angegeben ist. Wenn wir die Verbindungszeichendaten in der Datei databaseConnectionStrings.config
in der Entwicklungsumgebung daher ändern, können wir WSAT lokal verwenden, um Benutzer und Rollen in der Produktionsumgebung zu verwalten.
Um diese Funktionalität zu veranschaulichen, öffnen Sie die databaseConnectionStrings.config
Datei in Visual Studio in der Entwicklungsumgebung, und ersetzen Sie die Verbindungszeichenfolge der Entwicklungsdatenbank durch die Verbindungszeichenfolge der Produktionsdatenbank. Starten Sie dann WSAT, wechseln Sie zur Registerkarte "Sicherheit", und fügen Sie einen neuen Benutzer namens Sam hinzu.
Abbildung 2 zeigt den WSAT-Bildschirm beim Erstellen dieses Kontos.
Abbildung 2: Erstellen eines neuen Benutzers namens "Sam" in der Produktionsumgebung
(Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Da wir die Verbindungszeichenfolge databaseConnectionStrings.config
so geändert haben, dass sie auf den Produktionsdatenbankserver verweist, wurde Sam als Benutzer in der Produktionsumgebung hinzugefügt. Um dies zu überprüfen, ändern Sie die Verbindungszeichenfolge in der databaseConnectionStrings.config
Datei wieder in die Entwicklungsdatenbank, und rufen Sie anschließend die Login.aspx
Seite in der Entwicklungsumgebung auf. Versuchen Sie, sich als Sam anzumelden (siehe Abbildung 3).
Abbildung 3: Sie können sich in der Entwicklungsumgebung nicht als Sam anmelden.
(Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Sie können sich in der Entwicklungsumgebung nicht als Sam anmelden, da die Benutzerkontoinformationen in der lokalen Datenbank nicht vorhanden sind. Stattdessen wurde etwas zur Produktionsdatenbank hinzugefügt. Um dies zu überprüfen, sehen Sie sich den Inhalt der aspnet_Users
Tabelle sowohl in der Entwicklungs- als auch in der Produktionsdatenbank an. In der Entwicklungsumgebung sollte es nur drei Datensätze für Benutzer Scott, Jisun und Alice geben. Die aspnet_Users
Tabelle in der Produktionsdatenbank weist jedoch vier Datensätze auf: Scott, Jisun, Alice und Sam. Folglich kann Sam sich über die Website in der Produktionsumgebung anmelden, aber nicht über die Entwicklungsumgebung.
Abbildung 4: Sam kann sich auf der Produktionswebsite anmelden
(Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Hinweis
Vergessen Sie nicht, die Verbindungszeichenfolge in der databaseConnectionStrings.config
Datei wieder in die Verbindungszeichenfolge der Entwicklungsdatenbank zu ändern, wenn Sie mit dem WSAT fertig sind, andernfalls arbeiten Sie beim Testen der Website über die Entwicklungsumgebung mit Produktionsdaten. Denken Sie auch daran, dass die soeben besprochene Technik es uns ermöglicht, Benutzer und Rollen remote zu verwalten, während Änderungen an allen anderen WSAT-Konfigurationsoptionen (Zugriffsregeln, SMTP-Einstellungen, Debugging- und Ablaufverfolgungseinstellungen usw.) die Web.config
Datei ändern. Folglich gelten alle Änderungen, die an den Einstellungen vorgenommen wurden, für die Entwicklungsumgebung und nicht für die Produktionsumgebung.
Erstellen benutzerdefinierter Benutzer- und Rollenverwaltungswebseiten
Das WSAT bietet ein sofort einsatzbereites System zur Verwaltung von Benutzern und Rollen, kann jedoch nur lokal gestartet werden und erfordert Änderungen an den Verbindungszeichenfolgeninformationen, um die Benutzer und Rollen in der Produktion zu verwalten. Die meisten Websites, die Benutzerkonten unterstützen, umfassen auch eine Reihe von Benutzer- und Rollenverwaltungswebseiten, mit denen Administratoren Benutzer und Rollen von Seiten innerhalb der Website verwalten können. Solche webbasierten Verwaltungsseiten erleichtern die Verwaltung von Benutzern und Rollen und sind für Websites wesentlich, auf denen möglicherweise viele Administratoren oder Administratoren vorhanden sind, die keinen Zugriff auf oder den technischen Hintergrund haben, um Visual Studio zum Starten des WSAT zu verwenden.
ASP.NET enthält eine Reihe integrierter anmeldebezogener Websteuerelemente, mit denen viele dieser administrativen Webseiten so einfach wie Ziehen und Ablegen implementiert werden können. Sie können beispielsweise eine Seite für Administratoren erstellen, um ein neues Benutzerkonto zu erstellen, indem Sie das CreateUserWizard-Steuerelement auf die Seite ziehen und einige Eigenschaften festlegen. Tatsächlich verwendet die Seite zum Erstellen von Benutzern im in Abbildung 2 dargestellten WSAT dasselbe CreateUserWizard-Steuerelement, das Sie Ihren Seiten hinzufügen können. Darüber hinaus sind die Funktionen der Mitgliedschafts- und Rollendienste programmgesteuert über die Membership
und Roles
Klassen im .NET Framework verfügbar. Mit diesen Klassen können Sie Code schreiben, um Benutzer und Rollen zu erstellen, zu bearbeiten und zu löschen sowie Benutzer zu Rollen hinzuzufügen oder zu entfernen, um zu bestimmen, welche Benutzer in welchen Rollen sind, und um andere benutzer- und rollenbezogene Aufgaben auszuführen.
Im Lernprogramm zum Konfigurieren einer Website, die Anwendungsdienste verwendet, habe ich dem Ordner mit dem Admin
Namen CreateAccount.aspx
eine Seite hinzugefügt. Auf dieser Seite kann ein Administrator der Website ein neues Benutzerkonto hinzufügen und angeben, ob sich der neu erstellte Benutzer in der Administratorrolle befindet (siehe Abbildung 5).
Abbildung 5: Administratoren können neue Benutzerkonten erstellen
(Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Ausführlichere Informationen zum Erstellen von Benutzer- und Rollenverwaltungsseiten sowie schrittweise Anleitungen zur Verwendung der Membership
Und Roles
Klassen und der anmeldebezogenen ASP.NET Websteuerelemente finden Sie in den Lernprogrammen zur Websitesicherheit. Dort finden Sie Anleitungen zum Erstellen von Webseiten zum Erstellen neuer Konten, zum Erstellen und Verwalten von Rollen, zum Zuweisen von Benutzern zu Rollen und anderen allgemeinen Verwaltungsaufgaben.
Um WSAT-ähnliche Funktionen auf der Produktionswebsite zu implementieren, können Sie immer eine eigene Reihe von Webseiten erstellen, die die Features des WSAT implementieren. Informationen zu den ersten Schritten finden Sie im WSAT-Quellcode, der sich im Ordner %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles
befindet. Eine weitere Möglichkeit besteht darin, die WSAT-Alternative von Dan Clem zu verwenden, die er in seinem Artikel, Rolling Your Own Web Site Administration Tool, teilt. Dan führt Leser durch den Prozess der Erstellung eines benutzerdefinierten WSAT-ähnlichen Tools, enthält den Quellcode seiner Anwendung zum Download (in C#), und gibt schrittweise Anleitungen zum Hinzufügen seines benutzerdefinierten WSAT zu einer gehosteten Website.
Zusammenfassung
Das ASP.NET Web Site Administration Tool (WSAT) kann zusammen mit den Mitgliedschafts- und Rollenanwendungsdiensten verwendet werden, um Benutzer- und Rolleninformationen für Ihre Website zu verwalten. Leider ist das WSAT nur lokal zugänglich und kann nicht von Ihrer Produktionswebsite aus besucht werden. Indem Sie jedoch die Verbindungszeichenfolge in der Entwicklungsumgebung so ändern, dass sie auf die Produktionsdatenbank verweist, können Sie den WSAT verwenden, um die Benutzer und Rollen auf der Produktionswebsite zu verwalten.
Während der WSAT-Ansatz eine schnelle und einfache Möglichkeit zum Verwalten von Benutzern und Rollen bietet, erfordert er das Starten des WSAT aus Visual Studio sowie temporäre Änderungen an den Verbindungszeichenfolgeninformationen. Das WSAT bietet eine schnelle Möglichkeit, Benutzer und Rollen in der Produktion zu verwalten, ist aber umständlich und funktioniert nicht gut für Websites mit mehreren Administratoren oder mit Administratoren, die nicht mit Visual Studio und WSAT vertraut sind oder nicht vertraut sind. Aus diesen Gründen enthalten die meisten Websites, die Benutzerkonten unterstützen, eine Reihe administrativer Webseiten. Eine solche Gruppe von Webseiten beseitigt die Notwendigkeit des WSAT und wird von verschiedenen administrativen Benutzern von jedem Computer verwendet.
Glückliche Programmierung!
Weitere nützliche Informationen
Weitere Informationen zu den in diesem Lernprogramm erläuterten Themen finden Sie in den folgenden Ressourcen:
- Untersuchung von ASP.NET-Mitgliedschaft, -Rollen und -Profil
- Erstellen Ihres eigenen Webseitenverwaltungstools
- Übersicht über das Websiteverwaltungstool
- Lernprogramme zur Websitesicherheit