Udostępnij za pośrednictwem


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 pokazano plik Web.config dla aplikacji ASP.NET skonfigurowanej do używania wystąpienia ActiveDirectoryMembershipProvider. 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 przedstawiono 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 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 domyślne minuty. Aby zmienić jednostki, ustaw timeoutUnit wartość atrybutu 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 klasy Membership i MembershipUser w celu zapewnienia usług członkostwa dla aplikacji ASP.NET przy użyciu serwera usługi Active Directory (AD) lub serwera trybu aplikacji usługi Active Directory (ADAM).

Nuta

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

Ważny

Wystąpienie ActiveDirectoryMembershipProvider działa tylko w domyślnej konfiguracji zasad pełnego zaufania ASP.NET. Aby można było używać wystąpienia ActiveDirectoryMembershipProvider na dowolnym poziomie częściowo zaufania, należy wprowadzić zmiany w odpowiednim pliku zasad zaufania dla aplikacji lub należy utworzyć zestaw "piaskownicy" wdrożony w 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 uprawnienia DirectoryServicesPermission do pliku zasad częściowego zaufania umożliwi użycie klasy ActiveDirectoryMembershipProvider, dzięki temu klasy System.DirectoryServices 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żesz utworzyć zestaw "piaskownicy", który wywołuje klasę ActiveDirectoryMembershipProvider. Ten zestaw może zawierać klasę otoki, która przekazuje wywołania metody do klasy ActiveDirectoryMembershipProvider lub klasy pochodzącej z klasy ActiveDirectoryMembershipProvider. W obu przypadkach klasa otoki musi potwierdzić nieograniczone uprawnienia DirectoryServicesPermission. Wdróż zestaw piaskownicy w GAC i oznacz zestaw za pomocą atrybutu AllowPartiallyTrustedCallersAttribute (APTCA). Umożliwi to częściowo zaufany kod ASP.NET wywołanie klasy otoki, a ponieważ klasa otoki wewnętrznie potwierdza nieograniczone uprawnienia DirectoryServicesPermission, klasa otoki będzie mogła pomyślnie wywołać dostawcę

Należy utworzyć element connectionStrings (schemat ustawień ASP.NET) wpis 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://<domeny lub serwera>:[port]

Numer portu jest opcjonalny dla programu ADAM i nie jest wymagany dla usługi Active Directory.
Dostawca działa 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 właściwość EnablePasswordReset jest true, wystąpienie ActiveDirectoryMembershipProvider zawsze będzie łączyć się z serwerem z rolą kontrolera PDC dla domeny, aby upewnić się, że zmiany haseł zostaną zastosowane i będą dostępne po wywołaniu metody ValidateUser.

Te parametry połączenia nie są dozwolone podczas korzystania z programu ADAM i zgłaszają NotSupportedException.
LDAP://<domeny lub serwera>:[port]/<kontenera dn>

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

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

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

Wystąpienie ActiveDirectoryMembershipProvider mapuje atrybuty katalogu na właściwości ActiveDirectoryMembershipUser. 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 dokumentacji klasy ActiveDirectoryMembershipUser.

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

Ważny

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ą ujawniane za pomocą zamapowanych atrybutów.

Własność Domyślny atrybut katalogu Czy można zamapować?
ProviderUserKey securityIdentifier Nie
UserName userPrincipalName Tak, ale musi mieć wartość userPrincipalName lub sAMAccountName
Comment komentarz Nie
CreationDate whenCreated Nie
Email poczta Tak, ale musi być atrybutem o pojedynczej wartości typu Unicode String.
LastActivityDate N/a Nieobsługiwane przez ActiveDirectoryMembershipProvider.
LastLoginDate N/a Nieobsługiwane przez ActiveDirectoryMembershipProvider.
LastPasswordChangedDate pwdLastSet Nie
PasswordQuestion żaden Tak, ale musi być atrybutem o pojedynczej wartości typu Unicode String.
IsApproved Użytkownik —Account-Control (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 nieprawidłowego hasła i zbyt wielu prób nieprawidłowego hasła, zostanie zwrócona 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, klasa ActiveDirectoryMembershipProvider 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 typu Unicode String o pojedynczej wartości.
attributeMapPasswordAnswer Musi być atrybutem typu Unicode String o pojedynczej wartości.
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 hasła, zobacz właściwość RequiresQuestionAndAnswer.

Połączenia usługi Active Directory

Gdy klasa ActiveDirectoryMembershipProvider jest używana do nawiązywania połączenia z serwerem usługi Active Directory lub serwera trybu aplikacji usługi Active Directory (ADAM), atrybut connectionProtection ustawiony przy użyciu dodaj element dla dostawców członkostwa (schemat ustawień ASP.NET) w pliku konfiguracji aplikacji może ograniczyć typy operacji, które klasa ActiveDirectoryMembershipProvider może wykonywać za pośrednictwem połączenia. Atrybut connectionProtection określa również metody, których wystąpienie ActiveDirectoryMembershipProvider użyje 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.

ustawienie connectionProtection 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ć atrybuty connectionUsername i connectionPassword przy użyciu dodaj element dla dostawców członkostwa (schemat ustawień ASP.NET) w pliku konfiguracji aplikacji; w przeciwnym razie wystąpienie ActiveDirectoryMembershipProvider zgłosi wyjątek ProviderException.
Secure Klasa ActiveDirectoryMembershipProvider podejmie próbę nawiązania połączenia z usługą Active Directory przy użyciu protokołu SSL. Jeśli połączenie 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ą się, wystąpienie ActiveDirectoryMembershipProvider zgłosi wyjątek ProviderException.

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.

ustawienie connectionProtection 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, wystąpienie ActiveDirectoryMembershipProvider zgłosi wyjątek ProviderException.

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 LDIF pliku MS-User.ldf 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 używającej 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.

(Odziedziczone po ProviderBase)
EnablePasswordReset

Pobiera wartość wskazującą, czy wystąpienie ActiveDirectoryMembershipProvider jest skonfigurowane tak, aby umożliwić użytkownikom resetowanie 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 false.

EnableSearchMethods

Pobiera wartość wskazującą, czy metody ActiveDirectoryMembershipProvider zorientowane na 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 ś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[], MembershipPasswordCompatibilityMode)

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

(Odziedziczone po MembershipProvider)
EncryptPassword(Byte[])

Szyfruje hasło.

(Odziedziczone po MembershipProvider)
Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.

(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 wyjątek NotSupportedException we wszystkich przypadkach.

GetPassword(String, String)

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

GetType()

Pobiera Type 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 wystąpienie ActiveDirectoryMembershipProvider 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 Object.

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