ActiveDirectoryMembershipProvider Klasa

Definicja

Zarządza magazynem informacji o członkostwie dla aplikacji ASP.NET na serwerach usługi Active Directory i Trybu aplikacji usługi 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
Dziedziczenie
ActiveDirectoryMembershipProvider

Przykłady

W poniższych przykładach kodu przedstawiono plik Web.config dla aplikacji ASP.NET skonfigurowanej do używania ActiveDirectoryMembershipProvider wystąpienia. W pierwszym przykładzie użyto domyślnych mapowań atrybutów usługi Active Directory i nie obsługuje zabezpieczeń resetowania haseł z pytaniem i odpowiedzią ani możliwością wywoływania metod wyszukiwania. W drugim przykładzie przedstawiono wszystkie ustawienia atrybutów dozwolone dla ActiveDirectoryMembershipProvider wystąpienia.

Pierwszy przykład to prosty plik konfiguracji używający domyślnych mapowań atrybutów usługi 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>  

W tym przykładzie przedstawiono wszystkie ustawienia atrybutów, które są dostępne dla wystąpienia klasy 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 wartość serverSearchTimeout domyślna to minuty. Aby zmienić jednostki, ustaw wartość atrybutu timeoutUnit na jedną z wartości "Days", "Hours", "Minutes", "Seconds" lub "Milliseconds". Jeśli atrybut nie zostanie określony, wartość domyślna to "Minuty".

Uwagi

Ta klasa jest używana przez Membership klasy i MembershipUser do świadczenia usług członkostwa dla aplikacji ASP.NET przy użyciu serwera usługi Active Directory (AD) lub trybu aplikacji usługi Active Directory (ADAM).

Uwaga

Korzystanie z serwera ADAM wymaga określonej konfiguracji. Aby uzyskać więcej informacji, zobacz sekcję Konfiguracja ADAM poniżej.

Ważne

Wystąpienie ActiveDirectoryMembershipProvider działa tylko w domyślnej konfiguracji zasad pełnego zaufania ASP.NET. Aby można było używać ActiveDirectoryMembershipProvider wystąpienia na dowolnym poziomie częściowo zaufania, musisz wprowadzić zmiany w odpowiednim pliku zasad zaufania dla aplikacji lub należy utworzyć zestaw "piaskownicy" wdrożony w usłudze GAC.

Klasa ActiveDirectoryMembershipProvider wymaga nieograniczonego DirectoryServicesPermission uprawnienia do uruchamiania. To uprawnienie nie jest dodawane do żadnych plików zasad częściowo zaufania dostarczonych z ASP.NET. Mimo że dodanie DirectoryServicesPermission uprawnienia do pliku zasad częściowego zaufania umożliwi użycie ActiveDirectoryMembershipProvider klasy, dzięki temu System.DirectoryServices klasy przestrzeni nazw będą dostępne dla dowolnego kodu uruchomionego na stronach ASP.NET. Ta opcja nie jest zalecana dla wszystkich serwerów sieci Web, które muszą działać w bezpiecznym, zablokowanym trybie.

Alternatywnie można utworzyć zestaw "piaskownicy", który wywołuje klasę ActiveDirectoryMembershipProvider . Ten zestaw może zawierać klasę otoki, która przekazuje wywołania metody do ActiveDirectoryMembershipProvider klasy lub klasy pochodzącej ActiveDirectoryMembershipProvider z klasy. W obu przypadkach klasa otoki musi potwierdzić nieograniczone DirectoryServicesPermission uprawnienie. Wdróż zestaw piaskownicy w usłudze GAC i oznacz zestaw za pomocą atrybutu AllowPartiallyTrustedCallersAttribute APTCA. Umożliwi to częściowo zaufany kod ASP.NET wywołania klasy otoki, a ponieważ klasa otoki wewnętrznie potwierdza nieograniczone DirectoryServicesPermission uprawnienie, klasa otoki będzie mogła pomyślnie wywołać dostawcę

Należy utworzyć wpis connectionStrings Element (schemat ustawień ASP.NET) w pliku Web.config, który identyfikuje serwer usługi Active Directory, domenę usługi Active Directory lub partycję aplikacji ADAM do użycia. Dostawca będzie działać tylko w zakresie domeny lub w podzakresie w domenie. W poniższej tabeli wymieniono dozwolone parametry połączenia i używany zakres.

Parametry połączenia Zakres
<LDAP:// domain lub serwer>:[port]

Numer portu jest opcjonalny dla programu ADAM i nie jest wymagany dla usługi Active Directory.
Dostawca jest uruchamiany względem określonej domeny lub serwera. W usłudze AD tworzenie i usuwanie użytkowników odbywa się w domyślnym kontenerze użytkowników. Wszystkie inne operacje, w tym wszystkie metody wyszukiwania, zostaną zakorzenione w domyślnym kontekście nazewnictwa dla domeny.

Jeśli parametry połączenia określają domenę usługi Active Directory, a nie określony serwer, a EnablePasswordReset właściwość to true, ActiveDirectoryMembershipProvider wystąpienie zawsze będzie łączyć się z serwerem z rolą kontrolera PDC dla domeny, aby upewnić się, że zmiany haseł zaczną obowiązywać i są dostępne po ValidateUser wywołaniu metody.

Te parametry połączenia nie są dozwolone podczas korzystania z programu ADAM i zgłaszają błąd NotSupportedException.
<LDAP:// domain lub server>:[port]/<container dn>

Numer portu jest opcjonalny dla programu ADAM i nie jest wymagany dla usługi Active Directory.
Dostawca jest uruchamiany względem określonej domeny lub serwera. Tworzenie i usuwanie użytkownika odbywa się tylko w określonym kontenerze. Wszystkie inne operacje, w tym metody wyszukiwania, wykonują wyszukiwania poddrzewa zakorzenione w kontenerze.

W przypadku serwerów ADAM kontener określa katalog główny partycji aplikacji lub kontener w partycji aplikacji.

Zalecamy zdefiniowanie parametrów połączenia określonego kontenera w celu zwiększenia wydajności.

Wystąpienie ActiveDirectoryMembershipProvider mapuje atrybuty katalogu na ActiveDirectoryMembershipUser właściwości. Atrybuty domyślne są używane, jeśli w pliku Web.config nie jest wykonywane mapowanie atrybutów. Aby uzyskać więcej informacji na temat mapowań atrybutów, zobacz poszczególne właściwości w ActiveDirectoryMembershipUser dokumentacji klasy.

W poniższej tabeli wymieniono ActiveDirectoryMembershipUser właściwości i ich domyślne mapowania atrybutów.

Ważne

Klasa ActiveDirectoryMembershipProvider nie sprawdza jawnie, czy atrybuty dostawcy nie są mapowane na podstawowe atrybuty obiektu użytkownika w katalogu. Należy upewnić się, że poufne informacje z katalogu nie są uwidocznione za pomocą zamapowanych atrybutów.

Właściwość Domyślny atrybut katalogu Czy można mapować?
ProviderUserKey Securityidentifier Nie
UserName userPrincipalName Tak, ale musi mieć wartość userPrincipalName lub sAMAccountName
Comment komentarz Nie
CreationDate whenCreated Nie
Email mail (poczta) Tak, ale musi być atrybutem jednowartościowym typu Unicode String.
LastActivityDate n/d Nieobsługiwane przez ActiveDirectoryMembershipProviderprogram .
LastLoginDate n/d Nieobsługiwane przez ActiveDirectoryMembershipProviderprogram .
LastPasswordChangedDate pwdLastSet Nie
PasswordQuestion brak Tak, ale musi być atrybutem jednowartościowym typu Unicode String.
IsApproved Kontrola konta użytkownika (AD)

mDS-UserAccountDisabled (ADAM)
Nie
IsLockedOut obliczone z lockoutTime i czas trwania blokady usługi AD (AD w systemie Windows 2000)

msDS-User-Account-Control-Computed (AD w systemie Windows Server 2003)

msDS-User-Account-Control-Computed (ADAM)
Nie
LastLockoutDate Jeśli użytkownik jest zablokowany z powodu zbyt wielu nieudanych prób hasła, zwracany jest atrybut czasu blokady.

Jeśli użytkownik jest zablokowany z powodu zbyt wielu nieudanych prób odpowiedzi na hasło, zwracana jest wartość przechowywana w atrybucie zdefiniowanym przez attributeMapFailedPasswordAnswerLockoutTime .

Jeśli użytkownik jest zablokowany z powodu zarówno nieprawidłowego hasła, jak i zbyt wielu złych prób hasła, zwracana jest najnowsza wartość daty/godziny.

Jeśli konto nie jest zablokowane, zwróć wartość 1/1/1754, aby uzyskać zgodność z programem SQL.
Nie

Gdy właściwości RequiresQuestionAndAnswer i EnablePasswordResettrue, ActiveDirectoryMembershipProvider klasa obsługuje zabezpieczenia resetowania haseł, wymagając od użytkownika odpowiedzi na wstępnie określone pytanie. Aby obsługiwać pytanie i odpowiedź, należy ustawić następujące atrybuty konfiguracji przy użyciu elementu add dla dostawców dla członkostwa (ASP.NET Schemat ustawień) w pliku konfiguracji aplikacji.

Atrybut konfiguracji Typ atrybutu
attributeMapPasswordQuestion Musi być atrybutem jednowartościowym typu Unicode String.
attributeMapPasswordAnswer Musi być atrybutem jednowartościowym typu Unicode String.
attributeMapFailedPasswordAnswerCount Musi być atrybutem jednowartościowym typu Liczba całkowita.
attributeMapFailedPasswordAnswerTime Musi być atrybutem o pojedynczej wartości typu Duża liczba całkowita/Interwał.
attributeMapFailedPasswordAnswerLockoutTime Musi być atrybutem o pojedynczej wartości typu Duża liczba całkowita/Interwał.

Aby uzyskać więcej informacji na temat korzystania z zabezpieczeń resetowania RequiresQuestionAndAnswer hasła, zobacz właściwość .

Połączenia usługi Active Directory

Gdy ActiveDirectoryMembershipProvider klasa jest używana do nawiązywania połączenia z serwerem usługi Active Directory lub serwera trybu aplikacji usługi Active Directory (ADAM), connectionProtection atrybut ustawiony przy użyciu elementu add dla dostawców członkostwa (ASP.NET Schemat ustawień) w pliku konfiguracji aplikacji może ograniczyć typy operacji, ActiveDirectoryMembershipProvider które klasa może wykonać za pośrednictwem połączenia. Atrybut connectionProtection określa również metody ActiveDirectoryMembershipProvider , których wystąpienie będzie używać do utworzenia połączenia z usługą Active Directory lub serwerem ADAM.

W poniższej tabeli przedstawiono efekt atrybutu connectionProtection podczas nawiązywania połączenia z usługą Active Directory.

connectionProtection Ustawienie Efekt
None Klasa ActiveDirectoryMembershipProvider połączy się z usługą Active Directory z tymi ograniczeniami.

— Każda metoda ustawiania hasła zakończy się niepowodzeniem. Usługa Active Directory wymaga bezpiecznego połączenia podczas zmieniania haseł.
— Należy jawnie ustawić connectionUsername atrybuty i connectionPassword przy użyciu elementu add dla dostawców członkostwa (ASP.NET Schemat ustawień) w pliku konfiguracji aplikacji. W przeciwnym razie ActiveDirectoryMembershipProvider wystąpienie zgłosi ProviderException wyjątek.
Secure Klasa ActiveDirectoryMembershipProvider podejmie próbę nawiązania połączenia z usługą Active Directory przy użyciu protokołu SSL. Jeśli protokół SSL zakończy się niepowodzeniem, zostanie wykonana druga próba nawiązania połączenia z usługą Active Directory przy użyciu znaku i pieczęć. Jeśli obie próby nie powiedzą ProviderException się, ActiveDirectoryMembershipProvider wystąpienie zgłosi wyjątek.

Obsługiwane są zarówno poświadczenia procesu, jak i poświadczenia jawne.

W poniższej tabeli przedstawiono efekt atrybutu connectionProtection podczas nawiązywania połączenia z serwerem ADAM.

connectionProtection Ustawienie Efekt
None Klasa ActiveDirectoryMembershipProvider połączy się z serwerem ADAM z tym ograniczeniem.

— Każda metoda ustawiania haseł zakończy się niepowodzeniem, chyba że jawnie skonfigurujesz serwer ADAM, aby zezwolić na wysyłanie i zmienianie haseł za pośrednictwem niezabezpieczonego połączenia.

Obsługiwane są zarówno poświadczenia procesu, jak i poświadczenia jawne.
Secure Klasa ActiveDirectoryMembershipProvider podejmie próbę nawiązania połączenia z serwerem ADAM przy użyciu protokołu SSL. Jeśli nie można nawiązać połączenia, ActiveDirectoryMembershipProvider wystąpienie zgłosi ProviderException wyjątek.

Obsługiwane są zarówno poświadczenia procesu, jak i poświadczenia jawne.

Konfiguracja adama

W przypadku korzystania z serwera ADAM wystąpienie ADAM musi zawierać schemat definiujący klasę User . Klasę User można zaimportować za pomocą importowania MS-User.ldf pliku LDIF dostępnego w katalogu instalacyjnym ADAM.

Klasa ActiveDirectoryMembershipProvider będzie działać z serwerem ADAM skonfigurowanym do używania domyślnych portów sieciowych. W poniższej tabeli przedstawiono wartości domyślne oczekiwane dla serwera ADAM.

ustawienie connectionProtection Oczekiwany port ADAM
None 389
Secure 636

Konstruktory

ActiveDirectoryMembershipProvider()

Tworzy nowe wystąpienie klasy ActiveDirectoryMembershipProvider.

Właściwości

ApplicationName

Nazwa aplikacji przy użyciu niestandardowego dostawcy członkostwa.

CurrentConnectionProtection

Pobiera bieżący poziom zabezpieczeń używany do ochrony komunikacji z serwerem.

Description

Pobiera krótki, przyjazny opis odpowiedni do wyświetlania w narzędziach administracyjnych lub innych interfejsach użytkownika (UI).

(Odziedziczone po ProviderBase)
EnablePasswordReset

Pobiera wartość wskazującą, czy ActiveDirectoryMembershipProvider wystąpienie jest skonfigurowane w celu umożliwienia użytkownikom resetowania haseł.

EnablePasswordRetrieval

Pobiera wartość wskazującą, czy hasło użytkownika można pobrać z magazynu danych usługi Active Directory. Ta właściwość zawsze zwraca wartość false.

EnableSearchMethods

Pobiera wartość wskazującą, czy metody zorientowane na ActiveDirectoryMembershipProvider wyszukiwanie są dostępne.

MaxInvalidPasswordAttempts

Pobiera liczbę nieudanych prób odpowiedzi, które użytkownik może wykonać w przypadku pytania resetowania hasła.

MinRequiredNonAlphanumericCharacters

Pobiera minimalną liczbę znaków specjalnych, które muszą znajdować się w prawidłowym haśle.

MinRequiredPasswordLength

Pobiera minimalną długość wymaganą dla hasła.

Name

Pobiera przyjazną nazwę używaną do odwoływania się do dostawcy podczas konfiguracji.

(Odziedziczone po ProviderBase)
PasswordAnswerAttemptLockoutDuration

Uzyskaj czas, przez który konto użytkownika jest zablokowane po wykonaniu zbyt wielu nieudanych prób odpowiedzi na hasło.

PasswordAttemptWindow

Pobiera przedział czasu, w którym kolejne nieudane próby podania prawidłowego hasła lub prawidłowej odpowiedzi na hasło są śledzone.

PasswordFormat

Pobiera wartość wskazującą format haseł w magazynie danych usługi Active Directory.

PasswordStrengthRegularExpression

Pobiera wyrażenie regularne używane do oceny hasła.

RequiresQuestionAndAnswer

Pobiera wartość wskazującą, czy dostawca członkostwa jest skonfigurowany tak, aby wymagał pytania i odpowiedzi na hasło podczas tworzenia użytkownika.

RequiresUniqueEmail

Pobiera wartość wskazującą, czy adres e-mail przechowywany na serwerze usługi Active Directory musi być unikatowy.

Metody

ChangePassword(String, String, String)

Zmienia hasło określonego użytkownika.

ChangePasswordQuestionAndAnswer(String, String, String, String)

Aktualizacje pytanie i odpowiedź na hasło użytkownika w magazynie usługi Active Directory.

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

Dodaje nowego użytkownika do magazynu danych usługi Active Directory.

DecryptPassword(Byte[])

Odszyfrowuje zaszyfrowane hasło.

(Odziedziczone po MembershipProvider)
DeleteUser(String, Boolean)

Usuwa informacje o członkostwie użytkownika z magazynu danych usługi Active Directory.

EncryptPassword(Byte[])

Szyfruje hasło.

(Odziedziczone po MembershipProvider)
EncryptPassword(Byte[], MembershipPasswordCompatibilityMode)

Szyfruje określone hasło przy użyciu określonego trybu zgodności haseł.

(Odziedziczone po MembershipProvider)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
FindUsersByEmail(String, Int32, Int32, Int32)

Zwraca kolekcję użytkowników członkostwa z magazynu danych usługi Active Directory na podstawie adresu e-mail użytkownika.

FindUsersByName(String, Int32, Int32, Int32)

Zwraca kolekcję użytkowników z magazynu danych usługi Active Directory na podstawie nazwy użytkownika.

GeneratePassword()

Generuje losowe hasło.

GetAllUsers(Int32, Int32, Int32)

Pobiera kolekcję wszystkich użytkowników przechowywanych w źródle danych usługi Active Directory.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetNumberOfUsersOnline()

NotSupportedException Zgłasza wyjątek we wszystkich przypadkach.

GetPassword(String, String)

Zwraca hasło określonego użytkownika z bazy danych. Klasa ActiveDirectoryMembershipProvider nie obsługuje tej metody.

GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
GetUser(Object, Boolean)

Pobiera informacje o użytkowniku członkostwa skojarzone z określonym kluczem użytkownika.

GetUser(String, Boolean)

Pobiera informacje o użytkowniku członkostwa skojarzone z określoną nazwą użytkownika.

GetUserNameByEmail(String)

Pobiera nazwę użytkownika skojarzona z określonym adresem e-mail.

Initialize(String, NameValueCollection)

Inicjuje ActiveDirectoryMembershipProvider wystąpienie z wartościami właściwości z plików konfiguracji aplikacji. Ta metoda nie ma być wywoływana z kodu.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnValidatingPassword(ValidatePasswordEventArgs)

Zgłasza zdarzenie, ValidatingPassword jeśli zdefiniowano procedurę obsługi zdarzeń.

(Odziedziczone po MembershipProvider)
ResetPassword(String, String)

Resetuje hasło użytkownika do nowego, automatycznie wygenerowanego hasła.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
UnlockUser(String)

Czyści blokadę, aby można było zweryfikować użytkownika członkostwa.

UpdateUser(MembershipUser)

Aktualizacje informacje o użytkowniku w magazynie danych usługi Active Directory.

ValidateUser(String, String)

Sprawdza, czy określona nazwa użytkownika i hasło istnieją w magazynie danych usługi Active Directory.

Zdarzenia

ValidatingPassword

Występuje po utworzeniu użytkownika, zmianie hasła lub zresetowaniu hasła.

(Odziedziczone po MembershipProvider)

Dotyczy

Zobacz też