Megosztás a következőn keresztül:


Ú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

  1. A Web.config fájlban, az <system.web> elem alatt hozzon létre egy <membership> elemet.

  2. <membership> Az elem alatt hozzon létre egy <providers> elemet.

  3. Az elem gyermekként <providers> adjon hozzá egy <clear /> elemet a szolgáltatók gyűjteményének kiürítéséhez.

  4. <clear /> Az elem alatt hozzon létre egy <>addelemet a következő attribútumokkal a megfelelő értékekre állítva: name, , type, connectionStringName, applicationNameenablePasswordRetrieval, enablePasswordReset, requiresUniqueEmailrequiresQuestionAndAnswerés .passwordFormat Az name 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

  1. A konfigurációs fájlban a <system.serviceModel> elem alatt adjon hozzá egy <kötési> elemet.

  2. 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.

  3. Állítsa az mode elem attribútumát a <security> következőre Message: .

  4. Állítsa az clientCredentialType elem attribútumát a><messagekö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

  1. Gyermekként adjon hozzá egy <viselkedési elemet az <system.serviceModel> elemhez>

  2. Adjon hozzá egy serviceBehaviort> azbehaviors><elemhez.<

  3. Adjon hozzá egy viselkedést<>, és állítsa be az name attribútumot egy megfelelő értékre.

  4. Adjon hozzá szolgáltatás-hitelesítő <adatokat> az <behavior> elemhez.

  5. Adjon hozzá egy <userNameAuthentication tulajdonságot> az <serviceCredentials> elemhez.

  6. Állítsa be az attribútumot a userNamePasswordValidationMode következőre MembershipProvider: .

    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.

  7. Á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>

Lásd még