Udostępnij za pośrednictwem


ActiveDirectoryMembershipProvider Klasa

Definicja

Zarządza przechowywaniem 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 pokazano 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 hasła z pytaniem i odpowiedzią ani możliwością wywoływania metod wyszukiwania. W drugim przykładzie pokazano wszystkie ustawienia atrybutów dozwolone dla wystąpienia ActiveDirectoryMembershipProvider .

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 programu 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 i serverSearchTimeout wartość 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 zaufania częściowego, musisz wprowadzić zmiany w odpowiednim pliku zasad zaufania dla aplikacji lub należy utworzyć zestaw "piaskownicy", który został wdrożony w pamięci podręcznej GAC.

Klasa ActiveDirectoryMembershipProvider wymaga nieograniczonego DirectoryServicesPermission uprawnienia do uruchamiania. To uprawnienie nie jest dodawane do żadnego z plików zasad częściowego zaufania dostarczonego 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 w przypadku 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 GAC i oznacz zestaw atrybutem AllowPartiallyTrustedCallersAttribute (APTCA). Umożliwi to częściowo zaufanemu kodowi ASP.NET wywołanie 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:// domena lub serwer>:[port]

Numer portu jest opcjonalny dla adama 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 kontenerze użytkowników domyślnych. Wszystkie inne operacje, w tym wszystkie metody wyszukiwania, będą rooted 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 połączy się z serwerem z rolą podstawowego kontrolera 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 w przypadku korzystania z programu ADAM i zgłasza błąd NotSupportedException.
<LDAP:// domena lub serwer>:[port]/<dn kontenera>

Numer portu jest opcjonalny dla adama 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 wszystkie metody wyszukiwania, wykonują wyszukiwania poddrzewa z odblokowanym dostępem do kontenera.

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

Zalecamy zdefiniowanie 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 się upewnić, że poufne informacje z katalogu nie są ujawniane 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 o pojedynczej wartości typu Unicode String.
LastActivityDate n/d Nieobsługiwane przez .ActiveDirectoryMembershipProvider
LastLoginDate n/d Nieobsługiwane przez .ActiveDirectoryMembershipProvider
LastPasswordChangedDate pwdLastSet Nie
PasswordQuestion brak Tak, ale musi być atrybutem o pojedynczej wartości 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 prób nieprawidłowego hasła, zwracana jest najnowsza wartość daty/godziny.

Jeśli konto nie jest zablokowane, zwróć 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 dodaj element dla dostawców członkostwa (schemat ustawień ASP.NET) w pliku konfiguracji aplikacji.

Atrybut konfiguracji Typ atrybutu
attributeMapPasswordQuestion Musi być atrybutem o pojedynczej wartości typu Ciąg Unicode.
attributeMapPasswordAnswer Musi być atrybutem o pojedynczej wartości typu Ciąg Unicode.
attributeMapFailedPasswordAnswerCount Musi być atrybutem o pojedynczej wartości 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), atrybut ustawiany przy użyciu elementu add dla dostawców dla członkostwa (ASP.NET Schemat ustawień) w pliku konfiguracji aplikacji może ograniczyć typy operacji, connectionProtection które ActiveDirectoryMembershipProvider klasa może wykonywać 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 serwerem usługi Active Directory lub 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. W przypadku niepowodzenia protokołu SSL zostanie podjęta 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ą się, ActiveDirectoryMembershipProvider wystąpienie zgłosi ProviderException 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ą importu 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ą, ActiveDirectoryMembershipProvider czy wystąpienie jest skonfigurowane tak, aby umożliwić użytkownikom resetowanie haseł.

EnablePasswordRetrieval

Pobiera wartość wskazującą, czy można pobrać hasło użytkownika 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ą być obecne 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 śledzone są kolejne nieudane próby podania prawidłowego hasła lub prawidłowej odpowiedzi na hasło.

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 do wymagania 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)

Aktualizuje pytanie dotyczące hasła i odpowiedź dla 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()

Zgłasza NotSupportedException 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 wartość bieżącego wystąpienia.

(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 przy użyciu wartości właściwości z plików konfiguracji aplikacji. Ta metoda nie jest przeznaczona do wywołania 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)

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