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 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 |
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 EnablePasswordReset są true
, 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 |
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ż
- wprowadzenie do członkostwa w usłudze ASP.NET
- Instrukcje: używanie członkostwa w ASP.NET 2.0