Postupy: Používání poskytovatele členství ASP.NET
Poskytovatel členství ASP.NET je funkce, která vývojářům ASP.NET umožňuje vytvářet weby, které uživatelům umožňují vytvářet jedinečné kombinace uživatelských jmen a hesel. Díky tomuto zařízení může každý uživatel vytvořit účet s webem a přihlásit se k výhradnímu přístupu k webu a jeho službám. To je na rozdíl od zabezpečení Windows, které vyžaduje, aby uživatelé měli účty v doméně Windows. Místo toho může každý uživatel, který zadá své přihlašovací údaje (kombinaci uživatelského jména a hesla), použít web a jeho služby.
Ukázkovou aplikaci najdete v tématu Členství a Zprostředkovatel rolí. Informace o použití funkce ASP.NET zprostředkovatele role naleznete v tématu Postupy: Použití poskytovatele role ASP.NET se službou.
Funkce členství vyžaduje použití databáze SQL Serveru k uložení informací o uživateli. Tato funkce také obsahuje metody výzvy k zadání otázky všem uživatelům, kteří zapomněli heslo.
Vývojáři windows Communication Foundation (WCF) můžou tyto funkce využívat pro účely zabezpečení. Při integraci do aplikace WCF musí uživatelé zadat kombinaci uživatelského jména a hesla klientské aplikaci WCF. Pokud chcete přenést data do služby WCF, použijte vazbu, která podporuje přihlašovací údaje uživatelského jména a hesla, jako WSHttpBinding je například (v konfiguraci, <wsHttpBinding>) a nastavte typ přihlašovacích údajů klienta na UserName
. Zabezpečení WCF ve službě ověřuje uživatele na základě uživatelského jména a hesla a také přiřadí roli určenou rolí ASP.NET.
Poznámka:
WCF neposkytuje metody pro naplnění databáze kombinacemi uživatelského jména a hesla ani jinými informacemi o uživateli.
Konfigurace zprostředkovatele členství
V souboru Web.config pod
<system.web>
elementem<membership>
vytvořte element.Pod elementem
<membership>
<providers>
vytvořte prvek.Jako podřízený prvek
<providers>
přidejte<clear />
prvek, který vyprázdní kolekci zprostředkovatelů.Pod elementem vytvořte prvek s následujícími atributy nastavenými na odpovídající hodnoty:
name
,type
, ,applicationName
connectionStringName
,enablePasswordRetrieval
,enablePasswordReset
, ,requiresUniqueEmail
requiresQuestionAndAnswer
apasswordFormat
.<add>
<clear />
Atributname
se použije později jako hodnota v konfiguračním souboru. Následující příklad jej nastaví naSqlMembershipProvider
.Následující příklad ukazuje oddíl konfigurace.
<!-- Configure the Sql Membership Provider --> <membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15"> <providers> <clear /> <add name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SqlConn" applicationName="MembershipAndRoleProviderSample" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" /> </providers> </membership>
Konfigurace zabezpečení služby tak, aby přijímala kombinaci uživatelského jména a hesla
V konfiguračním souboru v části system.serviceModel> element přidejte< element bindings>.<
Přidejte wsHttpBinding ><do oddílu vazeb. Další informace o vytvoření elementu vazby WCF naleznete v tématu Postupy: Určení vazby služby v konfiguraci.
mode
Nastavte atribut<security>
prvku naMessage
.clientCredentialType
Nastavte atribut<message>
prvku naUserName
. Určuje, že se jako přihlašovací údaje klienta použije pár uživatelského jména a hesla.Následující příklad ukazuje konfigurační kód pro vazbu.
<system.serviceModel> <bindings> <wsHttpBinding> <!-- Set up a binding that uses UserName as the client credential type --> <binding name="MembershipBinding"> <security mode ="Message"> <message clientCredentialType ="UserName"/> </security> </binding> </wsHttpBinding> </bindings> </system.serviceModel>
Konfigurace služby pro použití zprostředkovatele členství
Jako podřízený prvek
<system.serviceModel>
přidejte <element behaviors> .Přidejte do elementu <
<behaviors>
serviceBehaviors.><Přidejte chování> a nastavte
name
atribut na odpovídající hodnotu.Přidejte do elementu <
<behavior>
serviceCredentials.>Přidejte do elementu <
<serviceCredentials>
userNameAuthentication.>Nastavte atribut na
userNamePasswordValidationMode
MembershipProvider
.Důležité
Pokud hodnota
userNamePasswordValidationMode
není nastavená, WCF místo zprostředkovatele členství ASP.NET používá ověřování systému Windows.membershipProviderName
Nastavte atribut na název zprostředkovatele (zadaný při přidání zprostředkovatele v prvním postupu v tomto tématu). Následující příklad ukazuje<serviceCredentials>
fragment tohoto bodu.<behaviors> <serviceBehaviors> <behavior name="MyServiceBehavior"> <serviceCredentials> <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="SqlMembershipProvider" /> </serviceCredentials> </behavior> </serviceBehaviors> </behaviors>
Příklad
Následující kód ukazuje konfiguraci pro službu, která používá funkci členství v ASP.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service behaviorConfiguration="MyServiceBehavior" name="Microsoft.Samples.GettingStarted.CalculatorService">
<endpoint address="http://microsoft.com/WCFservices/Calculator"
binding="wsHttpBinding" bindingConfiguration="MembershipBinding"
name="ASPmemberUserName" contract="Microsoft.Samples.GettingStarted.ICalculator" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceCredentials>
<userNameAuthentication
userNamePasswordValidationMode="MembershipProvider"
membershipProviderName="SqlMembershipProvider" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="MembershipBinding">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
</configuration>