Share via


Benutzer und Rollen auf der Produktionswebsite (C#)

von Scott Mitchell

Hinweis

Seit diesem Artikel wurden 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 zum Zeitpunkt der Veröffentlichung 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
  • Unterstützung für anspruchsbasierte Identitäten
  • Bessere Interoperabilität mit ASP.Net Core

Das ASP.NET Website Administration Tool (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 das WSAT nur, wenn er von localhost aus 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, die es ermöglichen, Benutzer und Rollen in der Produktion zu verwalten. In diesem Tutorial werden diese Und andere Problemumgehungen untersucht.

Einführung

ASP.NET 2.0 wurde eine Reihe von Anwendungsdiensten eingeführt, bei denen es sich um eine Reihe von Bausteindiensten handelt, die Sie Ihrer Webanwendung hinzufügen können. Im Tutorial Konfigurieren einer Website, die Anwendungsdienste verwendet, haben wir die Dienste Mitgliedschaft und Rollen zur Website "Buchüberprüfungen" hinzugefügt. Der Mitgliedschaftsdienst erleichtert das Erstellen und Verwalten von Benutzerkonten; Der Rollendienst bietet eine API zum Kategorisieren von Benutzern in Gruppen. Die Website "Buchbewertungen" verfügt über drei Benutzerkonten - Scott, Jisun und Alice - und eine einzelne Rolle, Admin, mit Scott und Jisun in der Admin Rolle.

ASP. Die Anwendungsdienste von 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 Buchüberprüfungen so konfiguriert, dass die SqlMembershipProvider Anbieter und SqlRoleProvider für die Mitgliedschafts- und Rollendienste verwendet werden. 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 bei einem Webhostingunternehmen 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 können Sie ein Benutzerkonto von der Produktionswebsite löschen, eine neue Rolle hinzufügen oder einer vorhandenen Rolle einen vorhandenen Benutzer hinzufügen? In diesem Tutorial werden verschiedene Techniken zum Verwalten von Benutzern und Rollen auf der Produktionswebsite untersucht.

Verwenden des ASP.NET-Websiteverwaltungstools

ASP.NET enthält ein Websiteverwaltungstool (Web Site Administration Tool , WSAT), das das Erstellen und Verwalten von Benutzerkonten und Rollen sowie das Angeben von benutzer- und rollenbasierten Autorisierungsregeln erleichtert. Um WSAT zu verwenden, 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. Bei beiden Ansätzen wird ein Webbrowser gestartet und an die WSAT-Adresse wie folgt verweist: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication

Das WSAT ist in drei Abschnitte unterteilt:

  • Sicherheit : Verwalten von Benutzern, Rollen und Autorisierungsregeln.
  • ApplicationConfiguration : Hier können Sie die <AppSettings> - und SMTP-Einstellungen verwalten. Sie können die Anwendung auch offline schalten, Debug- und Ablaufverfolgungseinstellungen von hier aus verwalten sowie die benutzerdefinierte Standardfehlerseite angeben.
  • ProviderConfiguration : Konfigurieren Sie die anbieter, die von den Anwendungsdiensten verwendet werden.

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 daraus entfernen.

Screenshot: Optionen zum Verwalten von Benutzern und Rollen

Abbildung 1: Der Abschnitt "WSAT-Sicherheit" enthält Optionen zum Verwalten von Benutzern und Rollen.
(Klicken Sie hier, um das Bild in voller Größe anzuzeigen)

Leider ist der Zugriff auf WSAT nur lokal möglich. Sie können die WSAT nicht auf Ihrer Remoteproduktionswebsite besuchen. Wenn Sie besuchen www.yoursite.com/asp.netwebadminfiles/default.aspx , erhalten Sie die Antwort 404 Nicht gefunden. Der Code, der die WSAT-Klasse antreibt, verwendet die Membership Klassen und Roles im .NET Framework zum Erstellen, Bearbeiten und Löschen von Benutzern und Rollen. Diese Klassen konsultieren die Konfigurationsinformationen der Webanwendung, um zu bestimmen, welcher Anbieter verwendet werden soll. im Tutorial Konfigurieren einer Website, die Application Services verwendet, richten wir die Website Buchbewertungen so ein, dass die SqlMembershipProvider Anbieter und SqlRoleProvider verwendet werden. Dies umfasste das Hinzufügen von <membership> Abschnitten und <roleManager> 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> Abschnitte und <roleManager> auf die SqlMembershipProvider Anbieter und SqlRoleProvider in ihrem type Attribut 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, ReviewsConnectionStringdas 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 für die Produktionsdatenbank enthält.

Kurz gesagt: Auf WSAT muss lokal über die Entwicklungsumgebung zugegriffen werden, und es funktioniert mit den Benutzer- und Rolleninformationen in der in der databaseConnectionStrings.config Datei angegebenen Datenbank. Wenn wir also die Verbindungszeichenfolgeninformationen in der databaseConnectionStrings.config Datei in der Entwicklungsumgebung ä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 mit dem Kennwort "Password!" hinzu. (abzüglich der Anführungszeichen). Abbildung 2 zeigt den WSAT-Bildschirm beim Erstellen dieses Kontos.

Screenshot, der den neuen Benutzer zeigt, der in der Produktionsumgebung erstellt wurde.

Abbildung 2: Erstellen eines neuen Benutzers namens Sam in der Produktionsumgebung
(Klicken Sie hier, um das Bild in voller Größe anzuzeigen)

Da die Verbindungszeichenfolge in databaseConnectionStrings.config so geändert wurde, 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 zurück in die Entwicklungsdatenbank, und besuchen Sie dann die Login.aspx Seite in der Entwicklungsumgebung. Versuchen Sie, sich als Sam anzumelden (siehe Abbildung 3).

Screenshot, der zeigt, dass Sie sich in der Entwicklungsumgebung nicht als Sam anmelden können.

Abbildung 3: Sie können sich nicht als Sam in der Entwicklungsumgebung anmelden.
(Klicken Sie hier, um das Bild in voller Größe anzuzeigen)

Sie können sich nicht als Sam in der Entwicklungsumgebung anmelden, da die Benutzerkontoinformationen in der lokalen Datenbank nicht vorhanden sind. Stattdessen wurde der Produktionsdatenbank hinzugefügt. Um dies zu überprüfen, zeigen Sie den Inhalt der aspnet_Users Tabelle sowohl in der Entwicklungs- als auch in der Produktionsdatenbank an. In der Entwicklungsumgebung sollten nur drei Datensätze für die Benutzer Scott, Jisun und Alice vorhanden sein. Die aspnet_Users Tabelle in der Produktionsdatenbank enthält jedoch vier Datensätze: Scott, Jisun, Alice und Sam. Folglich kann sich Sam über die Website in der Produktion anmelden, aber nicht über die Entwicklungsumgebung.

Screenshot: Sam kann sich bei der Produktionswebsite anmelden.

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 WSAT fertig sind, andernfalls arbeiten Sie mit Produktionsdaten, wenn Sie den Standort über die Entwicklungsumgebung testen. Beachten Sie auch, dass die soeben besprochene Technik es uns ermöglicht, WSAT zum Remote-Verwalten von Benutzern und Rollen zu verwenden, Änderungen an anderen WSAT-Konfigurationsoptionen (Zugriffsregeln, SMTP-Einstellungen, Debug- und Ablaufverfolgungseinstellungen usw.) die Web.config Datei ändern. Daher gelten alle Änderungen an den Einstellungen für die Entwicklungsumgebung und nicht für die Produktionsumgebung.

Erstellen benutzerdefinierter Benutzer- und Rollenverwaltungswebseiten

WSAT bietet ein sofort einsatzbereites System zum Verwalten 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, enthalten 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 erheblich und sind für Websites, auf denen möglicherweise viele Administratoren oder Administratoren keinen Zugriff haben, oder den technischen Hintergrund, um Visual Studio zum Starten von WSAT zu verwenden, unerlässlich.

ASP.NET enthält eine Reihe von integrierten Anmelde-bezogenen Websteuerelementen, die die Implementierung vieler dieser administrativen Webseiten so einfach wie drag and drop machen. 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 WSAT in Abbildung 2 dasselbe CreateUserWizard-Steuerelement, das Sie Ihren Seiten hinzufügen können. Darüber hinaus stehen die Funktionen der Mitgliedschafts- und Rollendienste programmgesteuert über die Membership Klassen und Roles im .NET Framework zur Verfügung. Mit diesen Klassen können Sie Code schreiben, um Benutzer und Rollen zu erstellen, zu bearbeiten und zu löschen sowie Um 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 Tutorial Konfigurieren einer Website, die Application Services verwendet, habe ich dem Ordner eine Seite mit dem Admin Namen CreateAccount.aspxhinzugefügt. Auf dieser Seite kann ein Administrator der Website ein neues Benutzerkonto hinzufügen und angeben, ob der neu erstellte Benutzer die rolle "Admin" hat (siehe Abbildung 5).

Screenshot: Administratoren können neue Benutzerkonten erstellen.

Abbildung 5: Administratoren können neue Benutzerkonten erstellen
(Klicken Sie hier, um das Bild in voller Größe anzuzeigen)

Einen ausführlicheren Blick auf das Erstellen von Benutzer- und Rollenverwaltungsseiten sowie schrittweise Anweisungen zur Verwendung der Membership Klassen und Roles und der anmeldebezogenen ASP.NET Websteuerelemente finden Sie in den Tutorials zur Websitesicherheit. Dort finden Sie Anleitungen zum Erstellen von Webseiten für das Erstellen neuer Konten, das Erstellen und Verwalten von Rollen, das Zuweisen von Benutzern zu Rollen und andere allgemeine administrative Aufgaben.

Um WSAT-ähnliche Funktionen auf der Produktionswebsite zu implementieren, können Sie immer eine eigene Reihe von Webseiten erstellen, die die WSAT-Features implementieren. Um den Einstieg zu erleichtern, sehen Sie sich den WSAT-Quellcode an, der sich im Ordner %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFilesbefindet. Eine weitere Möglichkeit ist die Verwendung der WSAT-Alternative von Dan Clem, 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, schließt den Quellcode seiner Anwendung zum Download (in C#) ein und gibt schrittweise Anweisungen zum Hinzufügen seiner benutzerdefinierten WSAT zu einer gehosteten Website.

Zusammenfassung

Das ASP.NET Web Site Administration Tool (WSAT) kann zusammen mit den Anwendungsdiensten Mitgliedschaft und Rollen verwendet werden, um Benutzer- und Rolleninformationen für Ihre Website zu verwalten. Leider ist die WSAT nur lokal zugänglich und kann nicht von Ihrer Produktionswebsite aus besucht werden. Wenn Sie jedoch die Verbindungszeichenfolge in der Entwicklungsumgebung so ändern, dass sie auf die Produktionsdatenbank verweist, können Sie 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, sind das Starten von WSAT aus Visual Studio sowie temporäre Änderungen an den Verbindungszeichenfolgeninformationen erforderlich. WSAT bietet eine schnelle Möglichkeit zum Verwalten von Benutzern und Rollen in der Produktion, ist jedoch umständlich und eignet sich nicht gut für Websites mit mehreren Administratoren oder für Administratoren, die nicht mit Visual Studio und WSAT vertraut sind. Aus diesen Gründen enthalten die meisten Websites, die Benutzerkonten unterstützen, eine Reihe von administrativen Webseiten. Ein solcher Satz von Webseiten entfällt die Notwendigkeit für die WSAT und wird von verschiedenen administrativen Benutzern von jedem Computer verwendet.

Viel Spaß beim Programmieren!

Weitere Informationen

Weitere Informationen zu den in diesem Tutorial behandelten Themen finden Sie in den folgenden Ressourcen: