Útmutató: A ASP.NET tagságszolgáltató használata
A ASP.NET tagságszolgáltató olyan szolgáltatás, amely lehetővé teszi ASP.NET fejlesztők számára, hogy olyan webhelyeket hozzanak létre, amelyek lehetővé teszik a felhasználók számára, hogy egyedi felhasználóneveket és jelszókombinációkat hozzanak létre. Ezzel a lehetőséggel bármely felhasználó létrehozhat egy fiókot a webhelyen, és bejelentkezhet a webhelyhez és szolgáltatásaihoz való kizárólagos hozzáféréshez. Ez ellentétben áll a Windows biztonságával, amely megköveteli, hogy a felhasználók windowsos tartománybeli fiókokkal rendelkezzenek. Ehelyett minden felhasználó, aki megadja a hitelesítő adatait (a felhasználónév/jelszó kombináció) használhatja a webhelyet és annak szolgáltatásait.
Egy mintaalkalmazást a Tagság és a Szerepkör-szolgáltató című témakörben talál. A ASP.NET szerepkör-szolgáltatói funkcióval kapcsolatos információkért lásd : Útmutató: A ASP.NET szerepkör-szolgáltató használata szolgáltatással.
A tagsági funkció használatához SQL Server-adatbázist kell használni a felhasználói adatok tárolásához. A funkció olyan metódusokat is tartalmaz, amelyek segítségével kérdéseket tehet fel azoknak a felhasználóknak, akik elfelejtették a jelszavukat.
A Windows Communication Foundation (WCF) fejlesztői biztonsági okokból kihasználhatják ezeket a funkciókat. A WCF-alkalmazásba integrálva a felhasználóknak meg kell adniuk egy felhasználónév-jelszó kombinációt a WCF-ügyfélalkalmazásnak. Az adatok WCF szolgáltatásba való átviteléhez használjon egy olyan kötést, amely támogatja a felhasználónevek/jelszavak hitelesítő adatait, például a WSHttpBinding (konfigurációban <a wsHttpBindinget>), és állítsa be az ügyfél hitelesítő adatainak típusát UserName
. A szolgáltatásban a WCF-biztonság a felhasználónév és a jelszó alapján hitelesíti a felhasználót, és hozzárendeli a ASP.NET szerepkör által megadott szerepkört is.
Feljegyzés
A WCF nem biztosít metódusokat az adatbázis felhasználónévvel/jelszókombinációkkal vagy más felhasználói adatokkal való feltöltéséhez.
A tagságszolgáltató konfigurálása
A Web.config fájlban, az <
system.web
> elem alatt hozzon létre egy <membership
> elemet.<membership>
Az elem alatt hozzon létre egy<providers>
elemet.Az elem gyermekként <
providers
> adjon hozzá egy<clear />
elemet a szolgáltatók gyűjteményének kiürítéséhez.<clear />
Az elem alatt hozzon létre egy <>add
elemet a következő attribútumokkal a megfelelő értékekre állítva:name
, ,type
,connectionStringName
,applicationName
enablePasswordRetrieval
,enablePasswordReset
,requiresUniqueEmail
requiresQuestionAndAnswer
és .passwordFormat
Azname
attribútumot később használják értékként a konfigurációs fájlban. Az alábbi példa a következő értékre állítja.SqlMembershipProvider
Az alábbi példa a konfigurációs szakaszt mutatja be.
<!-- 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>
A szolgáltatásbiztonság konfigurálása a felhasználónév/jelszó kombináció elfogadásához
A konfigurációs fájlban a <system.serviceModel> elem alatt adjon hozzá egy <kötési> elemet.
Adjon hozzá wsHttpBindinget <> a kötések szakaszhoz. A WCF-kötéselemek létrehozásáról további információt a Hogyan lehet: Szolgáltatáskötés megadása a konfigurációban című témakörben talál.
Állítsa az
mode
elem attribútumát a<security>
következőreMessage
: .Állítsa az
clientCredentialType
elem attribútumát a><message
következőreUserName
: . Ez azt határozza meg, hogy a rendszer egy felhasználónevet/jelszópárt használjon az ügyfél hitelesítő adataiként.Az alábbi példa a kötés konfigurációs kódját mutatja be.
<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>
Szolgáltatás konfigurálása a tagságszolgáltató használatára
Gyermekként adjon hozzá egy <viselkedési elemet az
<system.serviceModel>
elemhez>Adjon hozzá egy serviceBehaviort> az
behaviors
><elemhez.<Adjon hozzá egy viselkedést<>, és állítsa be az
name
attribútumot egy megfelelő értékre.Adjon hozzá szolgáltatás-hitelesítő <adatokat> az <
behavior
> elemhez.Adjon hozzá egy <userNameAuthentication tulajdonságot> az
<serviceCredentials>
elemhez.Állítsa be az attribútumot a
userNamePasswordValidationMode
következőreMembershipProvider
: .Fontos
Ha az érték nincs beállítva, a
userNamePasswordValidationMode
WCF windowsos hitelesítést használ a ASP.NET tagságszolgáltató helyett.Állítsa az
membershipProviderName
attribútumot a szolgáltató nevére (a jelen témakör első eljárásában a szolgáltató hozzáadásakor van megadva). Az alábbi példában az ehhez a<serviceCredentials>
ponthoz megadott töredék látható.<behaviors> <serviceBehaviors> <behavior name="MyServiceBehavior"> <serviceCredentials> <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="SqlMembershipProvider" /> </serviceCredentials> </behavior> </serviceBehaviors> </behaviors>
Példa
Az alábbi kód az ASP tagsági funkciót használó szolgáltatás konfigurációját mutatja be.
<?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>