Udostępnij za pomocą


Użytkownicy i role w produkcyjnej witrynie internetowej (C#)

Autor : Scott Mitchell

Uwaga / Notatka

Od czasu napisania tego artykułu dostawcy członkostwa ASP.NET zostały zastąpione przez ASP.NET Identity. Zdecydowanie zalecamy aktualizowanie aplikacji w celu korzystania z platformy ASP.NET Identity , a nie dostawców członkostwa proponowanych w czasie pisania tego artykułu. ASP.NET Identity ma wiele zalet w stosunku do systemu członkostwa ASP.NET, w tym :

  • Lepsza wydajność
  • Ulepszona rozszerzalność i możliwość testowania
  • Obsługa uwierzytelniania OAuth, OpenID Connect i uwierzytelniania dwuskładnikowego
  • Obsługa identyfikacji opartej na żądaniach
  • Lepsza współdziałanie z platformą ASP.Net Core

Narzędzie ASP.NET Do administrowania witryną internetową (WSAT) udostępnia internetowy interfejs użytkownika do konfigurowania ustawień członkostwa i ról oraz tworzenia, edytowania i usuwania użytkowników i ról. Niestety, WSAT działa tylko wtedy, gdy jest uruchomiony na localhost, co oznacza, że nie można uzyskać dostępu do narzędzia administracyjnego produkcyjnej witryny za pośrednictwem przeglądarki. Dobrą wiadomością jest to, że istnieją obejścia, które umożliwiają zarządzanie użytkownikami i rolami w środowisku produkcyjnym. W tym samouczku omówiono te obejścia i inne.

Wprowadzenie

ASP.NET 2.0 wprowadzono szereg usług aplikacyjnych, które stanowią zestaw usług budulcowych, które można dodać do swojej aplikacji internetowej. Dodaliśmy usługi członkostwa i ról do witryny internetowej Przeglądy książek już w samouczku Konfigurowanie witryny internetowej korzystającej z usług aplikacji. Usługa członkostwa ułatwia tworzenie kont użytkowników i zarządzanie nimi; Usługa Role oferuje interfejs API do kategoryzowania użytkowników w grupach. Witryna Recenzje książek ma trzy konta użytkowników — Scott, Jisun i Alice — oraz jedną rolę, Administrator, ze Scottem i Jisunem w roli administratora.

Usługi aplikacji ASP.NET nie są powiązane z określoną implementacją. Zamiast tego należy poinstruować usługi aplikacji, aby korzystały z określonego dostawcy, a dostawca implementuje usługę przy użyciu określonej technologii. Skonfigurowaliśmy aplikację internetową Book Reviews do korzystania z dostawców SqlMembershipProvider i SqlRoleProvider dla usług członkostwa i ról. Ci dwaj dostawcy przechowują informacje o koncie użytkownika i roli w bazie danych programu SQL Server i są najczęściej używanymi dostawcami aplikacji internetowych hostowanych w firmie hostingowej sieci Web.

Typowym wyzwaniem dla deweloperów korzystających z usług Członkostwa i ról jest zarządzanie użytkownikami i rolami w środowisku produkcyjnym. Jak usunąć konto użytkownika z produkcyjnej witryny internetowej, dodać nową rolę lub dodać istniejącego użytkownika do istniejącej roli? W tym samouczku przedstawiono różne techniki zarządzania użytkownikami i rolami w produkcyjnej witrynie internetowej.

Korzystanie z narzędzia do administrowania witrynami sieci Web ASP.NET

ASP.NET zawiera narzędzie do administrowania witrynami sieci Web (WSAT), które ułatwia tworzenie kont użytkowników i ról oraz zarządzanie nimi oraz określanie reguł autoryzacji opartych na użytkownikach i rolach. Aby użyć programu WSAT, kliknij ikonę Konfiguracja ASP.NET w Eksploratorze Rozwiązań lub przejdź do menu Witryna internetowa lub Projekt i wybierz opcję Konfiguracja ASP.NET. Każda z metod uruchamia przeglądarkę internetową i wskazuje ją na WSAT pod adresem, na przykład: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication

WSAT jest podzielony na trzy sekcje:

  • Zabezpieczenia — zarządzanie użytkownikami, rolami i regułami autoryzacji.
  • ApplicationConfiguration — zarządzaj ustawieniami <appSettings> i SMTP tutaj. Możesz również przełączyć aplikację w tryb offline i zarządzać ustawieniami debugowania i śledzenia z tego miejsca, a także określić domyślną niestandardową stronę błędu.
  • ProviderConfiguration — skonfiguruj dostawców używanych przez usługi aplikacji.

Sekcja Zabezpieczenia (pokazana na rysunku 1) zawiera linki do tworzenia nowych użytkowników, zarządzania użytkownikami, tworzenia ról i zarządzania nimi oraz tworzenia reguł dostępu i zarządzania nimi. W tym miejscu możesz dodać nową rolę do systemu, usunąć istniejącego użytkownika lub dodać lub usunąć role z określonego konta użytkownika.

Zrzut ekranu przedstawiający opcje zarządzania użytkownikami i rolami.

Rysunek 1. Sekcja Zabezpieczenia WSAT zawiera opcje zarządzania użytkownikami i rolami
(Kliknij, aby wyświetlić obraz o pełnym rozmiarze)

Niestety, usługa WSAT jest dostępna tylko lokalnie. Nie można odwiedzić programu WSAT w zdalnej witrynie produkcyjnej, ponieważ jeśli odwiedzisz www.yoursite.com/asp.netwebadminfiles/default.aspx, otrzymasz odpowiedź 404 Nie znaleziono. Kod, który obsługuje usługę WSAT, używa klas Membership i Roles w programie .NET Framework do tworzenia, edytowania i usuwania użytkowników i ról. Te klasy konsultują się z informacjami o konfiguracji aplikacji internetowej, aby określić, jakiego dostawcy użyć; w samouczku Konfigurowanie witryny internetowej korzystającej z usług aplikacji skonfigurowaliśmy witrynę internetową Recenzje książek, aby korzystała z SqlMembershipProvider i SqlRoleProvider dostawców. Wiązało się to z dodaniem <membership> i <roleManager> sekcji do Web.config elementu.

<?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>

Należy pamiętać, że sekcje <membership> i <roleManager> odwołują się do dostawców SqlMembershipProvider i SqlRoleProvider w ich atrybucie type, odpowiednio. Ci dostawcy przechowują informacje o użytkowniku i roli w określonej bazie danych programu SQL Server. Baza danych używana przez tych dostawców jest określana przez connectionStringName atrybut ReviewsConnectionString, który jest zdefiniowany w ~/ConfigSections/databaseConnectionStrings.config pliku. Pamiętaj, że databaseConnectionStrings.config plik w środowisku deweloperskim zawiera parametry połączenia z bazą danych deweloperskich, natomiast databaseConnectionStrings.config plik w środowisku produkcyjnym zawiera parametry połączenia z produkcyjną bazą danych.

W skrócie program WSAT musi być dostępny lokalnie za pośrednictwem środowiska programistycznego i współdziała z informacjami o użytkownikach i rolach w bazie danych określonej w databaseConnectionStrings.config pliku. W związku z tym, jeśli zmienimy informacje o parametrach połączenia w pliku w databaseConnectionStrings.config środowisku deweloperskim, możemy użyć programu WSAT lokalnie do zarządzania użytkownikami i rolami w środowisku produkcyjnym.

Aby zilustrować tę funkcję, otwórz databaseConnectionStrings.config plik w programie Visual Studio w środowisku deweloperskim i zastąp parametry połączenia bazy danych programowania parametrami połączenia produkcyjnej bazy danych. Następnie uruchom usługę WSAT, przejdź na kartę Zabezpieczenia i dodaj nowego użytkownika o nazwie Sam. Rysunek 2 przedstawia ekran WSAT podczas tworzenia tego konta.

Zrzut ekranu przedstawiający nowego użytkownika utworzonego w środowisku produkcyjnym.

Rysunek 2. Tworzenie nowego użytkownika o nazwie Sam w środowisku produkcyjnym
(Kliknij, aby wyświetlić obraz o pełnym rozmiarze)

Ponieważ zmieniliśmy parametry połączenia w databaseConnectionStrings.config programie , aby wskazywały serwer produkcyjnej bazy danych, Sam został dodany jako użytkownik w środowisku produkcyjnym. Aby to sprawdzić, zmień parametry połączenia w databaseConnectionStrings.config pliku z powrotem na bazę danych deweloperskich, a następnie odwiedź Login.aspx stronę w środowisku deweloperów. Spróbuj zalogować się jako Sam (zobacz Rysunek 3).

Zrzut ekranu pokazujący, że nie można zalogować się jako Sam w środowisku projektowym.

Rysunek 3. Nie można zalogować się jako Sam w środowisku deweloperskim
(Kliknij, aby wyświetlić obraz o pełnym rozmiarze)

Nie można zalogować się jako Sam w środowisku projektowym, ponieważ informacje o koncie użytkownika nie istnieją w lokalnej bazie danych. Zamiast tego element został dodany do produkcyjnej bazy danych. Aby to sprawdzić, wyświetl zawartość aspnet_Users tabeli zarówno w bazach danych deweloperskich, jak i produkcyjnych. W środowisku deweloperskim powinny istnieć tylko trzy rekordy dla użytkowników Scott, Jisun i Alice. aspnet_Users Jednak tabela w produkcyjnej bazie danych zawiera cztery rekordy: Scott, Jisun, Alice i Sam. W związku z tym Sam może zalogować się przez witrynę internetową w środowisku produkcyjnym, ale nie przez środowisko programistyczne.

Zrzut ekranu pokazujący, że Sam może zalogować się na produkcyjną stronę internetową.

Rysunek 4. Sam może zalogować się w produkcyjnej witrynie internetowej
(Kliknij, aby wyświetlić obraz o pełnym rozmiarze)

Uwaga / Notatka

Nie zapomnij zmienić ciągu połączenia w pliku databaseConnectionStrings.config z powrotem na ciąg połączenia bazy danych deweloperskiej po zakończeniu pracy z WSAT, w przeciwnym razie będziesz pracować z danymi produkcyjnymi podczas testowania strony za pośrednictwem środowiska programistycznego. Należy również pamiętać, że chociaż omówiona technika umożliwia nam zdalne zarządzanie użytkownikami i rolami przy użyciu programu WSAT, zmiany w dowolnej innej opcji konfiguracji programu WSAT (reguły dostępu, ustawienia SMTP, debugowanie i śledzenie itd.) modyfikują Web.config plik. W związku z tym wszelkie zmiany wprowadzone w ustawieniach dotyczą środowiska deweloperskiego, a nie środowiska produkcyjnego.

Tworzenie niestandardowych stron sieci Web zarządzania użytkownikami i rolami

Usługa WSAT udostępnia wbudowany system do zarządzania użytkownikami i rolami, ale można go uruchamiać tylko lokalnie i wymaga wprowadzenia zmian w informacjach o parametrach połączenia w celu zarządzania użytkownikami i rolami w środowisku produkcyjnym. Większość witryn internetowych obsługujących konta użytkowników obejmuje również wiele stron zarządzania użytkownikami i rolami, które umożliwiają administratorom zarządzanie użytkownikami i rolami ze stron witryny. Takie strony administracyjne oparte na sieci Web ułatwiają zarządzanie użytkownikami i rolami i są niezbędne w przypadku witryn, w których może być wielu administratorów lub administratorów, którzy nie mają dostępu do programu Visual Studio ani wystarczającej wiedzy technicznej do uruchomienia programu WSAT.

ASP.NET zawiera wiele wbudowanych kontrolek Web związanych z logowaniem, które ułatwiają implementację wielu z tych administracyjnych stron internetowych, tak łatwą jak metoda przeciągnij i upuść. Na przykład można utworzyć stronę dla administratorów, aby utworzyć nowe konto użytkownika, przeciągając kontrolkę CreateUserWizard na stronę i ustawiając kilka właściwości. W rzeczywistości strona tworzenia użytkowników w programie WSAT pokazanym na rysunku 2 używa tej samej kontrolki CreateUserWizard, którą można dodać do stron. Ponadto funkcje usług Członkostwa i Ról są dostępne programistycznie za pośrednictwem klas Membership i Roles w programie .NET Framework. Dzięki tym klasom można napisać kod do tworzenia, edytowania i usuwania użytkowników i ról, a także dodawania lub usuwania użytkowników do ról, określania, którzy użytkownicy znajdują się w jakich rolach oraz wykonywania innych zadań związanych z użytkownikami i rolami.

W samouczku Konfigurowanie witryny internetowej korzystającej z usług aplikacji dodałem stronę do folderu Admin o nazwie CreateAccount.aspx. Ta strona umożliwia administratorowi dodanie nowego konta użytkownika do witryny i określenie, czy nowo utworzony użytkownik znajduje się w roli administratora (zobacz Rysunek 5).

Zrzut ekranu pokazujący, że administratorzy mogą tworzyć nowe konta użytkowników.

Rysunek 5. Administratorzy mogą tworzyć nowe konta użytkowników
(Kliknij, aby wyświetlić obraz o pełnym rozmiarze)

Aby uzyskać bardziej szczegółowe informacje na temat tworzenia stron do administrowania użytkownikami i rolami, wraz z instrukcjami krok po kroku dotyczącymi używania klas Membership i kontrolek sieci Web Roles związanych z logowaniem ASP.NET, zapoznaj się z moimi samouczkami dotyczącymi zabezpieczeń witryny internetowej. W tym miejscu znajdziesz wskazówki dotyczące tworzenia stron internetowych na potrzeby tworzenia nowych kont, tworzenia ról i zarządzania nimi, przypisywania użytkowników do ról i innych typowych zadań administracyjnych.

Aby zaimplementować funkcje podobne do WSAT w produkcyjnej witrynie internetowej, zawsze można utworzyć własną serię stron internetowych, które implementują funkcje WSAT. Aby ułatwić rozpoczęcie pracy, zapoznaj się z kodem źródłowym WSAT znajdującym się w folderze %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles. Inną opcją jest użycie alternatywy WSAT Dan Clema, którą dzieli w swoim artykule Rolling Your Own Web Site Administration Tool. Dan przeprowadzi czytelników przez proces tworzenia niestandardowego narzędzia przypominającego WSAT, zawiera kod źródłowy jego aplikacji do pobrania (w języku C#) i zawiera instrukcje krok po kroku dotyczące dodawania niestandardowego narzędzia WSAT do hostowanej witryny internetowej.

Podsumowanie

Narzędzie ASP.NET Web Site Administration Tool (WSAT) może być używane razem z usługami aplikacyjnymi Członkostwa i Ról w celu zarządzania informacjami o użytkownikach i rolach twojej witryny. Niestety, usługa WSAT jest dostępna tylko lokalnie i nie może być odwiedzana z produkcyjnej witryny internetowej. Jednak zmieniając parametry połączenia w środowisku deweloperskim tak, aby wskazywały produkcyjną bazę danych, można użyć programu WSAT do zarządzania użytkownikami i rolami w produkcyjnej witrynie internetowej.

Chociaż podejście WSAT zapewnia szybki i łatwy sposób zarządzania użytkownikami i rolami, wymaga uruchomienia programu WSAT z programu Visual Studio, a także tymczasowych zmian w informacjach o parametrach połączenia. WSAT oferuje szybki sposób zarządzania użytkownikami i rolami w środowisku produkcyjnym, ale jest uciążliwy i nie działa dobrze w przypadku witryn internetowych z wieloma administratorami lub administratorami, którzy nie mają lub nie znają programu Visual Studio i WSAT. Z tych powodów większość witryn internetowych obsługujących konta użytkowników obejmuje zestaw administracyjnych stron sieci Web. Taki zestaw stron sieci Web eliminuje potrzebę korzystania z programu WSAT i jest używany przez różnych administratorów z dowolnego komputera.

Szczęśliwe programowanie!

Dalsza lektura

Aby uzyskać więcej informacji na temat tematów omówionych w tym samouczku, zapoznaj się z następującymi zasobami: