ActiveDirectoryMembershipProvider Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengelola penyimpanan informasi keanggotaan untuk aplikasi ASP.NET di server Active Directory dan Mode Aplikasi 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
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 |
Ya, tetapi harus berupa atribut bernilai tunggal dari jenis Untai (karakter) Unicode. | ||
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 Untai (karakter) Unicode. |
IsApproved | User-Account-Control (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 |
Ketika properti RequiresQuestionAndAnswer dan EnablePasswordReset adalah true
, ActiveDirectoryMembershipProvider kelas mendukung keamanan reset 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 untuk keanggotaan (ASP.NET Skema Pengaturan) dalam file konfigurasi aplikasi.
Atribut konfigurasi | Jenis atribut |
---|---|
attributeMapPasswordQuestion |
Harus berupa atribut bernilai tunggal dari jenis Untai (karakter) Unicode. |
attributeMapPasswordAnswer |
Harus berupa atribut bernilai tunggal dari jenis Untai (karakter) Unicode. |
attributeMapFailedPasswordAnswerCount |
Harus berupa atribut bernilai tunggal dari jenis 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 menyambungkan ke Direktori Aktif atau server Mode Aplikasi Direktori Aktif (ADAM), connectionProtection
atribut yang diatur menggunakan tambahkan Elemen untuk penyedia untuk keanggotaan (ASP.NET Skema Pengaturan) 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 ini memperlihatkan efek connectionProtection
atribut saat menyambungkan ke Direktori Aktif.
connectionProtection Pengaturan |
Efek |
---|---|
None | Kelas ActiveDirectoryMembershipProvider akan terhubung ke Direktori Aktif, dengan pembatasan ini. - Metode apa pun yang mengatur kata sandi akan gagal. Direktori Aktif memerlukan koneksi yang 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 dilakukan. 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 |
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) |
Memperbarui 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) |
Memperbarui 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) |