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 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
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 |
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 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 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ść |
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ż
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla