ActiveDirectoryMembershipProvider Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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 |
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 EnablePasswordReset są true
, 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ść |
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) |