Sdílet prostřednictvím


ActiveDirectoryMembershipProvider Třída

Definice

Spravuje úložiště informací o členství pro aplikaci ASP.NET na serverech 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í soubor Web.config 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 vyhledávání. Druhý příklad ukazuje všechna nastavení atributů povolená pro instanci ActiveDirectoryMembershipProvider .

Prvním příkladem je jednoduchý konfigurační soubor používající 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í minuty. Pokud chcete změnit jednotky, nastavte hodnotu atributu timeoutUnit na hodnotu "Days", "Hours", "Minutes", "Seconds" nebo "Milisekundy". Pokud atribut není zadaný, výchozí hodnota je "Minutes".

Poznámky

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

Poznámka

Použití serveru ADAM vyžaduje konkrétní 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. Pokud chcete 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ého ze souborů zásad částečné důvěryhodnosti dodaných s ASP.NET. I když přidání DirectoryServicesPermission oprávnění do souboru zásad částečné důvěryhodnosti umožní použití ActiveDirectoryMembershipProvider třídy, zpřístupňuje System.DirectoryServices třídy oboru názvů všem kódům spuštěným na ASP.NET stránkách. Tato možnost se nedoporučuje pro žádné webové servery, které potřebují běžet v zabezpečeném režimu uzamčení.

Jako alternativu 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í ActiveDirectoryMembershipProvider metody do třídy, nebo třídu, která je odvozena z ActiveDirectoryMembershipProvider třídy. V obou případech musí třída obálky potvrdit neomezené DirectoryServicesPermission oprávnění. Nasaďte sestavení sandboxu v GAC a označte sestavení atributem AllowPartiallyTrustedCallersAttribute (APTCA). To umožní vašemu částečně důvěryhodnému kódu ASP.NET volat třídu obálky, a protože třída obálky interně potvrzuje neomezené DirectoryServicesPermission oprávnění, vaše třída obálky bude moct úspěšně volat zprostředkovatele.

V souboru Web.config musíte vytvořit položku connectionStrings Element (ASP.NET Settings Schema), která identifikuje server služby Active Directory, doménu služby Active Directory nebo oddíl aplikace SLUŽBY ADAM, který se má použít. Poskytovatel bude fungovat pouze v oboru domény nebo v podsadovém oboru v rámci domény. Následující tabulka obsahuje seznam povolených připojovacích řetězců a použitého oboru.

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ěží na zadané doméně nebo serveru. Ve službě AD se vytváření a odstraňování uživatelů provádí ve výchozím kontejneru users. 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 pro doménu.

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á NotSupportedExceptionchybu .
<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ěží na zadané doméně nebo serveru. 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í podstromů s kořeny 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 ActiveDirectoryMembershipUser třídě.

Následující tabulka uvádí ActiveDirectoryMembershipUser vlastnosti 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 whenCreated No
Email pošta Ano, ale musí to být 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í to být atribut s jednou hodnotou typu Řetězec Unicode.
IsApproved Řízení uživatelských účtů (AD)

mDS-UserAccountDisabled (ADAM)
No
IsLockedOut vypočteno z lockoutTime a doby trvání uzamčení AD (AD ve 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 doby uzamčení.

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 chybné heslo, vrátí se nejnovější hodnota data a času.

Pokud účet není uzamčený, vraťte 1. 1. 1754 kvůli kompatibilitě SQL.
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í být atribut s jednou hodnotou typu Řetězec unicode.
attributeMapPasswordAnswer Musí být atribut s jednou hodnotou typu Řetězec unicode.
attributeMapFailedPasswordAnswerCount Musí být atribut s jednou hodnotou typu Integer.
attributeMapFailedPasswordAnswerTime Musí být atribut s jednou hodnotou typu Large Integer/Interval.
attributeMapFailedPasswordAnswerLockoutTime Musí být atribut s jednou hodnotou typu Large Integer/Interval.

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

Připojení služby Active Directory

ActiveDirectoryMembershipProvider Pokud se třída používá pro připojení ke službě Active Directory nebo serveru connectionProtection ADAM (Active Directory Application Mode), atribut nastavený pomocí elementu add elementu 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 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á nastavuje heslo, selže. Služba Active Directory vyžaduje zabezpečené připojení při změně hesel.
- Atributy a connectionPassword musíte explicitně nastavit connectionUsername 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 ActiveDirectoryMembershipProvider se 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 oba pokusy selžou, ActiveDirectoryMembershipProvider instance vyvolá ProviderException výjimku.

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

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

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

– 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 procesu 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 procesu i explicitní přihlašovací údaje.

Konfigurace služby ADAM

Při použití serveru ADAM musí instance služby ADAM obsahovat schéma, které definuje User třídu. Třídu můžete importovat User pomocí importu souboru LDIF, který je MS-User.ldf 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í výchozí hodnoty očekávané pro server SLUŽBY 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 používající 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ích (UI).

(Zděděno od ProviderBase)
EnablePasswordReset

Získá hodnotu urč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é uživatel povoluje pro otázku resetování hesla.

MinRequiredNonAlphanumericCharacters

Získá minimální počet speciálních znaků, které musí být přítomny v platném hesle.

MinRequiredPasswordLength

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

Name

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

(Zděděno od ProviderBase)
PasswordAnswerAttemptLockoutDuration

Získejte 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 odpověď na 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í nakonfigurovaný tak, aby při vytváření uživatele vyžadoval otázku a odpověď na heslo.

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)

Aktualizuje 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 s hesly.

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

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

GetPassword(String, String)

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

GetType()

Získá aktuální Type instanci.

(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 pomocí hodnot vlastností z konfiguračních souborů aplikace. Tato metoda není určena k zavolání z 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)

Aktualizuje 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

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

(Zděděno od MembershipProvider)

Platí pro

Viz také