ActiveDirectoryMembershipProvider Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Spravuje ukládání informací o členství pro aplikaci ASP.NET na serverech active directory a režimu aplikací 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
Příklady
Následující příklad ukazuje soubor Web.config pro ASP.NET aplikaci nakonfigurovanou pro použití ActiveDirectoryMembershipProvider instance. Používá výchozí mapování atributů služby Active Directory. Nepodporuje zabezpečení resetování hesla s dotazem a odpovědí ani schopností volat metody hledání.
<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>
Poznámky
Tato třída je používána Membership třídami a MembershipUser poskytuje služby členství pro aplikaci ASP.NET 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é 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 příslušného souboru zásad důvěryhodnosti pro vaši aplikaci, nebo musíte vytvořit sestavení sandboxu, které je nasazené v GAC.
Třída ActiveDirectoryMembershipProvider vyžaduje neomezené DirectoryServicesPermission oprávnění ke spuštění. Toto oprávnění není přidáno do žádného ze souborů zásad částečné důvěryhodnosti, které jsou součástí ASP.NET. I když přidání DirectoryServicesPermission oprávnění k souboru zásad částečné důvěryhodnosti povolí 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 na vašich ASP.NET stránkách. Tato možnost se nedoporučuje pro žádné webové servery, které musí běžet v zabezpečeném zamknutém režimu.
Alternativně můžete vytvořit sestavení sandboxu, které volá ActiveDirectoryMembershipProvider třídu. Toto sestavení může obsahovat buď obálku třídy, která předává volání metody do ActiveDirectoryMembershipProvider třídy, nebo třídy, která je odvozena z ActiveDirectoryMembershipProvider třídy. V obou případech musí třída obálky uplatňovat neomezená DirectoryServicesPermission oprávnění. Nasaďte sestavení sandboxu v GAC a označte sestavení atributem AllowPartiallyTrustedCallersAttribute (APTCA). To umožní částečně důvěryhodnému ASP.NET kódu volat třídu obálky a protože třída obálky interně potvrzuje neomezené DirectoryServicesPermission oprávnění, třída obálky bude schopna úspěšně volat zprostředkovatele.
Je nutné vytvořit položku connectionStrings Element (ASP.NET Settings Schema) v souboru Web.config, který identifikuje server služby Active Directory, doménu služby Active Directory nebo oddíl aplikace ADAM, který se má použít. Poskytovatel bude fungovat pouze v oboru domény nebo v podskopu v rámci domény. Následující tabulka uvádí povolené připojovací řetězce a použitý obor.
| Připojovací řetězec | Scope |
|---|---|
| LDAP:// doména< nebo server>:[port] Číslo portu je volitelné pro službu ADAM a není potřeba pro službu Active Directory. |
Poskytovatel běží na zadané doméně nebo serveru. V 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 vyhledávacích metod, budou kořenové ve výchozím kontextu pojmenování 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 pro doménu, 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énu< nebo serveru>:[port]/<kontejner dn> Číslo portu je volitelné pro službu ADAM a není potřeba pro službu Active Directory. |
Poskytovatel 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ů v kořenovém adresáři v kontejneru. Pro servery ADAM určuje kontejner kořen oddílu aplikace nebo kontejner v rámci oddílu aplikace. Doporučujeme, aby připojovací řetězec definoval konkrétní kontejner, aby se zlepšil výkon. |
Instance ActiveDirectoryMembershipProvider mapuje atributy adresáře na ActiveDirectoryMembershipUser vlastnosti. Výchozí atributy se použijí, pokud se v souboru Web.config neprovede mapování atributů. Další informace o mapování atributů naleznete v jednotlivých vlastnostech v ActiveDirectoryMembershipUser dokumentaci ke 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. Je nutné zajistit, aby citlivé informace z adresáře nebyly vystaveny prostřednictvím mapovaných atributů.
| Vlastnictví | Výchozí atribut adresáře | Je možné mapovat? |
|---|---|---|
| ProviderUserKey | identifikátor zabezpečení | Ne |
| UserName | userPrincipalName | Ano, ale musí to být userPrincipalName nebo sAMAccountName. |
| Comment | komentář | Ne |
| CreationDate | whenCreated | Ne |
| pošta | Ano, ale musí to být atribut typu Unicode String s jednou hodnotou. | |
| LastActivityDate | není k dispozici | ActiveDirectoryMembershipProviderNepodporuje . |
| LastLoginDate | není k dispozici | ActiveDirectoryMembershipProviderNepodporuje . |
| LastPasswordChangedDate | pwdLastSet | Ne |
| PasswordQuestion | žádné | Ano, ale musí to být atribut typu Unicode String s jednou hodnotou. |
| IsApproved | User-Account-Control (AD) mDS-UserAccountDisabled (ADAM) |
Ne |
| IsLockedOut | vypočítané 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) |
Ne |
| LastLockoutDate | Pokud je uživatel uzamčen z důvodu příliš velkého počtu chybných pokusů o zadání hesla, vrátí se atribut doby uzamčení. Pokud je uživatel uzamčen z důvodu příliš velkého počtu chybných pokusů o odpověď na 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 i 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 1. 1. 1754 kvůli kompatibilitě SQL. |
Ne |
Pokud jsou trueobě RequiresQuestionAndAnswer vlastnosti EnablePasswordReset , třída podporuje zabezpečení resetování hesla tím, ActiveDirectoryMembershipProvider že vyžaduje, aby uživatel odpověděl na předem určený dotaz. Chcete-li podporovat otázku a odpověď, je nutné nastavit následující konfigurační atributy pomocí elementu add pro zprostředkovatele pro členství (ASP.NET Nastavení schématu) v konfiguračním souboru aplikace.
| Atribut konfigurace | Typ atributu |
|---|---|
attributeMapPasswordQuestion |
Musí být atribut typu Unicode String s jednou hodnotou. |
attributeMapPasswordAnswer |
Musí být atribut typu Unicode String s jednou hodnotou. |
attributeMapFailedPasswordAnswerCount |
Musí být atribut typu Integer s jednou hodnotou. |
attributeMapFailedPasswordAnswerTime |
Musí být atribut s jednou hodnotou typu Velké celé číslo nebo interval. |
attributeMapFailedPasswordAnswerLockoutTime |
Musí být atribut s jednou hodnotou typu Velké celé číslo nebo interval. |
Další informace o použití zabezpečení resetování hesla najdete v RequiresQuestionAndAnswer této vlastnosti.
Připojení služby Active Directory
ActiveDirectoryMembershipProvider Pokud se třída používá k připojení ke službě Active Directory nebo serveru adam (Active Directory Application Mode), atribut nastavený pomocí doplňku Element pro zprostředkovatele pro členství (ASP.NET Schéma nastavení) v konfiguračním souboru aplikace může omezit typy operací, ActiveDirectoryMembershipProviderconnectionProtection které 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 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 ActiveDirectoryMembershipProvider se připojí ke službě Active Directory s těmito omezeními. – Všechny metody, které nastaví heslo, selžou. Služba Active Directory vyžaduje zabezpečené připojení při změně hesel. – Musíte explicitně nastavit connectionUsername a connectionPassword atributy pomocí add Element pro zprostředkovatele pro členství (ASP.NET Nastavení schématu) v konfiguračním souboru aplikace; jinak ActiveDirectoryMembershipProvider instance vyvolá ProviderException 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í přihlašování a zapečetění. Pokud se oba pokusy nezdaří, 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 ADAM.
connectionProtection nastavení |
Účinek |
|---|---|
| None | Třída ActiveDirectoryMembershipProvider se připojí k serveru ADAM s tímto omezením. – Všechny metody, které nastaví hesla, selžou, pokud explicitně nenakonfigurujete server ADAM tak, aby se hesla odesílala a měnily přes nezabezpečené připojení. Podporují se přihlašovací údaje procesu i explicitní přihlašovací údaje. |
Secure |
Třída ActiveDirectoryMembershipProvider se 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 pomocí importu UserMS-User.ldf LDIF souboru dostupného v instalačním adresáři SLUŽBY ADAM.
Třída ActiveDirectoryMembershipProvider bude pracovat se serverem ADAM nakonfigurovaným tak, aby používala výchozí síťové porty. Následující tabulka uvádí výchozí hodnoty očekávané pro server ADAM.
| nastavení connectionProtection | Očekávaný port ADAM |
|---|---|
| None | 389 |
Secure |
636 |
Konstruktory
| Name | Description |
|---|---|
| ActiveDirectoryMembershipProvider() |
Vytvoří novou instanci ActiveDirectoryMembershipProvider třídy. |
Vlastnosti
| Name | Description |
|---|---|
| ApplicationName |
Název aplikace používajícího 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 označující, jestli ActiveDirectoryMembershipProvider je instance nakonfigurovaná tak, aby uživatelům umožňovala resetovat svá hesla. |
| EnablePasswordRetrieval |
Získá hodnotu určující, zda je možné heslo uživatele načíst z úložiště dat služby Active Directory. Tato vlastnost vždy vrátí |
| EnableSearchMethods |
Získá hodnotu označující, zda vyhledávací metody ActiveDirectoryMembershipProvider jsou k dispozici. |
| MaxInvalidPasswordAttempts |
Získá počet neúspěšných pokusů o odpověď, které uživatel povolí pro otázku resetování hesla. |
| MinRequiredNonAlphanumericCharacters |
Získá minimální počet speciálních znaků, které musí být přítomné v platném hesle. |
| MinRequiredPasswordLength |
Získá minimální délku požadovanou pro heslo. |
| Name |
Získá popisný název použitý k odkazování na zprostředkovatele během konfigurace. (Zděděno od ProviderBase) |
| PasswordAnswerAttemptLockoutDuration |
Získejte dobu, po kterou je uživatelský účet uzamčený, když uživatel provede příliš mnoho chybných pokusů o odpověď na heslo. |
| PasswordAttemptWindow |
Získá časové okno, během kterého se po sobě jdoucí neúspěšné pokusy o zadání platného hesla nebo platné odpovědi na heslo sledují. |
| 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 otázku hesla a odpověď. |
| RequiresUniqueEmail |
Získá hodnotu určující, zda e-mailová adresa uložená na serveru služby Active Directory musí být jedinečná. |
Metody
| Name | Description |
|---|---|
| ChangePassword(String, String, String) |
Změní heslo pro zadaného uživatele. |
| ChangePasswordQuestionAndAnswer(String, String, String, String) |
Aktualizuje otázku a odpověď hesla 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[], MembershipPasswordCompatibilityMode) |
Zašifruje zadané heslo pomocí zadaného režimu kompatibility s heslem. (Zděděno od MembershipProvider) |
| EncryptPassword(Byte[]) |
Zašifruje heslo. (Zděděno od MembershipProvider) |
| Equals(Object) |
Určuje, zda je zadaný objekt roven 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í funkce hash. (Zděděno od Object) |
| GetNumberOfUsersOnline() |
NotSupportedException Vyvolá výjimku ve všech případech. |
| GetPassword(String, String) |
Vrátí heslo zadaného uživatele z databáze. Třída ActiveDirectoryMembershipProvider tuto metodu nepodporuje. |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| GetUser(Object, Boolean) |
Získá informace o uživateli členství přidružené k zadanému uživatelskému klíči. |
| GetUser(String, Boolean) |
Získá informace o uživateli členství 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 Object. (Zděděno od Object) |
| OnValidatingPassword(ValidatePasswordEventArgs) |
ValidatingPassword Vyvolá událost, 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ěřuje, že zadané uživatelské jméno a heslo existují v úložišti dat služby Active Directory. |
Událost
| Name | Description |
|---|---|
| ValidatingPassword |
Nastane při vytvoření uživatele, změně hesla nebo resetování hesla. (Zděděno od MembershipProvider) |