Aracılığıyla paylaş


ActiveDirectoryMembershipProvider Sınıf

Tanım

Active Directory ve Active Directory Uygulama Modu sunucularında ASP.NET bir uygulama için üyelik bilgilerinin depolanmasını yönetir.

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

Örnekler

Aşağıdaki örnekte, örnek kullanmak ActiveDirectoryMembershipProvider üzere yapılandırılmış bir ASP.NET uygulamasının Web.config dosyası gösterilmektedir. Active Directory öznitelikleri için varsayılan eşlemeleri kullanır. Soru-cevap ile parola sıfırlama güvenliğini veya arama yöntemlerini çağırma özelliğini desteklemez.

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

Açıklamalar

Bu sınıf, bir Active Directory (AD) veya Active Directory Uygulama Modu (ADAM) sunucusu kullanarak bir ASP.NET uygulaması için üyelik hizmetleri sağlamak üzere ve MembershipUser sınıfları tarafından Membership kullanılır.

Uyarı

ADAM sunucusu kullanmak için belirli bir yapılandırma gerekir. Daha fazla bilgi için aşağıdaki ADAM Yapılandırması bölümüne bakın.

Önemli

Örnek ActiveDirectoryMembershipProvider yalnızca ASP.NET tam güven ilkesi varsayılan yapılandırmasında çalışır. Örneği kısmi güven düzeyinde kullanmak ActiveDirectoryMembershipProvider için, uygulamanız için uygun güven ilkesi dosyasında değişiklik yapmanız veya GAC'de dağıtılan bir "korumalı alan" derlemesi oluşturmanız gerekir.

sınıfı ActiveDirectoryMembershipProvider çalıştırmak için sınırsız DirectoryServicesPermission izin gerektirir. Bu izin, ASP.NET ile sağlanan kısmi güven ilkesi dosyalarının hiçbirine eklenmez. Kısmi güven ilkesi dosyasına izin eklenmesi DirectoryServicesPermission sınıfın ActiveDirectoryMembershipProvider kullanımını etkinleştirse de, bunu yapmak ad alanı sınıflarını ASP.NET sayfalarınızda çalışan tüm kodlar için kullanılabilir hale getirir System.DirectoryServices . Bu seçenek güvenli, kilitli modda çalışması gereken web sunucuları için önerilmez.

Alternatif olarak, sınıfını çağıran bir "sandbox" derlemesi ActiveDirectoryMembershipProvider oluşturabilirsiniz. Bu derleme, yöntem çağrılarını sınıfa ActiveDirectoryMembershipProvider ileten bir sarmalayıcı sınıfı veya sınıfından ActiveDirectoryMembershipProvider türetilen bir sınıf içerebilir. Her iki durumda da sarmalayıcı sınıfı sınırsız izin onaylamalıdır DirectoryServicesPermission . GAC'de korumalı alan derlemesini dağıtın ve derlemeyi (APTCA) özniteliğiyle AllowPartiallyTrustedCallersAttribute işaretleyin. Bu, kısmen güvenilen ASP.NET kodunuzun sarmalayıcı sınıfınızı çağırmasına olanak tanır ve sarmalayıcı sınıfı dahili olarak kısıtlanmamış DirectoryServicesPermission izni onay verdiğinden sarmalayıcı sınıfınız sağlayıcıyı başarıyla çağırabilecektir

kullanılacak Active Directory sunucusunu, Active Directory etki alanını veya ADAM uygulama bölümünü tanımlayan Web.config dosyasında connectionStrings Öğesi (ASP.NET Ayarlar Şeması) girdisi oluşturmanız gerekir. Sağlayıcı yalnızca etki alanı kapsamında veya bir etki alanı içindeki bir alt kapsamda çalışır. Aşağıdaki tabloda izin verilen bağlantı dizeleri ve kullanılan kapsam listelenir.

Bağlantı dizesi Scope
<LDAP:// etki alanı veya sunucu>:[bağlantı noktası]

Bağlantı noktası numarası ADAM için isteğe bağlıdır ve Active Directory için gerekli değildir.
Sağlayıcı belirtilen etki alanına veya sunucuya karşı çalışır. AD ile kullanıcı oluşturma ve silme işlemi varsayılan kullanıcılar kapsayıcısında gerçekleştirilir. Tüm arama yöntemleri de dahil olmak üzere diğer tüm işlemler etki alanı için varsayılan adlandırma bağlamında köklenir.

Bağlantı dizesi belirli bir sunucu yerine bir Active Directory etki alanı belirtiyorsa ve EnablePasswordReset özelliği ise true, ActiveDirectoryMembershipProvider parola değişikliklerinin etkili olduğundan ve yöntem çağrıldığında kullanılabilir olduğundan emin olmak için örnek her zaman etki alanının PDC rolüyle sunucuya ValidateUser bağlanır.

ADAM kullanılırken bu bağlantı dizesine izin verilmez ve bir NotSupportedExceptionoluşturur.
<LDAP:// etki alanı veya sunucu>:[bağlantı noktası]/<kapsayıcı dn>

Bağlantı noktası numarası ADAM için isteğe bağlıdır ve Active Directory için gerekli değildir.
Sağlayıcı belirtilen etki alanına veya sunucuya karşı çalışır. Kullanıcı oluşturma ve silme işlemi yalnızca belirtilen kapsayıcıda yapılır. Tüm arama yöntemleri dahil olmak üzere diğer tüm işlemler, kapsayıcıda kökenli alt ağaç aramaları gerçekleştirir.

ADAM sunucuları için kapsayıcı, uygulama bölümünün kökünü veya bir uygulama bölümü içindeki kapsayıcıyı belirtir.

Bağlantı dizesinin performansı geliştirmek için belirli bir kapsayıcı tanımlamasını öneririz.

Örnek, ActiveDirectoryMembershipProvider dizin özniteliklerini özelliklerle ActiveDirectoryMembershipUser eşler. Web.config dosyasında öznitelik eşlemesi yapılmazsa varsayılan öznitelikler kullanılır. Öznitelik eşlemeleri hakkında daha fazla bilgi için sınıf belgelerindeki tek tek özelliklere ActiveDirectoryMembershipUser bakın.

Aşağıdaki tabloda özellikleri ve bunların varsayılan öznitelik eşlemeleri listelemektedir ActiveDirectoryMembershipUser .

Önemli

ActiveDirectoryMembershipProvider sınıfı, sağlayıcı özniteliklerinin dizindeki kullanıcı nesnesinin çekirdek öznitelikleriyle eşlenmediğini açıkça denetlemez. Dizindeki hassas bilgilerin eşlenen öznitelikler aracılığıyla gösterilmediğinden emin olmanız gerekir.

Mülkiyet Varsayılan dizin özniteliği Eşlenebilir mi?
ProviderUserKey securityIdentifier (güvenlikTanımlayıcı) Hayır
UserName userPrincipalName Evet, ancak userPrincipalName veya sAMAccountName olmalıdır
Comment yorum Hayır
CreationDate whenCreated Hayır
Email e-posta Evet, ancak Unicode Dizesi türünde tek değerli bir öznitelik olmalıdır.
LastActivityDate Yok tarafından ActiveDirectoryMembershipProviderdesteklenmez.
LastLoginDate Yok tarafından ActiveDirectoryMembershipProviderdesteklenmez.
LastPasswordChangedDate pwdLastSet Hayır
PasswordQuestion yok Evet, ancak Unicode Dizesi türünde tek değerli bir öznitelik olmalıdır.
IsApproved Kullanıcı-Account-Control (AD)

mDS-UserAccountDisabled (ADAM)
Hayır
IsLockedOut lockoutTime ve AD kilitleme süresinden hesaplanan (Windows 2000'de AD)

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

msDS-User-Account-Control-Computed (ADAM)
Hayır
LastLockoutDate Çok fazla hatalı parola denemesi nedeniyle kullanıcı kilitlendiyse kilitleme süresi özniteliği döndürülür.

Çok fazla hatalı parola yanıtı girişimi nedeniyle kullanıcı kilitlendiyse, tarafından attributeMapFailedPasswordAnswerLockoutTime tanımlanan öznitelikte depolanan değer döndürülür.

Hem hatalı parola hem de çok fazla hatalı parola denemesi nedeniyle kullanıcı kilitlendiyse, en son tarih/saat değeri döndürülür.

Hesap kilitli değilse, SQL uyumluluğu için 1/1/1754 döndürür.
Hayır

hem hem de RequiresQuestionAndAnswerEnablePasswordReset özellikleri olduğundatrueActiveDirectoryMembershipProvider, sınıfı kullanıcının önceden belirlenmiş bir soruyu yanıtlamasını gerektirerek parola sıfırlama güvenliğini destekler. Soruyu ve yanıtı desteklemek için, uygulama yapılandırma dosyasındaki üyelik sağlayıcıları için add Öğesini (ASP.NET Ayarlar Şeması) kullanarak aşağıdaki yapılandırma özniteliklerini ayarlamanız gerekir.

Yapılandırma özniteliği Öznitelik türü
attributeMapPasswordQuestion Unicode Dizesi türünde tek değerli bir öznitelik olmalıdır.
attributeMapPasswordAnswer Unicode Dizesi türünde tek değerli bir öznitelik olmalıdır.
attributeMapFailedPasswordAnswerCount Tamsayı türünde tek değerli bir öznitelik olmalıdır.
attributeMapFailedPasswordAnswerTime Büyük Tamsayı/Aralık türünde tek değerli bir öznitelik olmalıdır.
attributeMapFailedPasswordAnswerLockoutTime Büyük Tamsayı/Aralık türünde tek değerli bir öznitelik olmalıdır.

Parola sıfırlama güvenliğini kullanma hakkında daha fazla bilgi için özelliğine RequiresQuestionAndAnswer bakın.

Active Directory bağlantıları

ActiveDirectoryMembershipProvider Sınıfı bir Active Directory veya Active Directory Uygulama Modu (ADAM) sunucusuna bağlanmak için kullanıldığında, uygulama yapılandırma dosyasındaki üyelik sağlayıcıları için add Öğesi (ASP.NET Ayarlar Şeması) kullanılarak ayarlanan öznitelik, connectionProtection sınıfın ActiveDirectoryMembershipProvider bağlantı üzerinden gerçekleştirebileceği işlem türlerini kısıtlayabilir. connectionProtection özniteliği, örneğin Active Directory veya ADAM sunucusuna bağlantı oluşturmak için kullanacağı yöntemleri ActiveDirectoryMembershipProvider de belirler.

Aşağıdaki tabloda, bir Active Directory'ye bağlanırken özniteliğin connectionProtection etkisi gösterilmektedir.

connectionProtection ayar Etki
None sınıfı ActiveDirectoryMembershipProvider , bu kısıtlamalarla bir Active Directory'ye bağlanır.

- Parola ayarlayan herhangi bir yöntem başarısız olur. Active Directory, parolaları değiştirirken güvenli bir bağlantı gerektirir.
- Uygulama yapılandırma dosyasında üyelik için sağlayıcılar için add Öğesini (ASP.NET Ayarlar Şeması) kullanarak ve connectionPassword özniteliklerini açıkça ayarlamanız connectionUsername gerekir; aksi takdirde ActiveDirectoryMembershipProvider örnek bir ProviderException özel durum oluşturur.
Secure sınıfı, ActiveDirectoryMembershipProvider SSL kullanarak Active Directory'ye bağlanmayı dener. SSL başarısız olursa, oturum açma ve kapatma kullanarak Active Directory'ye ikinci bir bağlanma denemesi yapılır. Her iki deneme de başarısız olursa örnek ActiveDirectoryMembershipProvider bir ProviderException özel durum oluşturur.

Hem işlem kimlik bilgileri hem de açık kimlik bilgileri desteklenir.

Aşağıdaki tabloda, BIR ADAM sunucusuna bağlanırken özniteliğin connectionProtection etkisi gösterilmektedir.

connectionProtection ayar Etki
None sınıfı ActiveDirectoryMembershipProvider , bu kısıtlamayla bir ADAM sunucusuna bağlanır.

- ADAM sunucusunu güvenli olmayan bir bağlantı üzerinden parola gönderilmesine ve değiştirilmesine izin verecek şekilde açıkça yapılandırmadığınız sürece parola ayarlayan tüm yöntemler başarısız olur.

Hem işlem kimlik bilgileri hem de açık kimlik bilgileri desteklenir.
Secure ActiveDirectoryMembershipProvider sınıfı, SSL kullanarak ADAM sunucusuna bağlanmayı dener. Bağlantı kurulamıyorsa örnek ActiveDirectoryMembershipProvider bir ProviderException özel durum oluşturur.

Hem işlem kimlik bilgileri hem de açık kimlik bilgileri desteklenir.

ADAM Yapılandırması

ADAM sunucusu kullanılırken, ADAM örneği sınıfını tanımlayan User bir şema içermelidir. SıNıFını User , ADAM yükleme dizininde bulunan dosyanın LDIF içeri aktarmasıyla MS-User.ldf içeri aktarabilirsiniz.

sınıfı, ActiveDirectoryMembershipProvider varsayılan ağ bağlantı noktalarını kullanacak şekilde yapılandırılmış bir ADAM sunucusuyla çalışır. Aşağıdaki tabloda ADAM sunucusu için beklenen varsayılan değerler gösterilmektedir.

connectionProtection ayarı Beklenen ADAM bağlantı noktası
None 389
Secure 636

Oluşturucular

Name Description
ActiveDirectoryMembershipProvider()

sınıfının yeni bir örneğini ActiveDirectoryMembershipProvider oluşturur.

Özellikler

Name Description
ApplicationName

Özel üyelik sağlayıcısını kullanan uygulamanın adı.

CurrentConnectionProtection

Sunucuyla iletişimi korumak için kullanılan geçerli güvenlik düzeyini alır.

Description

Yönetim araçlarında veya diğer kullanıcı arabirimlerinde (UI) görüntülenmeye uygun kısa ve kolay bir açıklama alır.

(Devralındığı yer: ProviderBase)
EnablePasswordReset

Örneğin kullanıcıların parolalarını sıfırlamasına izin verecek şekilde yapılandırılıp yapılandırılmadığını ActiveDirectoryMembershipProvider belirten bir değer alır.

EnablePasswordRetrieval

Kullanıcının parolasının Active Directory veri deposundan alınıp alınamayacağını belirten bir değer alır. Bu özellik her zaman döndürür false.

EnableSearchMethods

Arama odaklı ActiveDirectoryMembershipProvider yöntemlerin kullanılabilir olup olmadığını gösteren bir değer alır.

MaxInvalidPasswordAttempts

Kullanıcının parola sıfırlama sorusu için izin verilen başarısız yanıt denemelerinin sayısını alır.

MinRequiredNonAlphanumericCharacters

Geçerli bir parolada bulunması gereken en az sayıda özel karakter alır.

MinRequiredPasswordLength

Parola için gereken en düşük uzunluğu alır.

Name

Yapılandırma sırasında sağlayıcıya başvurmak için kullanılan kolay adı alır.

(Devralındığı yer: ProviderBase)
PasswordAnswerAttemptLockoutDuration

Kullanıcı çok fazla hatalı parola yanıtı girişiminde bulunduktan sonra bir kullanıcı hesabının kilitlenme süresini alın.

PasswordAttemptWindow

Geçerli bir parola veya geçerli bir parola yanıtı sağlamaya yönelik ardışık başarısız girişimlerin izlendiği zaman penceresini alır.

PasswordFormat

Active Directory veri deposundaki parolaların biçimini gösteren bir değer alır.

PasswordStrengthRegularExpression

Parolayı değerlendirmek için kullanılan normal ifadeyi alır.

RequiresQuestionAndAnswer

Üyelik sağlayıcısının kullanıcı oluştururken parola sorusu ve yanıtı gerektirecek şekilde yapılandırılıp yapılandırılmadığını belirten bir değer alır.

RequiresUniqueEmail

Active Directory sunucusunda depolanan bir e-posta adresinin benzersiz olması gerekip gerekmediğini belirten bir değer alır.

Yöntemler

Name Description
ChangePassword(String, String, String)

Belirtilen kullanıcının parolasını değiştirir.

ChangePasswordQuestionAndAnswer(String, String, String, String)

Active Directory deposundaki bir kullanıcının parola sorusunu ve yanıtını güncelleştirir.

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

Active Directory veri deposuna yeni bir kullanıcı ekler.

DecryptPassword(Byte[])

Şifrelenmiş parolanın şifresini çözer.

(Devralındığı yer: MembershipProvider)
DeleteUser(String, Boolean)

Kullanıcının üyelik bilgilerini Active Directory veri deposundan kaldırır.

EncryptPassword(Byte[], MembershipPasswordCompatibilityMode)

Belirtilen parolayı belirtilen parola uyumluluk modunu kullanarak şifreler.

(Devralındığı yer: MembershipProvider)
EncryptPassword(Byte[])

Parolayı şifreler.

(Devralındığı yer: MembershipProvider)
Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
FindUsersByEmail(String, Int32, Int32, Int32)

Kullanıcının e-posta adresine göre Active Directory veri deposundan bir üyelik kullanıcıları koleksiyonu döndürür.

FindUsersByName(String, Int32, Int32, Int32)

Kullanıcı adına göre Active Directory veri deposundan bir kullanıcı koleksiyonu döndürür.

GeneratePassword()

Rastgele bir parola oluşturur.

GetAllUsers(Int32, Int32, Int32)

Active Directory veri kaynağında depolanan tüm kullanıcıların koleksiyonunu alır.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetNumberOfUsersOnline()

Her durumda bir NotSupportedException özel durum oluşturur.

GetPassword(String, String)

Belirtilen kullanıcının parolasını veritabanından döndürür. ActiveDirectoryMembershipProvider sınıfı bu yöntemi desteklemiyor.

GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
GetUser(Object, Boolean)

Belirtilen kullanıcı anahtarıyla ilişkili üyelik kullanıcı bilgilerini alır.

GetUser(String, Boolean)

Belirtilen kullanıcı adıyla ilişkili üyelik kullanıcı bilgilerini alır.

GetUserNameByEmail(String)

Belirtilen e-posta adresiyle ilişkili kullanıcı adını alır.

Initialize(String, NameValueCollection)

Örneğini ActiveDirectoryMembershipProvider uygulamanın yapılandırma dosyalarındaki özellik değerleriyle başlatır. Bu yöntem, kodunuzdan çağrılmak üzere tasarlanmamıştır.

MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
OnValidatingPassword(ValidatePasswordEventArgs)

Bir olay işleyicisi tanımlanmışsa olayı tetikler ValidatingPassword .

(Devralındığı yer: MembershipProvider)
ResetPassword(String, String)

Kullanıcının parolasını otomatik olarak oluşturulan yeni bir parolaya sıfırlar.

ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)
UnlockUser(String)

Üyelik kullanıcısını doğrulanabilmesi için kilidi temizler.

UpdateUser(MembershipUser)

Active Directory veri deposundaki bir kullanıcı hakkındaki bilgileri güncelleştirir.

ValidateUser(String, String)

Belirtilen kullanıcı adı ve parolanın Active Directory veri deposunda mevcut olduğunu doğrular.

Ekinlikler

Name Description
ValidatingPassword

Kullanıcı oluşturulduğunda, parola değiştirildiğinde veya parola sıfırlandığında gerçekleşir.

(Devralındığı yer: MembershipProvider)

Şunlara uygulanır

Ayrıca bkz.