Bagikan melalui


Cara: Menggunakan Penyedia Keanggotaan ASP.NET

Penyedia keanggotaan ASP.NET adalah fitur yang memungkinkan pengembang ASP.NET membuat situs Web yang memungkinkan pengguna membuat kombinasi nama pengguna dan kata sandi yang unik. Dengan fasilitas ini, setiap pengguna dapat membuat akun dengan situs, dan masuk untuk akses eksklusif ke situs dan layanannya. Hal ini berbeda dengan keamanan Windows, yang mengharuskan pengguna memiliki akun di domain Windows. Sebagai gantinya, setiap pengguna yang memasok mandat mereka (kombinasi nama pengguna/kata sandi) dapat menggunakan situs dan layanannya.

Untuk aplikasi sampel, lihat Keanggotaan dan Penyedia Peran. Untuk informasi tentang menggunakan fitur penyedia peran ASP.NET, lihat Cara: Menggunakan Penyedia Peran ASP.NET dengan Layanan.

Fitur keanggotaan memerlukan penggunaan database SQL Server untuk menyimpan informasi pengguna. Fitur ini juga mencakup metode untuk mengajukan pertanyaan kepada setiap pengguna yang lupa kata sandi mereka.

Pengembang Windows Communication Foundation (WCF) dapat memanfaatkan fitur-fitur ini untuk tujuan keamanan. Ketika diintegrasikan ke dalam aplikasi WCF, pengguna harus memberikan kombinasi nama pengguna/kata sandi ke aplikasi klien WCF. Untuk mentransfer data ke layanan WCF, gunakan pengikatan yang mendukung mandat nama pengguna/kata sandi, seperti WSHttpBinding (dalam konfigurasi, <wsHttpBinding>) dan atur jenis mandat klien ke UserName. Pada layanan, keamanan WCF mengautentikasi pengguna berdasarkan nama pengguna dan kata sandi, dan juga menetapkan peran yang ditentukan oleh peran ASP.NET.

Catatan

WCF tidak menyediakan metode untuk mengisi database dengan kombinasi nama pengguna/kata sandi atau informasi pengguna lainnya.

Untuk mengonfigurasi penyedia keanggotaan

  1. Dalam file Web.config, di bawah elemen <system.web>, buat elemen <membership>.

  2. Di bawah elemen <membership>, buat elemen <providers>.

  3. Sebagai elemen turunan ke elemen <providers>, tambahkan elemen <clear /> untuk membersihkan pengumpulan penyedia.

  4. Di bawah elemen <clear />, buat elemen <add> dengan atribut berikut yang diatur ke nilai yang sesuai: name, type, connectionStringName, applicationName, enablePasswordRetrieval, enablePasswordReset, requiresQuestionAndAnswer, requiresUniqueEmail, dan passwordFormat. Atribut name digunakan nanti sebagai nilai dalam file konfigurasi. Contoh berikut mengaturnya ke SqlMembershipProvider.

    Contoh berikut menunjukkan bagian konfigurasi.

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

Untuk mengonfigurasi keamanan layanan untuk menerima kombinasi nama pengguna/kata sandi

  1. Dalam file konfigurasi, di bawah elemen <system.serviceModel>, tambahkan elemen <pengikatan>.

  2. Tambahkan <wsHttpBinding> ke bagian pengikatan. Untuk informasi selengkapnya tentang membuat elemen pengikatan WCF, lihat Cara untuk : Menentukan Pengikatan Layanan dalam Konfigurasi.

  3. Atur atribut mode dari elemen <security> ke Message.

  4. Atur atribut clientCredentialType dari elemen <message> ke UserName. Ini menentukan bahwa pasangan nama pengguna/kata sandi akan digunakan sebagai mandat klien.

    Contoh berikut menunjukkan kode konfigurasi untuk pengikatan.

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

Untuk mengonfigurasi layanan untuk menggunakan penyedia keanggotaan

  1. Sebagai elemen turunan ke elemen <system.serviceModel>, tambahkan elemen <perilaku>

  2. Tambahkan <serviceBehaviors> ke elemen <behaviors>.

  3. Tambahkan <perilaku> dan atur atribut name ke nilai yang sesuai.

  4. Tambahkan <serviceCredentials> ke elemen <behavior>.

  5. Tambahkan <userNameAuthentication> ke elemen <serviceCredentials>.

  6. Atur atribut userNamePasswordValidationMode ke MembershipProvider.

    Penting

    Jika nilai userNamePasswordValidationMode tidak diatur, WCF menggunakan autentikasi Windows alih-alih penyedia keanggotaan ASP.NET.

  7. Atur atribut membershipProviderName ke nama penyedia (ditentukan saat menambahkan penyedia dalam prosedur pertama dalam topik ini). Contoh berikut menunjukkan fragmen <serviceCredentials> hingga saat ini.

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

Contoh

Kode berikut menunjukkan konfigurasi untuk layanan yang menggunakan fitur keanggotaan ASP.

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

Lihat juga