Share via


ActiveDirectoryMembershipProvider Kelas

Definisi

Mengelola penyimpanan informasi keanggotaan untuk aplikasi ASP.NET di server Mode Aplikasi Direktori Aktif dan Direktori Aktif.

public ref class ActiveDirectoryMembershipProvider : System::Web::Security::MembershipProvider
public class ActiveDirectoryMembershipProvider : System.Web.Security.MembershipProvider
type ActiveDirectoryMembershipProvider = class
    inherit MembershipProvider
Public Class ActiveDirectoryMembershipProvider
Inherits MembershipProvider
Warisan
ActiveDirectoryMembershipProvider

Contoh

Contoh kode berikut menunjukkan file Web.config untuk aplikasi ASP.NET yang dikonfigurasi untuk menggunakan ActiveDirectoryMembershipProvider instans. Contoh pertama menggunakan pemetaan default untuk atribut Direktori Aktif, dan tidak mendukung keamanan pengaturan ulang kata sandi dengan tanya jawab atau kemampuan untuk memanggil metode pencarian. Contoh kedua menunjukkan semua pengaturan atribut yang ActiveDirectoryMembershipProvider diizinkan untuk instans.

Contoh pertama adalah file konfigurasi sederhana menggunakan pemetaan default untuk atribut Direktori Aktif.

<configuration>  
  <connectionStrings>  
    <add name="ADService" connectionString="LDAP://ldapServer/" />  
  </connectionStrings>  
  <system.web>  
    <membership defaultProvider="AspNetActiveDirectoryMembershipProvider">  
      <providers>  
        <add name="AspNetActiveDirectoryMembershipProvider"   
          type="System.Web.Security.ActiveDirectoryMembershipProvider,   
          System.Web, Version=2.0.3600, Culture=neutral,   
          PublicKeyToken=b03f5f7f11d50a3a" />  
      </providers>  
    </membership>  
  </system.web>  
</configuration>  

Contoh ini menunjukkan semua pengaturan atribut yang tersedia untuk instans ActiveDirectoryMembershipProvider.

<configuration>  
  <connectionStrings>  
    <add name="ADService" connectionString="LDAP://ldapServer/" />  
  </connectionStrings>  
  <system.web>  
    <membership  
      defaultProvider="AspNetActiveDirectoryMembershipProvider">  
      <providers>  
        <add name="AspNetActiveDirectoryMembershipProvider"  
          type="System.Web.Security.ActiveDirectoryMembershipProvider,  
          System.Web, Version=1.0.3600, Culture=neutral,  
          PublicKeyToken=b03f5f7f11d50a3a"  
          connectionStringName="ADService"  
          connectionUsername="UserWithAppropriateRights"  
          connectionPassword="PasswordForUser"  
          connectionProtection="Secure"  
          enablePasswordReset="true"  
          enableSearchMethods="true"  
          requiresQuestionAndAnswer="true"  
          applicationName="/"  
          description="Default AD connection"  
          requiresUniqueEmail="false"  
          clientSearchTimeout="30"  
          serverSearchTimeout="30"  
          timeoutUnit="Minutes"  
          attributeMapPasswordQuestion="department"  
          attributeMapPasswordAnswer="division"  
          attributeMapFailedPasswordAnswerCount="singleIntAttribute"  
         attributeMapFailedPasswordAnswerTime="singleLargeIntAttribute"  
         attributeMapFailedPasswordAnswerLockoutTime="singleLargeIntAttribute"  
          attributeMapEmail = "mail"  
          attributeMapUsername = "userPrincipalName"  
          maxInvalidPasswordAttempts = "5"  
          passwordAttemptWindow = "10"  
          passwordAnswerAttemptLockoutDuration = "30"  
          minRequiredPasswordLength="7"  
          minRequiredNonalphanumericCharacters="1"  
          passwordStrengthRegularExpression="  
          @\"(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})" />  
        />  
      </providers>  
    </membership>  
  </system.web>  
</configuration>  

clientSearchTimeout dan serverSearchTimeout default ke menit. Untuk mengubah unit, atur timeoutUnit nilai atribut ke salah satu "Hari", "Jam", "Menit", "Detik", atau "Milidetik". Jika atribut tidak ditentukan, defaultnya adalah "Menit".

Keterangan

Kelas ini digunakan oleh Membership kelas dan MembershipUser untuk menyediakan layanan keanggotaan untuk aplikasi ASP.NET menggunakan server Active Directory (AD) atau Active Directory Application Mode (ADAM).

Catatan

Menggunakan server ADAM memerlukan konfigurasi tertentu. Untuk informasi selengkapnya, lihat bagian Konfigurasi ADAM di bawah ini.

Penting

Instans ActiveDirectoryMembershipProvider hanya berfungsi dalam konfigurasi default kebijakan kepercayaan penuh ASP.NET. Untuk menggunakan ActiveDirectoryMembershipProvider instans di tingkat kepercayaan parsial apa pun, Anda harus membuat perubahan pada file kebijakan kepercayaan yang sesuai untuk aplikasi Anda atau Anda harus membuat rakitan "kotak pasir" yang disebarkan di GAC.

Kelas ActiveDirectoryMembershipProvider memerlukan izin tidak terbatas DirectoryServicesPermission untuk dijalankan. Izin ini tidak ditambahkan ke salah satu file kebijakan kepercayaan parsial yang disediakan dengan ASP.NET. Meskipun menambahkan DirectoryServicesPermission izin ke file kebijakan kepercayaan parsial akan memungkinkan penggunaan ActiveDirectoryMembershipProvider kelas , melakukannya membuat System.DirectoryServices kelas namespace tersedia untuk kode apa pun yang berjalan di halaman ASP.NET Anda. Opsi ini tidak disarankan untuk server Web apa pun yang perlu dijalankan dalam mode aman dan terkunci.

Sebagai alternatif, Anda dapat membuat rakitan "kotak pasir" yang memanggil ActiveDirectoryMembershipProvider kelas . Rakitan ini dapat berisi kelas pembungkus yang meneruskan panggilan metode ke ActiveDirectoryMembershipProvider kelas atau kelas yang berasal dari ActiveDirectoryMembershipProvider kelas . Dalam kedua kasus, kelas pembungkus harus menegaskan izin yang tidak terbatas DirectoryServicesPermission . Sebarkan rakitan kotak pasir di GAC dan tandai perakitan dengan AllowPartiallyTrustedCallersAttribute atribut (APTCA). Ini akan memungkinkan kode ASP.NET tepercaya sebagian Anda untuk memanggil kelas pembungkus Anda, dan karena kelas pembungkus secara internal menegaskan DirectoryServicesPermission izin yang tidak terbatas, kelas pembungkus Anda akan berhasil memanggil penyedia

Anda harus membuat entri connectionStrings Element (ASP.NET Settings Schema) dalam file Web.config yang mengidentifikasi server Direktori Aktif, domain Direktori Aktif, atau partisi aplikasi ADAM untuk digunakan. Penyedia hanya akan beroperasi pada cakupan domain, atau dalam sublingkup dalam domain. Tabel berikut ini mencantumkan string koneksi yang diizinkan dan cakupan yang digunakan.

String koneksi Cakupan
<LDAP:// domain atau server>:[port]

Nomor port bersifat opsional untuk ADAM dan tidak diperlukan untuk Direktori Aktif.
Penyedia berjalan terhadap domain atau server yang ditentukan. Dengan AD, pembuatan dan penghapusan pengguna dilakukan dalam kontainer pengguna default. Semua operasi lain, termasuk metode pencarian apa pun, akan berakar pada konteks penamaan default untuk domain.

Jika string koneksi menentukan domain Direktori Aktif daripada server tertentu dan EnablePasswordReset propertinya adalah true, ActiveDirectoryMembershipProvider instans akan selalu terhubung ke server dengan peran PDC untuk domain untuk memastikan bahwa perubahan kata sandi berlaku dan tersedia saat ValidateUser metode dipanggil.

String koneksi ini tidak diizinkan saat menggunakan ADAM, dan akan melemparkan NotSupportedException.
<LDAP:// domain atau server>:[port]/<container dn>

Nomor port bersifat opsional untuk ADAM dan tidak diperlukan untuk Direktori Aktif.
Penyedia berjalan terhadap domain atau server yang ditentukan. Pembuatan dan penghapusan pengguna hanya dilakukan dalam kontainer yang ditentukan. Semua operasi lain, termasuk metode pencarian apa pun, melakukan pencarian subtree yang berakar pada kontainer.

Untuk server ADAM, kontainer menentukan akar partisi aplikasi, atau kontainer dalam partisi aplikasi.

Kami menyarankan agar string koneksi menentukan kontainer tertentu untuk meningkatkan performa.

Instans ActiveDirectoryMembershipProvider memetakan atribut direktori ke ActiveDirectoryMembershipUser properti. Atribut default digunakan jika tidak ada pemetaan atribut yang dilakukan dalam file Web.config. Untuk informasi selengkapnya tentang pemetaan atribut, lihat properti individual dalam ActiveDirectoryMembershipUser dokumentasi kelas.

Tabel berikut mencantumkan ActiveDirectoryMembershipUser properti dan pemetaan atribut defaultnya.

Penting

Kelas ActiveDirectoryMembershipProvider tidak secara eksplisit memeriksa bahwa atribut penyedia tidak dipetakan ke atribut inti objek pengguna di direktori. Anda harus memastikan bahwa informasi sensitif dari direktori tidak diekspos melalui atribut yang dipetakan.

Properti Atribut direktori default Dapat dipetakan?
ProviderUserKey securityIdentifier Tidak
UserName userPrincipalName Ya, tetapi harus userPrincipalName atau sAMAccountName
Comment komentar Tidak
CreationDate whenCreated Tidak
Email email Ya, tetapi harus berupa atribut bernilai tunggal dari jenis Unicode String.
LastActivityDate n/a Tidak didukung oleh ActiveDirectoryMembershipProvider.
LastLoginDate n/a Tidak didukung oleh ActiveDirectoryMembershipProvider.
LastPasswordChangedDate pwdLastSet Tidak
PasswordQuestion tidak ada Ya, tetapi harus berupa atribut bernilai tunggal dari jenis Unicode String.
IsApproved Kontrol Akun Pengguna (AD)

mDS-UserAccountDisabled (ADAM)
Tidak
IsLockedOut dihitung dari lockoutTime dan durasi penguncian AD (AD pada Windows 2000)

msDS-User-Account-Control-Computed (AD di Windows Server 2003)

msDS-User-Account-Control-Computed (ADAM)
Tidak
LastLockoutDate Jika pengguna dikunci karena terlalu banyak upaya kata sandi yang buruk, atribut waktu penguncian dikembalikan.

Jika pengguna dikunci karena terlalu banyak upaya jawaban kata sandi yang buruk, nilai yang disimpan dalam atribut yang ditentukan oleh attributeMapFailedPasswordAnswerLockoutTime dikembalikan.

Jika pengguna dikunci karena kata sandi yang buruk dan terlalu banyak upaya kata sandi yang buruk, nilai tanggal/waktu terbaru dikembalikan.

Jika akun tidak dikunci, kembalikan 1/1/1754 untuk kompatibilitas SQL.
Tidak

RequiresQuestionAndAnswer Ketika properti dan EnablePasswordReset adalah true, ActiveDirectoryMembershipProvider kelas mendukung keamanan pengaturan ulang kata sandi dengan mengharuskan pengguna untuk menjawab pertanyaan yang telah ditentukan. Untuk mendukung pertanyaan dan jawaban, Anda harus mengatur atribut konfigurasi berikut menggunakan tambahkan Elemen untuk penyedia keanggotaan (ASP.NET Pengaturan Skema) dalam file konfigurasi aplikasi.

Atribut konfigurasi Jenis atribut
attributeMapPasswordQuestion Harus berupa atribut bernilai tunggal dari jenis Unicode String.
attributeMapPasswordAnswer Harus berupa atribut bernilai tunggal dari jenis Unicode String.
attributeMapFailedPasswordAnswerCount Harus berupa atribut bernilai tunggal dari tipe Bilangan Bulat.
attributeMapFailedPasswordAnswerTime Harus berupa atribut bernilai tunggal dari jenis Bilangan Bulat/Interval Besar.
attributeMapFailedPasswordAnswerLockoutTime Harus berupa atribut bernilai tunggal dari jenis Bilangan Bulat/Interval Besar.

Untuk informasi selengkapnya tentang menggunakan keamanan pengaturan ulang kata sandi, lihat RequiresQuestionAndAnswer properti .

Koneksi Direktori Aktif

ActiveDirectoryMembershipProvider Ketika kelas digunakan untuk terhubung ke Direktori Aktif atau server Mode Aplikasi Direktori Aktif (ADAM), connectionProtection atribut yang diatur menggunakan tambahkan Elemen untuk penyedia untuk keanggotaan (ASP.NET Pengaturan Skema) dalam file konfigurasi aplikasi dapat membatasi jenis operasi ActiveDirectoryMembershipProvider yang dapat dilakukan kelas melalui koneksi. Atribut ini connectionProtection juga menentukan metode yang akan digunakan instans ActiveDirectoryMembershipProvider untuk membuat koneksi ke server Active Directory atau ADAM.

Tabel berikut menunjukkan efek connectionProtection atribut saat menyambungkan ke Direktori Aktif.

connectionProtection Pengaturan Efek
None Kelas ActiveDirectoryMembershipProvider akan terhubung ke Direktori Aktif, dengan batasan ini.

- Metode apa pun yang mengatur kata sandi akan gagal. Direktori Aktif memerlukan koneksi aman saat mengubah kata sandi.
- Anda harus secara eksplisit mengatur connectionUsername atribut dan connectionPassword menggunakan tambahkan Elemen untuk penyedia untuk keanggotaan (ASP.NET Skema Pengaturan) dalam file konfigurasi aplikasi; jika tidak, ActiveDirectoryMembershipProvider instans akan memberikan ProviderException pengecualian.
Secure Kelas ActiveDirectoryMembershipProvider akan mencoba menyambungkan ke Direktori Aktif menggunakan SSL. Jika SSL gagal, upaya kedua untuk terhubung ke Direktori Aktif menggunakan sign-and-seal akan dibuat. Jika kedua upaya gagal, ActiveDirectoryMembershipProvider instans akan memberikan ProviderException pengecualian.

Kredensial proses dan kredensial eksplisit didukung.

Tabel berikut menunjukkan efek connectionProtection atribut saat menyambungkan ke server ADAM.

connectionProtection Pengaturan Efek
None Kelas ActiveDirectoryMembershipProvider akan terhubung ke server ADAM, dengan pembatasan ini.

- Metode apa pun yang mengatur kata sandi akan gagal kecuali Anda secara eksplisit mengonfigurasi server ADAM untuk memungkinkan kata sandi dikirim dan diubah melalui koneksi yang tidak aman.

Kredensial proses dan kredensial eksplisit didukung.
Secure Kelas ActiveDirectoryMembershipProvider akan mencoba menyambungkan ke server ADAM menggunakan SSL. Jika koneksi tidak dapat dibuat, ActiveDirectoryMembershipProvider instans akan memberikan ProviderException pengecualian.

Kredensial proses dan kredensial eksplisit didukung.

Konfigurasi ADAM

Saat menggunakan server ADAM, instans ADAM harus berisi skema yang menentukan User kelas . Anda dapat mengimpor User kelas dengan impor LDIF file yang MS-User.ldf tersedia di direktori penginstalan ADAM.

Kelas ActiveDirectoryMembershipProvider akan bekerja dengan server ADAM yang dikonfigurasi untuk menggunakan port jaringan default. Tabel berikut ini memperlihatkan default yang diharapkan untuk server ADAM.

pengaturan connectionProtection Port ADAM yang diharapkan
None 389
Secure 636

Konstruktor

ActiveDirectoryMembershipProvider()

Membuat instans ActiveDirectoryMembershipProvider baru kelas.

Properti

ApplicationName

Nama aplikasi menggunakan penyedia keanggotaan kustom.

CurrentConnectionProtection

Mendapatkan tingkat keamanan saat ini yang digunakan untuk melindungi komunikasi dengan server.

Description

Mendapatkan deskripsi singkat dan ramah yang cocok untuk ditampilkan di alat administratif atau antarmuka pengguna (UI) lainnya.

(Diperoleh dari ProviderBase)
EnablePasswordReset

Mendapatkan nilai yang menunjukkan apakah instans dikonfigurasi ActiveDirectoryMembershipProvider untuk memungkinkan pengguna mengatur ulang kata sandi mereka.

EnablePasswordRetrieval

Mendapatkan nilai yang menunjukkan apakah kata sandi pengguna dapat diambil dari penyimpanan data Direktori Aktif. Properti ini selalu mengembalikan false.

EnableSearchMethods

Mendapatkan nilai yang menunjukkan apakah metode berorientasi ActiveDirectoryMembershipProvider pencarian tersedia.

MaxInvalidPasswordAttempts

Mendapatkan jumlah upaya jawaban yang gagal yang diizinkan pengguna untuk pertanyaan reset kata sandi.

MinRequiredNonAlphanumericCharacters

Mendapatkan jumlah minimum karakter khusus yang harus ada dalam kata sandi yang valid.

MinRequiredPasswordLength

Mendapatkan panjang minimum yang diperlukan untuk kata sandi.

Name

Mendapatkan nama yang mudah diingat yang digunakan untuk merujuk ke penyedia selama konfigurasi.

(Diperoleh dari ProviderBase)
PasswordAnswerAttemptLockoutDuration

Dapatkan lamanya waktu di mana akun pengguna dikunci setelah pengguna melakukan terlalu banyak upaya jawaban kata sandi yang buruk.

PasswordAttemptWindow

Mendapatkan jendela waktu di mana upaya gagal berturut-turut untuk memberikan kata sandi yang valid atau jawaban kata sandi yang valid dilacak.

PasswordFormat

Mendapatkan nilai yang menunjukkan format kata sandi di penyimpanan data Direktori Aktif.

PasswordStrengthRegularExpression

Mendapatkan ekspresi reguler yang digunakan untuk mengevaluasi kata sandi.

RequiresQuestionAndAnswer

Mendapatkan nilai yang menunjukkan apakah penyedia keanggotaan dikonfigurasi untuk memerlukan pertanyaan dan jawaban kata sandi saat membuat pengguna.

RequiresUniqueEmail

Mendapatkan nilai yang menunjukkan apakah alamat email yang disimpan di server Direktori Aktif harus unik.

Metode

ChangePassword(String, String, String)

Mengubah kata sandi untuk pengguna yang ditentukan.

ChangePasswordQuestionAndAnswer(String, String, String, String)

Updates pertanyaan dan jawaban kata sandi untuk pengguna di penyimpanan Direktori Aktif.

CreateUser(String, String, String, String, String, Boolean, Object, MembershipCreateStatus)

Menambahkan pengguna baru ke penyimpanan data Direktori Aktif.

DecryptPassword(Byte[])

Mendekripsi kata sandi terenkripsi.

(Diperoleh dari MembershipProvider)
DeleteUser(String, Boolean)

Menghapus informasi keanggotaan pengguna dari penyimpanan data Direktori Aktif.

EncryptPassword(Byte[])

Mengenkripsi kata sandi.

(Diperoleh dari MembershipProvider)
EncryptPassword(Byte[], MembershipPasswordCompatibilityMode)

Mengenkripsi kata sandi yang ditentukan menggunakan mode kompatibilitas kata sandi yang ditentukan.

(Diperoleh dari MembershipProvider)
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
FindUsersByEmail(String, Int32, Int32, Int32)

Mengembalikan kumpulan pengguna keanggotaan dari penyimpanan data Direktori Aktif berdasarkan alamat email pengguna.

FindUsersByName(String, Int32, Int32, Int32)

Mengembalikan kumpulan pengguna dari penyimpanan data Direktori Aktif berdasarkan nama pengguna.

GeneratePassword()

Menghasilkan kata sandi acak.

GetAllUsers(Int32, Int32, Int32)

Mendapatkan kumpulan semua pengguna yang disimpan di sumber data Direktori Aktif.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetNumberOfUsersOnline()

NotSupportedException Memberikan pengecualian dalam semua kasus.

GetPassword(String, String)

Mengembalikan kata sandi pengguna yang ditentukan dari database. Kelas ActiveDirectoryMembershipProvider tidak mendukung metode ini.

GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
GetUser(Object, Boolean)

Mendapatkan informasi pengguna keanggotaan yang terkait dengan kunci pengguna yang ditentukan.

GetUser(String, Boolean)

Mendapatkan informasi pengguna keanggotaan yang terkait dengan nama pengguna yang ditentukan.

GetUserNameByEmail(String)

Mendapatkan nama pengguna yang terkait dengan alamat email yang ditentukan.

Initialize(String, NameValueCollection)

Menginisialisasi instans ActiveDirectoryMembershipProvider dengan nilai properti dari file konfigurasi aplikasi. Metode ini tidak dimaksudkan untuk dipanggil dari kode Anda.

MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
OnValidatingPassword(ValidatePasswordEventArgs)

Menaikkan ValidatingPassword peristiwa jika penanganan aktivitas telah ditentukan.

(Diperoleh dari MembershipProvider)
ResetPassword(String, String)

Mereset kata sandi pengguna ke kata sandi baru yang dibuat secara otomatis.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
UnlockUser(String)

Menghapus kunci sehingga pengguna keanggotaan dapat divalidasi.

UpdateUser(MembershipUser)

Updates informasi tentang pengguna di penyimpanan data Direktori Aktif.

ValidateUser(String, String)

Memverifikasi bahwa nama pengguna dan kata sandi yang ditentukan ada di penyimpanan data Direktori Aktif.

Acara

ValidatingPassword

Terjadi saat pengguna dibuat, kata sandi diubah, atau kata sandi diatur ulang.

(Diperoleh dari MembershipProvider)

Berlaku untuk

Lihat juga