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 kod örnekleri, bir örneği kullanmak ActiveDirectoryMembershipProvider üzere yapılandırılmış bir ASP.NET uygulamasının Web.config dosyasını gösterir. İlk örnek, Active Directory öznitelikleri için varsayılan eşlemeleri kullanır ve soru-cevap ile parola sıfırlama güvenliğini veya arama yöntemlerini çağırma özelliğini desteklemez. İkinci örnek, bir ActiveDirectoryMembershipProvider örnek için izin verilen tüm öznitelik ayarlarını gösterir.

İlk örnek, Active Directory öznitelikleri için varsayılan eşlemeleri kullanan basit bir yapılandırma dosyasıdır.

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

Bu örnekte, bir örneği ActiveDirectoryMembershipProvideriçin kullanılabilen tüm öznitelik ayarları gösterilir.

<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 ve serverSearchTimeout varsayılan olarak dakika olarak ayarlayın. Birimleri değiştirmek için öznitelik değerini "Days", "Hours", "Minutes", "Seconds" veya "Miliseconds" değerlerinden birine ayarlayın timeoutUnit . Öznitelik belirtilmezse, varsayılan değer "Dakika"dır.

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.

Not

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 eklemek 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 . Güvenli, kilitli modda çalışması gereken Web sunucuları için bu seçenek önerilmez.

Alternatif olarak, sınıfını çağıran bir "korumalı alan" derlemesi ActiveDirectoryMembershipProvider oluşturabilirsiniz. Bu derleme, yöntem çağrılarını sınıfa ActiveDirectoryMembershipProvider ileten bir sarmalayıcı sınıfını veya sınıfından ActiveDirectoryMembershipProvider türetilen bir sınıfı içerebilir. Her iki durumda da sarmalayıcı sınıfının sınırsız izin onaylaması DirectoryServicesPermission gerekir. 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ı kısıtlamasız DirectoryServicesPermission izni dahili olarak 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 bir 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 listelemektedir.

Bağlantı dizesi Kapsam
<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ının varsayılan adlandırma bağlamında köklenir.

Bağlantı dizesi belirli bir sunucu yerine bir Active Directory etki alanı belirtiyorsa ve özelliği isetrueActiveDirectoryMembershipProvider, parola değişikliklerinin etkili olduğundan ve EnablePasswordReset 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ı]/<container 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 gerçekleştirilir. Tüm arama yöntemleri dahil olmak üzere diğer tüm işlemler, kapsayıcıda kök erişimli alt ağaç aramaları gerçekleştirir.

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

Performansı geliştirmek için bağlantı dizesinin 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 özellikler ve bunların varsayılan öznitelik eşlemeleri listelemektedir ActiveDirectoryMembershipUser .

Önemli

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

Özellik Varsayılan dizin özniteliği Eşlenebilir mi?
ProviderUserKey Securityıdentifier No
UserName userPrincipalName Evet, ancak userPrincipalName veya sAMAccountName olmalıdır
Comment comment No
CreationDate whenCreated No
Email 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 No
PasswordQuestion yok Evet, ancak Unicode Dizesi türünde tek değerli bir öznitelik olmalıdır.
IsApproved Kullanıcı Hesabı Denetimi (AD)

mDS-UserAccountDisabled (ADAM)
No
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)
No
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.
No

hem hem EnablePasswordReset de RequiresQuestionAndAnswer özellikleri olduğundatrue, ActiveDirectoryMembershipProvider 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ında ü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 Bir Active Directory Uygulama Modu (ADAM) sunucusuna bağlanmak için kullanıldığında, connectionProtection uygulama yapılandırma dosyasında üyelik sağlayıcıları için add Öğesi (ASP.NET Ayarlar Şeması) kullanılarak ayarlanan öznitelik, 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 ActiveDirectoryMembershipProvider sınıfı 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 ActiveDirectoryMembershipProvider sınıfı, 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 içeri aktarabilirsiniz MS-User.ldf .

sınıfı, ActiveDirectoryMembershipProvider varsayılan ağ bağlantı noktalarını kullanmak üzere 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

ActiveDirectoryMembershipProvider()

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

Özellikler

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 false döndürür.

EnableSearchMethods

Arama odaklı ActiveDirectoryMembershipProvider yöntemlerin kullanılabilir olup olmadığını belirten 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 karakteri alır.

MinRequiredPasswordLength

Parola için gereken minimum 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 kilitlendiği süreyi elde edin.

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ı gerektiğini belirten bir değer alır.

Yöntemler

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 soru 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ş bir 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[])

Parolayı şifreler.

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

Belirtilen parola uyumluluk modunu kullanarak belirtilen 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 üyelik kullanıcılarının bir koleksiyonunu 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)

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

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

GetType()

Type Geçerli örneğini 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)

ActiveDirectoryMembershipProvider Uygulamanın yapılandırma dosyalarındaki özellik değerleriyle örneği başlatır. Bu yöntemin kodunuzdan çağrılması amaçlanmamıştır.

MemberwiseClone()

Geçerli Objectöğesinin sığ 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 dizeyi 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

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.