Nasıl yapılır: ASP.NET Üyelik Sağlayıcısını Kullanma

ASP.NET üyelik sağlayıcısı, ASP.NET geliştiricilerin kullanıcıların benzersiz kullanıcı adı ve parola bileşimleri oluşturmasına olanak tanıyan Web siteleri oluşturmasına olanak tanıyan bir özelliktir. Bu tesisle, herhangi bir kullanıcı siteyle bir hesap kurabilir ve siteye ve hizmetlerine özel erişim için oturum açabilir. Bu, kullanıcıların bir Windows etki alanında hesap sahibi olmasını gerektiren Windows güvenliğinin aksinedir. Bunun yerine, kimlik bilgilerini sağlayan tüm kullanıcılar (kullanıcı adı/parola bileşimi) siteyi ve hizmetlerini kullanabilir.

Örnek uygulama için bkz . Üyelik ve Rol Sağlayıcısı. ASP.NET rol sağlayıcısı özelliğini kullanma hakkında bilgi için bkz . Nasıl yapılır: hizmetle ASP.NET Rol Sağlayıcısını kullanma.

Üyelik özelliği, kullanıcı bilgilerini depolamak için bir SQL Server veritabanı kullanmayı gerektirir. Bu özellik, parolalarını unutan kullanıcılara soru sorma yöntemlerini de içerir.

Windows Communication Foundation (WCF) geliştiricileri bu özelliklerden güvenlik amacıyla yararlanabilir. Bir WCF uygulamasıyla tümleştirildiğinde, kullanıcıların WCF istemci uygulamasına bir kullanıcı adı/parola bileşimi sağlaması gerekir. Verileri WCF hizmetine aktarmak için( yapılandırmada, wsHttpBinding>) gibi WSHttpBinding kullanıcı adı/parola kimlik bilgilerini destekleyen bir bağlama kullanın ve istemci kimlik bilgisi türünü olarak UserNameayarlayın.< Hizmette WCF güvenliği, kullanıcı adı ve parola temelinde kullanıcının kimliğini doğrular ve ayrıca ASP.NET rolü tarafından belirtilen rolü atar.

Not

WCF, veritabanını kullanıcı adı/parola bileşimleri veya diğer kullanıcı bilgileriyle doldurmak için yöntemler sağlamaz.

Üyelik sağlayıcısını yapılandırmak için

  1. Web.config dosyasında, öğesinin <system.web> altında bir <membership> öğesi oluşturun.

  2. öğesinin <membership> altında bir <providers> öğe oluşturun.

  3. öğesinin <providers> alt öğesi olarak, sağlayıcı koleksiyonunu boşaltmak için bir <clear /> öğe ekleyin.

  4. öğesinin <clear /> altında, aşağıdaki özniteliklerin uygun değerlere ayarlandığı bir <add> öğe oluşturun: name, type, connectionStringName, applicationName, enablePasswordRetrieval, , enablePasswordReset, requiresQuestionAndAnswer, requiresUniqueEmailve passwordFormat. name özniteliği daha sonra yapılandırma dosyasında bir değer olarak kullanılır. Aşağıdaki örnek bunu olarak SqlMembershipProviderayarlar.

    Aşağıdaki örnekte yapılandırma bölümü gösterilmektedir.

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

Hizmet güvenliğini kullanıcı adı/parola bileşimini kabul etmek üzere yapılandırmak için

  1. Yapılandırma dosyasında, system.serviceModel öğesinin <altına bir< bağlama öğesi> ekleyin.>

  2. Bağlamalar bölümüne bir <wsHttpBinding> ekleyin. WCF bağlama öğesi oluşturma hakkında daha fazla bilgi için bkz . Nasıl yapılır: Yapılandırmada Hizmet Bağlaması Belirtme.

  3. öğesinin mode özniteliğini <security> olarak Messageayarlayın.

  4. öğesinin clientCredentialType özniteliğini <message> olarak UserNameayarlayın. Bu, istemcinin kimlik bilgisi olarak bir kullanıcı adı/parola çiftinin kullanılacağını belirtir.

    Aşağıdaki örnekte bağlamanın yapılandırma kodu gösterilmektedir.

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

Bir hizmeti üyelik sağlayıcısını kullanacak şekilde yapılandırmak için

  1. öğesinin alt öğesi <system.serviceModel> olarak bir <behaviors> öğesi ekleyin

  2. öğesine serviceBehaviors <><behaviors> ekleyin.

  3. Bir <davranış> ekleyin ve özniteliğini name uygun bir değere ayarlayın.

  4. öğesine serviceCredentials <><behavior> ekleyin.

  5. öğesine userNameAuthentication <><serviceCredentials> ekleyin.

  6. özniteliğini userNamePasswordValidationMode olarak MembershipProviderayarlayın.

    Önemli

    userNamePasswordValidationMode Değer ayarlanmazsa WCF, ASP.NET üyelik sağlayıcısı yerine Windows kimlik doğrulamasını kullanır.

  7. özniteliğini membershipProviderName sağlayıcının adına ayarlayın (bu konudaki ilk yordamda sağlayıcı eklenirken belirtilir). Aşağıdaki örnekte bu noktaya kadar olan <serviceCredentials> parça gösterilmektedir.

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

Örnek

Aşağıdaki kod, ASP üyelik özelliğini kullanan bir hizmetin yapılandırmasını gösterir.

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

Ayrıca bkz.