Dela via


Gör så här: Använd ASP.NET-medlemskapsprovidern

ASP.NET-medlemskapsprovidern är en funktion som gör det möjligt för ASP.NET utvecklare att skapa webbplatser som gör det möjligt för användare att skapa unika kombinationer av användarnamn och lösenord. Med den här funktionen kan alla användare upprätta ett konto med webbplatsen och logga in för exklusiv åtkomst till webbplatsen och dess tjänster. Detta står i kontrast till Windows-säkerhet, vilket kräver att användare har konton i en Windows-domän. I stället kan alla användare som anger sina autentiseringsuppgifter (kombinationen användarnamn/lösenord) använda webbplatsen och dess tjänster.

Ett exempelprogram finns i Medlemskap och rollprovider. Information om hur du använder funktionen ASP.NET rollprovider finns i Så här använder du rollprovidern ASP.NET med en tjänst.

Medlemskapsfunktionen kräver att du använder en SQL Server-databas för att lagra användarinformationen. Funktionen innehåller också metoder för att fråga med en fråga alla användare som har glömt sitt lösenord.

Utvecklare av Windows Communication Foundation (WCF) kan dra nytta av dessa funktioner i säkerhetssyfte. När de är integrerade i ett WCF-program måste användarna ange en kombination av användarnamn/lösenord till WCF-klientprogrammet. Om du vill överföra data till WCF-tjänsten använder du en bindning som stöder autentiseringsuppgifter för användarnamn/lösenord, till exempel WSHttpBinding (i konfigurationen <, wsHttpBinding>) och anger klientens autentiseringsuppgiftstyp till UserName. I tjänsten autentiserar WCF-säkerheten användaren baserat på användarnamnet och lösenordet och tilldelar även rollen som anges av ASP.NET roll.

Kommentar

WCF tillhandahåller inte metoder för att fylla databasen med kombinationer av användarnamn/lösenord eller annan användarinformation.

Så här konfigurerar du medlemskapsprovidern

  1. Skapa ett <membership> element under elementet <system.web> i filen Web.config.

  2. Under elementet <membership> skapar du ett <providers> element.

  3. Som underordnad elementet <providers> lägger du till ett <clear /> element för att tömma samlingen med providrar.

  4. Under elementet <clear /> skapar du ett <add> element med följande attribut inställda på lämpliga värden: name, type, connectionStringName, applicationName, enablePasswordRetrieval, enablePasswordReset, requiresQuestionAndAnswer, och requiresUniqueEmailpasswordFormat. Attributet name används senare som ett värde i konfigurationsfilen. I följande exempel anges det till SqlMembershipProvider.

    I följande exempel visas konfigurationsavsnittet.

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

Så här konfigurerar du tjänstsäkerhet för att acceptera kombinationen användarnamn/lösenord

  1. Lägg till ett< bindningselement under elementet< system.serviceModel> i konfigurationsfilen>.

  2. Lägg till en <wsHttpBinding> i avsnittet bindningar. Mer information om hur du skapar ett WCF-bindningselement finns i Så här anger du en tjänstbindning i konfigurationen.

  3. mode Ange -attributet för elementet <security> till Message.

  4. clientCredentialType Ange -attributet för elementet <message> till UserName. Detta anger att ett användarnamn/lösenordspar ska användas som klientens autentiseringsuppgifter.

    I följande exempel visas konfigurationskoden för bindningen.

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

Så här konfigurerar du en tjänst för att använda medlemskapsprovidern

  1. Som underordnad elementet <system.serviceModel> lägger du till ett <beteendeelement>

  2. Lägg till en serviceBehaviors> i -elementet<behaviors>.<

  3. Lägg till ett <beteende> och ange name attributet till ett lämpligt värde.

  4. Lägg till en serviceCredentials> i elementet<behavior>.<

  5. Lägg till en userNameAuthentication> i elementet<serviceCredentials>.<

  6. Ange attributet userNamePasswordValidationMode till MembershipProvider.

    Viktigt!

    Om värdet userNamePasswordValidationMode inte har angetts använder WCF Windows-autentisering i stället för ASP.NET-medlemskapsprovidern.

  7. membershipProviderName Ange attributet till namnet på providern (anges när providern läggs till i den första proceduren i det här avsnittet). I följande exempel visas fragmentet <serviceCredentials> till den här punkten.

    <behaviors>
       <serviceBehaviors>
          <behavior name="MyServiceBehavior">
             <serviceCredentials>
                <userNameAuthentication
                userNamePasswordValidationMode="MembershipProvider"
                membershipProviderName="SqlMembershipProvider" />
             </serviceCredentials>
          </behavior>
       </serviceBehaviors>
    </behaviors>
    

Exempel

Följande kod visar konfigurationen för en tjänst som använder funktionen ASP-medlemskap.

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

Se även