ActiveDirectoryMembershipProvider Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Управляет памятью информации о членстве для приложений ASP.NET в Active Directory и серверах Active Directory Application Mode.
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
- Наследование
Примеры
В следующих примерах кода показан файл Web.config для приложения ASP.NET, настроенного для использования экземпляра ActiveDirectoryMembershipProvider . В первом примере используются сопоставления по умолчанию для атрибутов Active Directory и не поддерживается безопасность сброса пароля с помощью вопросов и ответов и возможность вызова методов поиска. Во втором примере показаны все параметры атрибутов, разрешенные для экземпляра ActiveDirectoryMembershipProvider .
Первый пример — это простой файл конфигурации, использующий сопоставления по умолчанию для атрибутов 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>
В этом примере показаны все параметры атрибутов, доступные для экземпляра 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
и serverSearchTimeout
по умолчанию — минуты. Чтобы изменить единицы измерения, задайте для атрибута timeoutUnit
значение "Days", "Hours", "Minutes", "Seconds" или "Milliseconds". Если атрибут не указан, значение по умолчанию — Minutes.
Комментарии
Этот класс используется классами Membership и MembershipUser для предоставления служб членства для приложения ASP.NET с помощью сервера Active Directory (AD) или режима приложений Active Directory (ADAM).
Примечание
Для использования сервера ADAM требуется определенная конфигурация. Дополнительные сведения см. в разделе Конфигурация ADAM ниже.
Важно!
Экземпляр ActiveDirectoryMembershipProvider работает только в конфигурации политики полного доверия по умолчанию для ASP.NET. Чтобы использовать ActiveDirectoryMembershipProvider экземпляр на любом уровне частичного доверия, необходимо либо внести изменения в соответствующий файл политики доверия для приложения, либо создать сборку песочницы, развернутую в глобальном кэше сборок.
Для ActiveDirectoryMembershipProvider выполнения класса требуется неограниченное DirectoryServicesPermission разрешение. Это разрешение не добавляется ни к одному из файлов политики с частичным доверием, поставляемым с ASP.NET. Хотя добавление разрешения в DirectoryServicesPermission файл политики с частичным доверием позволит использовать ActiveDirectoryMembershipProvider класс , это делает System.DirectoryServices классы пространства имен доступными для любого кода, выполняющегося на страницах ASP.NET. Этот параметр не рекомендуется использовать для веб-серверов, которые должны работать в защищенном заблокированном режиме.
В качестве альтернативы можно создать сборку песочницы, которая вызывает ActiveDirectoryMembershipProvider класс . Эта сборка может содержать класс-оболочку, который пересылает вызовы методов в ActiveDirectoryMembershipProvider класс , или класс, производный от ActiveDirectoryMembershipProvider класса . В любом случае класс-оболочка должен утверждать неограниченное DirectoryServicesPermission разрешение. Разверните сборку песочницы в глобальном кэше сборок и пометьте ее атрибутом AllowPartiallyTrustedCallersAttribute (APTCA). Это позволит коду частично доверенного ASP.NET вызывать класс-оболочку, а так как класс-оболочка внутренне утверждает неограниченное DirectoryServicesPermission разрешение, класс оболочки сможет успешно вызвать поставщика.
В файле Web.config необходимо создать запись connectionStrings Element (ASP.NET Settings Schema), которая определяет используемый сервер Active Directory, домен Active Directory или раздел приложения ADAM. Поставщик будет работать только в области домена или в подобласти в домене. В следующей таблице перечислены разрешенные строки подключения и используемая область.
Строка подключения | Область |
---|---|
<LDAP:// домен или сервер>:[порт] Номер порта является необязательным для ADAM и не требуется для Active Directory. |
Поставщик выполняется для указанного домена или сервера. При использовании AD создание и удаление пользователей выполняется в контейнере пользователей по умолчанию. Все остальные операции, включая любые методы поиска, будут укорененные в контексте именования по умолчанию для домена. Если в строке подключения указан домен Active Directory, а не конкретный сервер, а EnablePasswordReset свойство равно true , ActiveDirectoryMembershipProvider экземпляр всегда будет подключаться к серверу с ролью основного контроллера домена для домена, чтобы изменения пароля вступили в силу и были доступны при вызове ValidateUser метода.Эта строка подключения не допускается при использовании ADAM и вызывает исключение NotSupportedException. |
<LDAP:// домен или сервер>:[порт]/<контейнер dn> Номер порта является необязательным для ADAM и не требуется для Active Directory. |
Поставщик выполняется для указанного домена или сервера. Создание и удаление пользователя выполняется только в указанном контейнере. Все остальные операции, включая любые методы поиска, выполняют поиск по поддереву, коренится в контейнере. Для серверов ADAM контейнер указывает корень секции приложения или контейнер в разделе приложения. Для повышения производительности рекомендуется определить конкретный контейнер в строке подключения. |
Экземпляр ActiveDirectoryMembershipProvider сопоставляет атрибуты каталога со ActiveDirectoryMembershipUser свойствами. Атрибуты по умолчанию используются, если в файле Web.config не выполняется сопоставление атрибутов. Дополнительные сведения о сопоставлениях атрибутов см. в разделе об отдельных свойствах в документации по классам ActiveDirectoryMembershipUser .
В следующей ActiveDirectoryMembershipUser таблице перечислены свойства и их сопоставления атрибутов по умолчанию.
Важно!
Класс ActiveDirectoryMembershipProvider не проверяет явным образом, что атрибуты поставщика не сопоставлены с основными атрибутами объекта пользователя в каталоге. Необходимо убедиться, что конфиденциальная информация из каталога не предоставляется через сопоставленные атрибуты.
Свойство. | Атрибут каталога по умолчанию | Можно ли сопоставить? |
---|---|---|
ProviderUserKey | securityIdentifier | Нет |
UserName | userPrincipalName | Да, но должно иметь значение userPrincipalName или sAMAccountName. |
Comment | comment | Нет |
CreationDate | whenCreated | Нет |
Да, но должен быть однозначным атрибутом типа Строка Юникода. | ||
LastActivityDate | Н/Д | Не поддерживается ActiveDirectoryMembershipProvider. |
LastLoginDate | Н/Д | Не поддерживается ActiveDirectoryMembershipProvider. |
LastPasswordChangedDate | pwdLastSet | Нет |
PasswordQuestion | нет | Да, но должен быть однозначным атрибутом типа Строка Юникода. |
IsApproved | Контроль учетных записей пользователей (AD) mDS-UserAccountDisabled (ADAM) |
Нет |
IsLockedOut | вычисляется из параметра lockoutTime и длительности блокировки AD (AD в Windows 2000) msDS-User-Account-Control-Computed (AD в Windows Server 2003) msDS-User-Account-Control-Computed (ADAM) |
Нет |
LastLockoutDate | Если пользователь заблокирован из-за слишком большого количества неудачных попыток ввода пароля, возвращается атрибут времени блокировки. Если пользователь заблокирован из-за слишком большого количества попыток неправильного ответа пароля, возвращается значение, хранящееся в атрибуте, определенном параметром attributeMapFailedPasswordAnswerLockoutTime .Если пользователь заблокирован из-за неправильного пароля и слишком большого количества попыток ввода пароля, возвращается самое последнее значение даты и времени. Если учетная запись не заблокирована, вернитесь 1/1/1754 для совместимости SQL. |
Нет |
Если свойства RequiresQuestionAndAnswer и EnablePasswordReset имеют значение true
, ActiveDirectoryMembershipProvider класс поддерживает безопасность сброса пароля, требуя от пользователя ответа на предопределенный вопрос. Для поддержки вопросов и ответов необходимо задать следующие атрибуты конфигурации с помощью элемента add Element for providers for membership (ASP.NET Settings Schema) в файле конфигурации приложения.
Атрибут конфигурации | Тип атрибута |
---|---|
attributeMapPasswordQuestion |
Должен быть однозначным атрибутом типа Строка Юникода. |
attributeMapPasswordAnswer |
Должен быть однозначным атрибутом типа Строка Юникода. |
attributeMapFailedPasswordAnswerCount |
Должен быть однозначным атрибутом типа Integer. |
attributeMapFailedPasswordAnswerTime |
Должен быть однозначным атрибутом типа Large Integer/Interval. |
attributeMapFailedPasswordAnswerLockoutTime |
Должен быть однозначным атрибутом типа Large Integer/Interval. |
Дополнительные сведения об использовании безопасности при сбросе пароля см. в свойстве RequiresQuestionAndAnswer .
Подключения Active Directory
ActiveDirectoryMembershipProvider Если класс используется для подключения к серверу Active Directory или в режиме приложений Active Directory (ADAM), атрибут, connectionProtection
заданный с помощью элемента add для поставщиков для членства (ASP.NET схема параметров) в файле конфигурации приложения, может ограничивать типы операций, которые ActiveDirectoryMembershipProvider класс может выполнять через соединение. Атрибут connectionProtection
также определяет методы, ActiveDirectoryMembershipProvider которые экземпляр будет использовать для создания подключения к серверу Active Directory или ADAM.
В следующей таблице показано влияние атрибута connectionProtection
при подключении к Active Directory.
Значение connectionProtection |
Действие |
---|---|
None | Класс ActiveDirectoryMembershipProvider будет подключаться к Active Directory с этими ограничениями. — Любой метод, задающий пароль, завершится ошибкой. Active Directory требует безопасного подключения при смене паролей. — Необходимо явно задать connectionUsername атрибуты и connectionPassword с помощью элемента add для поставщиков для членства (ASP.NET Settings Schema) в файле конфигурации приложения; в противном случае ActiveDirectoryMembershipProvider экземпляр создаст ProviderException исключение. |
Secure |
Класс ActiveDirectoryMembershipProvider попытается подключиться к Active Directory по протоколу SSL. В случае сбоя SSL будет выполнена вторая попытка подключиться к Active Directory с помощью подписи и печати. Если обе попытки завершаются сбоем ActiveDirectoryMembershipProvider , экземпляр создает ProviderException исключение. Поддерживаются как учетные данные процесса, так и явные учетные данные. |
В следующей таблице показано влияние атрибута connectionProtection
при подключении к серверу ADAM.
Значение connectionProtection |
Действие |
---|---|
None | Класс ActiveDirectoryMembershipProvider будет подключаться к серверу ADAM с этим ограничением. — Любой метод, задающий пароли, завершится ошибкой, если вы явно не настроите сервер ADAM, чтобы разрешить отправку и изменение паролей через небезопасное подключение. Поддерживаются как учетные данные процесса, так и явные учетные данные. |
Secure |
Класс ActiveDirectoryMembershipProvider попытается подключиться к серверу ADAM по протоколу SSL. Если подключение невозможно, ActiveDirectoryMembershipProvider экземпляр создаст ProviderException исключение. Поддерживаются как учетные данные процесса, так и явные учетные данные. |
Конфигурация ADAM
При использовании сервера ADAM экземпляр ADAM должен содержать схему, определяющую User
класс . Вы можете импортировать User
класс с помощью импорта LDIF файла, доступного MS-User.ldf
в каталоге установки ADAM.
Класс ActiveDirectoryMembershipProvider будет работать с сервером ADAM, настроенным для использования сетевых портов по умолчанию. В следующей таблице показаны значения по умолчанию, ожидаемые для сервера ADAM.
параметр connectionProtection | Ожидаемый порт ADAM |
---|---|
None | 389 |
Secure |
636 |
Конструкторы
ActiveDirectoryMembershipProvider() |
Создает новый экземпляр класса ActiveDirectoryMembershipProvider. |
Свойства
ApplicationName |
Имя приложения, использующего пользовательского поставщика членства. |
CurrentConnectionProtection |
Возвращает текущий уровень безопасности, используемый для защиты связи с сервером. |
Description |
Возвращает краткое, понятное описание, подходящее для отображения в инструментах администрирования или других пользовательских интерфейсах (UI). (Унаследовано от ProviderBase) |
EnablePasswordReset |
Возвращает значение, показывающее, настроен ли экземпляр ActiveDirectoryMembershipProvider на разрешение пользователям восстанавливать их пароли. |
EnablePasswordRetrieval |
Получает значение, указывающее, может ли пароль пользователя быть извлечен из хранилища данных Active Directory. Данное свойство всегда возвращает значение |
EnableSearchMethods |
Возвращает значение, указывающее, доступны ли методы ActiveDirectoryMembershipProvider ориентированные на поиск. |
MaxInvalidPasswordAttempts |
Возвращает число неудачных попыток ответ пользователя, разрешенное для запроса на восстановление пароля. |
MinRequiredNonAlphanumericCharacters |
Получает минимальное количество специальных символов, которые должны присутствовать в допустимом пароле. |
MinRequiredPasswordLength |
Получает минимальную длину пароля. |
Name |
Возвращает понятное имя, используемое для ссылки на поставщика во время конфигурирования. (Унаследовано от ProviderBase) |
PasswordAnswerAttemptLockoutDuration |
Возвращает интервал времени, на который блокируется учетная запись пользователя, из-за слишком большого числа попыток неправильного ввода пароля. |
PasswordAttemptWindow |
Возвращает интервал времени, в течении которого отслеживаются последовательные попытки ввода недействительного пароля или ответа пароля. |
PasswordFormat |
Возвращает значение, показывающее формат паролей в хранилище данных членства. |
PasswordStrengthRegularExpression |
Возвращает регулярное выражение, используемое для обработки пароля. |
RequiresQuestionAndAnswer |
Получает значение, показывающее, настроен ли поставщик участия, чтобы запрашивать пароль при создании пользователя. |
RequiresUniqueEmail |
Возвращает значение, указывающее, должен ли быть уникальным адрес электронной почты, который хранится на сервере Active Directory. |
Методы
ChangePassword(String, String, String) |
Изменяет пароль заданного пользователя. |
ChangePasswordQuestionAndAnswer(String, String, String, String) |
Обновляет запрос и ответ пароля пользователя членства в хранилище Active Directory. |
CreateUser(String, String, String, String, String, Boolean, Object, MembershipCreateStatus) |
Добавляет нового пользователя к хранилищу данных Active Directory. |
DecryptPassword(Byte[]) |
Расшифровывает зашифрованный пароль. (Унаследовано от MembershipProvider) |
DeleteUser(String, Boolean) |
Удаляет сведения о членстве пользователя из хранилища данных Active Directory. |
EncryptPassword(Byte[]) |
Шифрует пароль. (Унаследовано от MembershipProvider) |
EncryptPassword(Byte[], MembershipPasswordCompatibilityMode) |
Шифрует заданный пароль с использованием заданного режима совместимости паролей. (Унаследовано от MembershipProvider) |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
FindUsersByEmail(String, Int32, Int32, Int32) |
Возвращает коллекцию пользователей членства из хранилища данных Active Directory, основанную на адресах электронной почты пользователей. |
FindUsersByName(String, Int32, Int32, Int32) |
Возвращает коллекцию пользователей из хранилища данных Active Directory, основанную на именах пользователя. |
GeneratePassword() |
Генерирует случайный пароль. |
GetAllUsers(Int32, Int32, Int32) |
Возвращает коллекцию всех пользователей, хранимых в источнике данных Active Directory. |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetNumberOfUsersOnline() |
Вызывает исключение NotSupportedException во всех случаях. |
GetPassword(String, String) |
Возвращает пароль указанного пользователя из базы данных. Класс ActiveDirectoryMembershipProvider не поддерживает данный метод. |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
GetUser(Object, Boolean) |
Возвращает информацию пользователя членства, связанную с указанным ключом пользователя. |
GetUser(String, Boolean) |
Возвращает информацию пользователя членства, связанную с указанным именем пользователя. |
GetUserNameByEmail(String) |
Возвращает имя пользователя, связанное с указанным адресом электронной почты. |
Initialize(String, NameValueCollection) |
Выполняет инициализацию экземпляра ActiveDirectoryMembershipProvider со значениями свойств из файла конфигурации приложения. Этот метод не предназначен для непосредственного вызова из кода. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
OnValidatingPassword(ValidatePasswordEventArgs) |
Вызывает событие ValidatingPassword, если определен обработчик событий. (Унаследовано от MembershipProvider) |
ResetPassword(String, String) |
Сбрасывает пароль пользователя и устанавливает новый, автоматически сгенерированный пароль. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
UnlockUser(String) |
Снимает блокировку так, что пользователь членства может быть проверен. |
UpdateUser(MembershipUser) |
Обновляет информацию о пользователе в хранилище данных Active Directory. |
ValidateUser(String, String) |
Проверяет существование указанного имени пользователя и пароля в хранилище данных Active Directory. |
События
ValidatingPassword |
Происходит при создании пользователя, изменении пароля или сбросе пароля. (Унаследовано от MembershipProvider) |