ActiveDirectoryMembershipProvider Třída

Definice

Spravuje ukládání informací o členství pro aplikaci ASP.NET na serverech služby Active Directory a aplikačního režimu Služby Active Directory.

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
Dědičnost
ActiveDirectoryMembershipProvider

Příklady

Následující příklady kódu ukazují Web.config soubor pro ASP.NET aplikaci nakonfigurovanou ActiveDirectoryMembershipProvider pro použití instance. První příklad používá výchozí mapování atributů služby Active Directory a nepodporuje zabezpečení resetování hesla pomocí otázek a odpovědí ani možnost volat metody hledání. Druhý příklad ukazuje všechna nastavení atributů povolená pro instanci ActiveDirectoryMembershipProvider .

Prvním příkladem je jednoduchý konfigurační soubor, který používá výchozí mapování atributů služby Active Directory.

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

Tento příklad ukazuje všechna nastavení atributů, která jsou k dispozici pro instanci .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 a serverSearchTimeout ve výchozím nastavení na minuty. Pokud chcete změnit jednotky, nastavte hodnotu atributu timeoutUnit na dny, hodiny, minuty, sekundy nebo milisekundy. Pokud atribut není zadaný, výchozí hodnota je Minuty.

Poznámky

Tuto třídu používají Membership třídy a MembershipUser k poskytování členských služeb pro aplikaci ASP.NET pomocí serveru Active Directory (AD) nebo ACTIVE Directory Application Mode (ADAM).

Poznámka

Použití serveru ADAM vyžaduje specifickou konfiguraci. Další informace najdete v části Konfigurace služby ADAM níže.

Důležité

Instance ActiveDirectoryMembershipProvider funguje pouze ve výchozí konfiguraci zásad úplného vztahu důvěryhodnosti ASP.NET. Aby bylo možné použít ActiveDirectoryMembershipProvider instanci na jakékoli úrovni částečné důvěryhodnosti, musíte buď provést změny v příslušném souboru zásad důvěryhodnosti pro vaši aplikaci, nebo musíte vytvořit sestavení "sandboxu", které je nasazeno v GAC.

Třída ActiveDirectoryMembershipProvider ke spuštění vyžaduje neomezené DirectoryServicesPermission oprávnění. Toto oprávnění se nepřidá do žádných souborů zásad částečné důvěryhodnosti, které jsou součástí ASP.NET. I když přidáním DirectoryServicesPermission oprávnění k souboru zásad částečné důvěryhodnosti povolíte použití ActiveDirectoryMembershipProvider třídy, zpřístupníte System.DirectoryServices tak třídy oboru názvů všem kódům spuštěným v ASP.NET stránkách. Tato možnost se nedoporučuje pro žádné webové servery, které musí běžet v zabezpečeném režimu uzamčení.

Alternativně můžete vytvořit sestavení "sandboxu", které volá ActiveDirectoryMembershipProvider třídu . Toto sestavení může obsahovat buď třídu obálky, která předává volání metody do ActiveDirectoryMembershipProvider třídy, nebo třídu, která je odvozena z ActiveDirectoryMembershipProvider třídy . V obou případech musí třída obálky DirectoryServicesPermission potvrdit neomezené oprávnění. Nasaďte sestavení sandboxu v GAC a označte sestavení atributem AllowPartiallyTrustedCallersAttribute (APTCA). To umožní kódu částečně důvěryhodného ASP.NET volat třídu obálky, a protože třída obálky interně potvrzuje neomezené oprávnění, vaše třída obálky bude moct DirectoryServicesPermission úspěšně volat zprostředkovatele.

V souboru Web.config musíte vytvořit položku elementu connectionStrings (ASP.NET Settings Schema), která identifikuje server služby Active Directory, doménu služby Active Directory nebo oddíl aplikace ADAM, které chcete použít. Poskytovatel bude fungovat pouze v oboru domény nebo v podmnožině v rámci domény. Následující tabulka uvádí povolené připojovací řetězce a použitý obor.

Připojovací řetězec Obor
<LDAP:// doména nebo server>:[port]

Číslo portu je pro službu ADAM volitelné a není potřeba pro službu Active Directory.
Zprostředkovatel běží pro zadanou doménu nebo server. Ve službě AD se vytváření a odstraňování uživatelů provádí ve výchozím kontejneru uživatelů. Všechny ostatní operace, včetně všech metod vyhledávání, budou mít kořeny ve výchozím názvovém kontextu domény.

Pokud připojovací řetězec určuje doménu služby Active Directory místo konkrétního serveru a EnablePasswordReset vlastnost je true, ActiveDirectoryMembershipProvider instance se vždy připojí k serveru s rolí primárního řadiče domény, aby se zajistilo, že se změny hesla projeví a budou k dispozici při ValidateUser zavolání metody.

Tento připojovací řetězec není při použití služby ADAM povolený a vyvolá chybu NotSupportedException.
<LDAP:// doména nebo server>:[port]/<dn kontejneru>

Číslo portu je pro službu ADAM volitelné a není potřeba pro službu Active Directory.
Zprostředkovatel běží pro zadanou doménu nebo server. Vytvoření a odstranění uživatele se provádí pouze v zadaném kontejneru. Všechny ostatní operace, včetně všech metod vyhledávání, provádějí vyhledávání v podstromech s rootem v kontejneru.

Pro servery ADAM určuje kontejner kořen oddílu aplikace nebo kontejner v rámci oddílu aplikace.

Pro zvýšení výkonu doporučujeme, aby připojovací řetězec definoval konkrétní kontejner.

Instance ActiveDirectoryMembershipProvider mapuje atributy adresáře na ActiveDirectoryMembershipUser vlastnosti. Výchozí atributy se použijí, pokud v souboru Web.config není provedeno mapování atributů. Další informace o mapování atributů najdete v jednotlivých vlastnostech v dokumentaci ke třídám ActiveDirectoryMembershipUser .

Následující tabulka uvádí vlastnosti ActiveDirectoryMembershipUser a jejich výchozí mapování atributů.

Důležité

Třída ActiveDirectoryMembershipProvider explicitně nekontroluje, že atributy zprostředkovatele nejsou mapovány na základní atributy objektu uživatele v adresáři. Musíte zajistit, aby citlivé informace z adresáře nebyly zpřístupněny prostřednictvím mapovaných atributů.

Vlastnost Výchozí atribut adresáře Dá se mapovat?
ProviderUserKey Securityidentifier No
UserName userPrincipalName (Hlavní název uživatele) Ano, ale musí to být buď userPrincipalName, nebo sAMAccountName.
Comment comment No
CreationDate při vytvoření No
Email pošta Ano, ale musí se jednat o atribut s jednou hodnotou typu Řetězec unicode.
LastActivityDate Není k dispozici Nepodporuje .ActiveDirectoryMembershipProvider
LastLoginDate Není k dispozici Nepodporuje .ActiveDirectoryMembershipProvider
LastPasswordChangedDate pwdLastSet No
PasswordQuestion žádné Ano, ale musí se jednat o atribut s jednou hodnotou typu Řetězec unicode.
IsApproved Řízení uživatelských účtů (AD)

mDS-UserAccountDisabled (ADAM)
No
IsLockedOut vypočítané z lockoutTime a doby trvání uzamčení AD (AD v systému Windows 2000)

msDS-User-Account-Control-Computed (AD v systému Windows Server 2003)

msDS-User-Account-Control-Computed (ADAM)
No
LastLockoutDate Pokud je uživatel uzamčen kvůli příliš mnoha pokusům o chybné heslo, vrátí se atribut lockout time.

Pokud je uživatel uzamčen kvůli příliš mnoha pokusům o odpověď na chybné heslo, vrátí se hodnota uložená v atributu definovaném uživatelem attributeMapFailedPasswordAnswerLockoutTime .

Pokud je uživatel uzamčený kvůli chybnému heslu a příliš mnoha pokusům o zadání hesla, vrátí se nejnovější hodnota data a času.

Pokud účet není uzamčený, vraťte kvůli kompatibilitě SQL hodnotu 1.1.1754.
No

Pokud jsou truevlastnosti i EnablePasswordResetRequiresQuestionAndAnswer , ActiveDirectoryMembershipProvider třída podporuje zabezpečení resetování hesla tím, že vyžaduje, aby uživatel odpověděl na předem stanovenou otázku. Chcete-li podpořit otázku a odpověď, musíte nastavit následující atributy konfigurace pomocí elementu add pro zprostředkovatele pro členství (ASP.NET Schéma nastavení) v konfiguračním souboru aplikace.

Atribut konfigurace Typ atributu
attributeMapPasswordQuestion Musí to být atribut s jednou hodnotou typu Řetězec unicode.
attributeMapPasswordAnswer Musí to být atribut s jednou hodnotou typu Řetězec unicode.
attributeMapFailedPasswordAnswerCount Musí to být atribut s jednou hodnotou typu Integer.
attributeMapFailedPasswordAnswerTime Musí se jednat o atribut s jednou hodnotou typu Velké celé číslo/interval.
attributeMapFailedPasswordAnswerLockoutTime Musí se jednat o atribut s jednou hodnotou typu Velké celé číslo/interval.

Další informace o použití zabezpečení pro resetování hesla najdete ve RequiresQuestionAndAnswer vlastnosti .

Připojení Active Directory

ActiveDirectoryMembershipProvider Pokud se třída používá pro připojení k serveru connectionProtection active directory nebo serveru ADAM (Active Directory Application Mode), atribut nastavený pomocí elementu add pro zprostředkovatele pro členství (ASP.NET Schéma nastavení) v konfiguračním souboru aplikace může omezit typy operací, které ActiveDirectoryMembershipProvider může třída provádět přes připojení. Atribut connectionProtection také určuje metody, které ActiveDirectoryMembershipProvider instance použije k vytvoření připojení k serveru Služby Active Directory nebo serveru ADAM.

Následující tabulka ukazuje účinek atributu connectionProtection při připojování ke službě Active Directory.

connectionProtection Nastavení Účinek
None Třída se ActiveDirectoryMembershipProvider připojí ke službě Active Directory s těmito omezeními.

– Jakákoli metoda, která nastaví heslo, se nezdaří. Služba Active Directory vyžaduje zabezpečené připojení při změně hesel.
– Musíte explicitně nastavit connectionUsername atributy a connectionPassword pomocí elementu add pro zprostředkovatele pro členství (ASP.NET Schéma nastavení) v konfiguračním ProviderException souboru aplikace, ActiveDirectoryMembershipProvider jinak instance vyvolá výjimku.
Secure Třída se ActiveDirectoryMembershipProvider pokusí připojit ke službě Active Directory pomocí protokolu SSL. Pokud ssl selže, provede se druhý pokus o připojení ke službě Active Directory pomocí sign-and-seal. Pokud se oba pokusy nezdaří, ActiveDirectoryMembershipProvider instance vyvolá ProviderException výjimku.

Podporují se přihlašovací údaje procesů i explicitní přihlašovací údaje.

Následující tabulka ukazuje účinek atributu connectionProtection při připojování k serveru ADAM.

connectionProtection Nastavení Účinek
None Třída se ActiveDirectoryMembershipProvider připojí k serveru ADAM s tímto omezením.

– Jakákoli metoda, která nastavuje hesla, selže, pokud explicitně nenakonfigurujete server ADAM tak, aby umožňoval odesílání a změnu hesel přes nezabezpečené připojení.

Podporují se přihlašovací údaje procesů i explicitní přihlašovací údaje.
Secure Třída se ActiveDirectoryMembershipProvider pokusí připojit k serveru ADAM pomocí protokolu SSL. Pokud nelze vytvořit připojení, ActiveDirectoryMembershipProvider instance vyvolá ProviderException výjimku.

Podporují se přihlašovací údaje procesů i explicitní přihlašovací údaje.

Konfigurace služby ADAM

Při použití serveru ADAM musí instance adam obsahovat schéma, které definuje User třídu . Třídu můžete importovat User pomocí importu souboru LDIF, který MS-User.ldf je k dispozici v instalačním adresáři SLUŽBY ADAM.

Třída ActiveDirectoryMembershipProvider bude pracovat se serverem ADAM nakonfigurovaným tak, aby používal výchozí síťové porty. Následující tabulka uvádí očekávané výchozí hodnoty pro server ADAM.

connectionProtection – nastavení Očekávaný port služby ADAM
None 389
Secure 636

Konstruktory

ActiveDirectoryMembershipProvider()

Vytvoří novou instanci třídy ActiveDirectoryMembershipProvider.

Vlastnosti

ApplicationName

Název aplikace, která používá vlastního zprostředkovatele členství.

CurrentConnectionProtection

Získá aktuální úroveň zabezpečení, která se používá k ochraně komunikace se serverem.

Description

Získá stručný popis vhodný pro zobrazení v nástrojích pro správu nebo jiných uživatelských rozhraní (UI).

(Zděděno od ProviderBase)
EnablePasswordReset

Získá hodnotu označující, zda ActiveDirectoryMembershipProvider je instance nakonfigurována tak, aby uživatelům umožňovala resetovat hesla.

EnablePasswordRetrieval

Získá hodnotu určující, zda heslo uživatele lze načíst z úložiště dat služby Active Directory. Tato vlastnost vždy vrátí hodnotu false.

EnableSearchMethods

Získá hodnotu označující, zda jsou k dispozici metody orientované na ActiveDirectoryMembershipProvider vyhledávání.

MaxInvalidPasswordAttempts

Získá počet neúspěšných pokusů o odpověď, které je uživateli povoleno pro otázku resetování hesla.

MinRequiredNonAlphanumericCharacters

Získá minimální počet speciálních znaků, které musí obsahovat platné heslo.

MinRequiredPasswordLength

Získá minimální délku vyžadovanou pro heslo.

Name

Získá popisný název použitý k odkaz na zprostředkovatele během konfigurace.

(Zděděno od ProviderBase)
PasswordAnswerAttemptLockoutDuration

Zjistěte dobu, po kterou je uživatelský účet uzamčený poté, co uživatel provede příliš mnoho chybných pokusů o odpověď na heslo.

PasswordAttemptWindow

Získá časové období, během kterého jsou sledovány po sobě jdoucí neúspěšné pokusy o zadání platného hesla nebo platné heslo.

PasswordFormat

Získá hodnotu označující formát hesel v úložišti dat služby Active Directory.

PasswordStrengthRegularExpression

Získá regulární výraz použitý k vyhodnocení hesla.

RequiresQuestionAndAnswer

Získá hodnotu označující, zda je zprostředkovatel členství nakonfigurován tak, aby při vytváření uživatele vyžadoval dotaz a odpověď hesla.

RequiresUniqueEmail

Získá hodnotu označující, zda e-mailová adresa uložená na serveru služby Active Directory musí být jedinečná.

Metody

ChangePassword(String, String, String)

Změní heslo pro zadaného uživatele.

ChangePasswordQuestionAndAnswer(String, String, String, String)

Aktualizace otázku a odpověď na heslo pro uživatele v úložišti služby Active Directory.

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

Přidá nového uživatele do úložiště dat služby Active Directory.

DecryptPassword(Byte[])

Dešifruje šifrované heslo.

(Zděděno od MembershipProvider)
DeleteUser(String, Boolean)

Odebere informace o členství uživatele z úložiště dat služby Active Directory.

EncryptPassword(Byte[])

Zašifruje heslo.

(Zděděno od MembershipProvider)
EncryptPassword(Byte[], MembershipPasswordCompatibilityMode)

Zašifruje zadané heslo pomocí zadaného režimu kompatibility hesla.

(Zděděno od MembershipProvider)
Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
FindUsersByEmail(String, Int32, Int32, Int32)

Vrátí kolekci uživatelů členství z úložiště dat služby Active Directory na základě e-mailové adresy uživatele.

FindUsersByName(String, Int32, Int32, Int32)

Vrátí kolekci uživatelů z úložiště dat služby Active Directory na základě uživatelského jména.

GeneratePassword()

Vygeneruje náhodné heslo.

GetAllUsers(Int32, Int32, Int32)

Získá kolekci všech uživatelů uložených ve zdroji dat služby Active Directory.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetNumberOfUsersOnline()

NotSupportedException Ve všech případech vyvolá výjimku.

GetPassword(String, String)

Vrátí heslo zadaného uživatele z databáze. Třída ActiveDirectoryMembershipProvider tuto metodu nepodporuje.

GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
GetUser(Object, Boolean)

Získá informace o členství uživatele přidružené k zadanému uživatelskému klíči.

GetUser(String, Boolean)

Získá informace o členství uživatele přidružené k zadanému uživatelskému jménu.

GetUserNameByEmail(String)

Získá uživatelské jméno přidružené k zadané e-mailové adrese.

Initialize(String, NameValueCollection)

Inicializuje ActiveDirectoryMembershipProvider instanci s hodnotami vlastností z konfiguračních souborů aplikace. Tato metoda není určena k zavolání z vašeho kódu.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnValidatingPassword(ValidatePasswordEventArgs)

Vyvolá událost, ValidatingPassword pokud byla definována obslužná rutina události.

(Zděděno od MembershipProvider)
ResetPassword(String, String)

Resetuje heslo uživatele na nové, automaticky vygenerované heslo.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
UnlockUser(String)

Vymaže zámek, aby bylo možné ověřit uživatele členství.

UpdateUser(MembershipUser)

Aktualizace informace o uživateli v úložišti dat služby Active Directory.

ValidateUser(String, String)

Ověří, že zadané uživatelské jméno a heslo existují v úložišti dat služby Active Directory.

Událost

ValidatingPassword

Vyvolá se při vytvoření uživatele, změně hesla nebo resetování hesla.

(Zděděno od MembershipProvider)

Platí pro

Viz také