Delen via


Procedure: de ASP.NET Lidmaatschapsprovider gebruiken

De ASP.NET lidmaatschapsprovider is een functie waarmee ASP.NET ontwikkelaars websites kunnen maken waarmee gebruikers unieke combinaties van gebruikersnaam en wachtwoord kunnen maken. Met deze faciliteit kan elke gebruiker een account met de site tot stand brengen en zich aanmelden voor exclusieve toegang tot de site en de bijbehorende services. Dit is in tegenstelling tot Windows-beveiliging, waarvoor gebruikers accounts in een Windows-domein moeten hebben. In plaats daarvan kan elke gebruiker die zijn referenties levert (de combinatie van gebruikersnaam/wachtwoord) de site en de bijbehorende services gebruiken.

Zie Lidmaatschaps- en rolprovider voor een voorbeeldtoepassing. Zie Procedure voor informatie over het gebruik van de functie ASP.NET rolprovider: De ASP.NET-rolprovider gebruiken met een service.

Voor de lidmaatschapsfunctie moet u een SQL Server-database gebruiken om de gebruikersgegevens op te slaan. De functie bevat ook methoden voor het vragen bij vragen aan gebruikers die hun wachtwoord zijn vergeten.

WcF-ontwikkelaars (Windows Communication Foundation) kunnen profiteren van deze functies voor beveiligingsdoeleinden. Wanneer deze is geïntegreerd in een WCF-toepassing, moeten gebruikers een combinatie van gebruikersnaam en wachtwoord opgeven voor de WCF-clienttoepassing. Als u de gegevens wilt overdragen naar de WCF-service, gebruikt u een binding die ondersteuning biedt voor referenties voor gebruikersnaam en wachtwoord, zoals (WSHttpBindingin configuratie, wsHttpBinding><) en stelt u het clientreferentietype in op .UserName Op de service verifieert WCF-beveiliging de gebruiker op basis van de gebruikersnaam en het wachtwoord en wijst ook de rol toe die is opgegeven door de ASP.NET-rol.

Notitie

WCF biedt geen methoden voor het vullen van de database met combinaties van gebruikersnaam en wachtwoord of andere gebruikersgegevens.

De lidmaatschapsprovider configureren

  1. Maak in het bestand Web.config onder het <system.web> element een <membership> element.

  2. Maak onder het <membership> element een <providers> element.

  3. Voeg als onderliggend element <providers> een <clear /> element toe om de verzameling providers leeg te maken.

  4. Maak onder het element een <add> element met de volgende kenmerken ingesteld op de juiste waarden: name, , typeconnectionStringName, applicationName, , enablePasswordRetrieval, enablePasswordReset, , requiresQuestionAndAnsweren requiresUniqueEmailpasswordFormat.<clear /> Het name kenmerk wordt later gebruikt als een waarde in het configuratiebestand. In het volgende voorbeeld wordt dit ingesteld op SqlMembershipProvider.

    In het volgende voorbeeld ziet u de configuratiesectie.

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

Servicebeveiliging configureren om de combinatie van gebruikersnaam/wachtwoord te accepteren

  1. Voeg in het configuratiebestand onder het element system.serviceModel> een< bindingselement> toe.<

  2. Voeg een <wsHttpBinding> toe aan de sectie Bindingen. Zie How to: Specify a Service Binding in Configuration (Een servicebinding opgeven in configuratie) voor meer informatie over het maken van een WCF-bindingselement.

  3. Stel het mode kenmerk van het <security> element in op Message.

  4. Stel het clientCredentialType kenmerk van het <message> element in op UserName. Hiermee geeft u op dat een gebruikersnaam/wachtwoordpaar wordt gebruikt als de referenties van de client.

    In het volgende voorbeeld ziet u de configuratiecode voor de binding.

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

Een service configureren voor het gebruik van de lidmaatschapsprovider

  1. Als onderliggend <system.serviceModel> element voegt u een <gedragselement> toe

  2. Voeg een <serviceBehaviors> toe aan het <behaviors> element.

  3. Voeg een <gedrag> toe en stel het name kenmerk in op een geschikte waarde.

  4. Voeg een <serviceCredentials> toe aan het <behavior> element.

  5. Voeg een <userNameAuthentication> toe aan het <serviceCredentials> element.

  6. Stel het userNamePasswordValidationMode kenmerk in op MembershipProvider.

    Belangrijk

    Als de userNamePasswordValidationMode waarde niet is ingesteld, gebruikt WCF Windows-verificatie in plaats van de ASP.NET lidmaatschapsprovider.

  7. Stel het membershipProviderName kenmerk in op de naam van de provider (opgegeven bij het toevoegen van de provider in de eerste procedure in dit onderwerp). In het volgende voorbeeld ziet u het <serviceCredentials> fragment naar dit punt.

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

Opmerking

De volgende code toont de configuratie voor een service die gebruikmaakt van de ASP-lidmaatschapsfunctie.

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

Zie ook