Uživatelé a role na produkčním webu (C#)
Poznámka
Od napsání tohoto článku se zprostředkovatelé členství ASP.NET nahradili službou ASP.NET Identity. Důrazně doporučujeme aktualizovat aplikace tak, aby používaly platformu ASP.NET Identity Platform místo zprostředkovatelů členství, které se objevovalo v době psaní tohoto článku. ASP.NET Identity má oproti systému členství ASP.NET řadu výhod, mezi které patří:
- Lepší výkon
- Vylepšená rozšiřitelnost a testovatelnost
- Podpora OAuth, OpenID Connect a dvojúrovňového ověřování
- Podpora identit založených na deklarací identity
- Lepší interoperabilita s ASP.Net Core
Nástroj pro správu webu ASP.NET (WSAT) poskytuje webové uživatelské rozhraní pro konfiguraci nastavení členství a rolí a pro vytváření, úpravy a odstraňování uživatelů a rolí. Bohužel, WSAT funguje pouze při návštěvě z localhost, což znamená, že se nemůžete dostat na produkční webové stránky administrační nástroj přes prohlížeč. Dobrou zprávou je, že existují alternativní řešení, která umožňují správu uživatelů a rolí v produkčním prostředí. Tento kurz se zabývá těmito a dalšími alternativními řešeními.
Úvod
ASP.NET 2.0 zavedli řadu aplikačních služeb, což je sada služeb stavebních bloků, které můžete přidat do webové aplikace. Služby Členství a role jsme přidali na web Kontroly knih zpět v kurzu Konfigurace webu, který používá aplikační služby. Členská služba usnadňuje vytváření a správu uživatelských účtů; Služba Rolí nabízí rozhraní API pro kategorizaci uživatelů do skupin. Web Recenze knih má tři uživatelské účty – Scott, Jisun a Alice – a jednu roli, Správa, v Správa roli Scott a Jisun.
ASP. Aplikační služby na platformě NET nejsou vázány na konkrétní implementaci. Místo toho dáte aplikačním službám pokyn, aby používaly konkrétního poskytovatele, a tento poskytovatel službu implementuje pomocí konkrétní technologie. Nakonfigurovali jsme webovou aplikaci Kontroly knih tak, aby používala SqlMembershipProvider
poskytovatele a SqlRoleProvider
pro služby Členství a Role. Tito dva zprostředkovatelé ukládají informace o uživatelských účtech a rolích do databáze SQL Server a jsou nejčastěji používanými poskytovateli internetových webových aplikací hostovaných ve společnosti poskytující hosting webů.
Běžnou výzvou pro vývojáře, kteří používají služby Členství a Role, je správa uživatelů a rolí v produkčním prostředí. Jak odstraníte uživatelský účet z produkčního webu, přidáte novou roli nebo přidáte existujícího uživatele do existující role? V tomto kurzu se seznámíte s různými technikami správy uživatelů a rolí na produkčním webu.
Použití nástroje pro správu webu ASP.NET
ASP.NET zahrnuje nástroj pro správu webu (WSAT), který usnadňuje vytváření a správu uživatelských účtů a rolí a zadávání autorizačních pravidel založených na uživatelích a rolích. Pokud chcete použít WSAT, klikněte na ikonu konfigurace ASP.NET v Průzkumník řešení nebo přejděte do nabídky Web nebo Projekt a zvolte možnost konfigurace ASP.NET. Oba přístupy spustí webový prohlížeč a odesílají ho na WSAT na adresu, jako je: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication
Wsat je rozdělen do tří částí:
- Zabezpečení – správa uživatelů, rolí a autorizačních pravidel
- ApplicationConfiguration – tady můžete spravovat <nastavení appSettings> a SMTP. Můžete také převést aplikaci do režimu offline a spravovat nastavení ladění a trasování a také zadat výchozí vlastní chybovou stránku.
- ProviderConfiguration – nakonfigurujte zprostředkovatele používané aplikačními službami.
Část Zabezpečení (znázorněná na obrázku 1) obsahuje odkazy pro vytváření nových uživatelů, správu uživatelů, vytváření a správu rolí a vytváření a správu pravidel přístupu. Tady můžete do systému přidat novou roli, odstranit existujícího uživatele nebo přidat nebo odebrat role z určitého uživatelského účtu.
Obrázek 1: Část Zabezpečení WSAT obsahuje možnosti pro správu uživatelů a rolí
(Kliknutím zobrazíte obrázek v plné velikosti.)
WsAT je bohužel přístupný jenom místně. WsAT nemůžete navštívit na svém vzdáleném produkčním webu. Pokud navštívíte www.yoursite.com/asp.netwebadminfiles/default.aspx
, dostanete odpověď 404 Nenalezena. Kód, který využívá WSAT, používá Membership
třídy a Roles
v rozhraní .NET Framework k vytváření, úpravám a odstraňování uživatelů a rolí. Tyto třídy nahlédnou do informací o konfiguraci webové aplikace určit, jakého zprostředkovatele použít; v kurzu Konfigurace webu, který používá aplikační služby, jsme web Book Reviews nastavili tak, aby používal SqlMembershipProvider
poskytovatele a SqlRoleProvider
. To znamenalo přidání <membership>
oddílů a <roleManager>
do 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>
Všimněte si <membership>
, že oddíly a <roleManager>
odkazují na SqlMembershipProvider
poskytovatele a SqlRoleProvider
ve svém type
atributu v uvedeném pořadí. Tito poskytovatelé ukládají informace o uživateli a rolích do zadané databáze SQL Server. Databáze používaná těmito poskytovateli je určena atributem connectionStringName
ReviewsConnectionString
, který je definován v ~/ConfigSections/databaseConnectionStrings.config
souboru . Vzpomeňte si, že databaseConnectionStrings.config
soubor ve vývojovém prostředí obsahuje připojovací řetězec k vývojové databázi, zatímco databaseConnectionStrings.config
soubor v produkčním prostředí obsahuje připojovací řetězec k produkční databázi.
Stručně řečeno, WSAT musí být přístupný místně prostřednictvím vývojového prostředí a funguje s informacemi o uživateli a roli v databázi zadané v databaseConnectionStrings.config
souboru. Pokud tedy změníme informace o připojovacím řetězci v databaseConnectionStrings.config
souboru ve vývojovém prostředí, můžeme k místní správě uživatelů a rolí v produkčním prostředí použít WSAT.
Pro ilustraci této funkce otevřete databaseConnectionStrings.config
soubor v sadě Visual Studio ve vývojovém prostředí a nahraďte připojovací řetězec vývojové databáze připojovacím řetězcem produkční databáze. Pak spusťte WSAT, přejděte na kartu Zabezpečení a přidejte nového uživatele s názvem Sam s heslem "password!" (bez uvozovek). Obrázek 2 ukazuje obrazovku WSAT při vytváření tohoto účtu.
Obrázek 2: Vytvoření nového uživatele s názvem Sam v produkčním prostředí
(Kliknutím zobrazíte obrázek v plné velikosti.)
Vzhledem k tomu, že jsme změnili připojovací řetězec v souboru databaseConnectionStrings.config
tak, aby odkazoval na produkční databázový server, přidal se Sam jako uživatel do produkčního prostředí. Pokud to chcete ověřit, změňte připojovací řetězec v databaseConnectionStrings.config
souboru zpět na vývojovou databázi a pak přejděte na Login.aspx
stránku ve vývojovém prostředí. Zkuste se přihlásit jako Sam (viz Obrázek 3).
Obrázek 3: Ve vývojovém prostředí se nemůžete přihlásit jako Sam
(Kliknutím zobrazíte obrázek v plné velikosti.)
Ve vývojovém prostředí se nemůžete přihlásit jako Sam, protože informace o uživatelském účtu v místní databázi neexistují. Místo toho je přidaný do produkční databáze. Chcete-li to ověřit, zobrazte obsah aspnet_Users
tabulky ve vývojové i produkční databázi. Ve vývojovém prostředí by měly být pouze tři záznamy pro uživatele Scott, Jisun a Alice. aspnet_Users
Tabulka v produkční databázi ale obsahuje čtyři záznamy: Scott, Jisun, Alice a Sam. V důsledku toho se Sam může přihlásit prostřednictvím webu v produkčním prostředí, ale ne prostřednictvím vývojového prostředí.
Obrázek 4: Sam se může přihlásit na produkčním webu
(Kliknutím zobrazíte obrázek v plné velikosti.)
Poznámka
Po ukončení práce s WSAT nezapomeňte změnit připojovací řetězec v databaseConnectionStrings.config
souboru zpět na připojovací řetězec vývojové databáze, jinak budete při testování lokality prostřednictvím vývojového prostředí pracovat s produkčními daty. Mějte také na paměti, že zatímco technika, kterou jsme právě probírali, nám umožňuje použít WSAT ke vzdálené správě uživatelů a rolí, změny kterékoli z dalších možností konfigurace WSAT (pravidla přístupu, nastavení protokolu SMTP, nastavení ladění a trasování atd.) upraví Web.config
soubor. V důsledku toho všechny změny provedené v nastavení platí pro vývojové prostředí, a ne pro produkční prostředí.
Vytváření vlastních webových stránek správy uživatelů a rolí
WSAT poskytuje předzběrný systém pro správu uživatelů a rolí, ale dá se spustit jenom místně a vyžaduje změny informací o připojovacím řetězci, aby bylo možné spravovat uživatele a role v produkčním prostředí. Většina webů, které podporují uživatelské účty, obsahuje také řadu webových stránek správy uživatelů a rolí, které správcům umožňují spravovat uživatele a role ze stránek v rámci webu. Tyto webové stránky správy usnadňují správu uživatelů a rolí a jsou nezbytné pro weby, na kterých může být mnoho správců nebo správců, kteří nemají přístup nebo technické zázemí pro použití sady Visual Studio ke spuštění WSAT.
ASP.NET obsahuje řadu předdefinovaných webových ovládacích prvků souvisejících s přihlášením, které usnadňují implementaci mnoha těchto webových stránek pro správu, například přetažení. Můžete například vytvořit stránku pro správce k vytvoření nového uživatelského účtu přetažením ovládacího prvku CreateUserWizard na stránku a nastavením několika vlastností. Ve skutečnosti stránka pro vytváření uživatelů ve WSAT zobrazená na obrázku 2 používá stejný ovládací prvek CreateUserWizard, který můžete přidat na stránky. Kromě toho jsou funkce služeb členství a rolí dostupné programově prostřednictvím Membership
tříd a Roles
v rozhraní .NET Framework. Pomocí těchto tříd můžete napsat kód pro vytváření, úpravy a odstraňování uživatelů a rolí a také pro přidávání nebo odebírání uživatelů do rolí, určení uživatelů v jakých rolích a provádění dalších úloh souvisejících s uživateli a rolemi.
V kurzu Konfigurace webu, který používá aplikační služby jsem do složky přidal(a) stránku Admin
s názvem CreateAccount.aspx
. Tato stránka umožňuje správci přidat na web nový uživatelský účet a určit, jestli má nově vytvořený uživatel roli Správa (viz Obrázek 5).
Obrázek 5: Správci můžou vytvářet nové uživatelské účty
(Kliknutím zobrazíte obrázek v plné velikosti.)
Podrobnější pohled na vytváření stránek pro správu uživatelů a rolí spolu s podrobnými pokyny k používání Membership
tříd a a Roles
webových ovládacích prvků souvisejících ASP.NET s přihlášením, nezapomeňte si přečíst moje kurzy zabezpečení webu. Tady najdete pokyny k vytváření webových stránek pro vytváření nových účtů, vytváření a správu rolí, přiřazování uživatelů k rolím a další běžné úlohy správy.
K implementaci funkcí podobných WSAT na produkčním webu můžete vždy vytvořit vlastní řadu webových stránek, které implementují funkce WSAT. Pokud chcete začít, podívejte se na zdrojový kód WSAT, který se nachází ve složce %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles
. Další možností je použít dana Clema alternativu WSAT, kterou sdílí ve svém článku Rolling Your Own Web Site Administration Tool. Dan provede čtenáře procesem vytvoření vlastního nástroje podobného WSAT, zahrne zdrojový kód své aplikace ke stažení (v jazyce C#) a poskytne podrobné pokyny pro přidání vlastního WSAT na hostovaný web.
Souhrn
Nástroj ASP.NET Web Site Administration Tool (WSAT) lze použít společně s aplikačními službami Členství a Role ke správě informací o uživatelích a rolích pro váš web. WsAT je bohužel přístupný pouze místně a nelze ho navštívit z vašeho produkčního webu. Pokud ale změníte připojovací řetězec ve vývojovém prostředí tak, aby odkazoval na produkční databázi, můžete použít WSAT ke správě uživatelů a rolí na produkčním webu.
Přístup WSAT sice poskytuje rychlý a snadný způsob správy uživatelů a rolí, ale vyžaduje spuštění WSAT ze sady Visual Studio a také dočasné změny informací o připojovacím řetězci. WSAT nabízí rychlý způsob, jak spravovat uživatele a role v produkčním prostředí, ale je těžkopádný a nefunguje dobře pro weby s více správci nebo správci, kteří nemají nebo nejsou obeznámeni se sadou Visual Studio a WSAT. Z těchto důvodů většina webů, které podporují uživatelské účty, obsahuje sadu webových stránek pro správu. Taková sada webových stránek eliminuje potřebu WSAT a používá různé administrativní uživatele z libovolného počítače.
Všechno nejlepší na programování!
Další čtení
Další informace o tématech probíraných v tomto kurzu najdete v následujících zdrojích informací:
- Zkoumání asp. Členství, role a profil pro platformu NET
- Uvedení vlastního nástroje pro správu webu
- Přehled nástroje pro správu webu
- Kurzy zabezpečení webů