ActiveDirectoryMembershipProvider Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Управляет хранилищем сведений о членстве для приложения ASP.NET на серверах Active Directory и в режиме приложений 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
- Наследование
Примеры
В следующих примерах кода показан файл 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
одно из дней, "Часы", "Минуты", "Секунды" или "Миллисекунд". Если атрибут не указан, значение по умолчанию — "Минуты".
Комментарии
Этот класс используется классами Membership и MembershipUser для предоставления служб членства для приложения ASP.NET с помощью сервера Active Directory (AD) или режима приложений Active Directory (ADAM).
Заметка
Для использования сервера ADAM требуется определенная конфигурация. Дополнительные сведения см. в разделе "Конфигурация АДАМ" ниже.
Важный
Экземпляр ActiveDirectoryMembershipProvider работает только в конфигурации политики полного доверия ASP.NET. Чтобы использовать экземпляр ActiveDirectoryMembershipProvider на любом уровне частичного доверия, необходимо внести изменения в соответствующий файл политики доверия для приложения или создать сборку песочницы, развернутую в GAC.
Для выполнения класса ActiveDirectoryMembershipProvider требуется неограниченное DirectoryServicesPermission разрешение. Это разрешение не добавляется ни в один из файлов политики частичного доверия, предоставляемых ASP.NET. Хотя добавление разрешения DirectoryServicesPermission в файл политики частичного доверия позволит использовать класс ActiveDirectoryMembershipProvider, это делает классы пространства имен System.DirectoryServices доступными для любого кода, работающего на ASP.NET страницах. Этот параметр не рекомендуется использовать для веб-серверов, которые должны работать в защищенном, заблокированном режиме.
В качестве альтернативы можно создать сборку песочницы, которая вызывает класс ActiveDirectoryMembershipProvider. Эта сборка может содержать класс-оболочку, который перенаправит вызовы метода в класс ActiveDirectoryMembershipProvider или класс, производный от класса ActiveDirectoryMembershipProvider. В любом случае класс-оболочка должен утверждать неограниченные DirectoryServicesPermission разрешения. Разверните сборку песочницы в GAC и пометьте сборку атрибутом AllowPartiallyTrustedCallersAttribute (APTCA). Это позволит вашему частично доверенному ASP.NET коду вызывать класс оболочки, и так как класс оболочки внутренне утверждает неограниченное разрешение DirectoryServicesPermission, класс-оболочка сможет успешно вызвать поставщика.
Необходимо создать элемент connectionStrings (схема параметров ASP.NET) в файле Web.config, который определяет используемый сервер Active Directory, домен Active Directory или секцию приложения ADAM. Поставщик будет работать только в области домена или в подобласти в домене. В следующей таблице перечислены допустимые строки подключения и используемая область.
Строка подключения | Размах |
---|---|
LDAP://<домене или сервере>:[порт] Номер порта необязателен для ADAM и не требуется для Active Directory. |
Поставщик работает с указанным доменом или сервером. При использовании AD создание и удаление пользователей выполняется в контейнере пользователей по умолчанию. Все остальные операции, включая любые методы поиска, будут корневыми в контексте именования по умолчанию для домена. Если строка подключения указывает домен Active Directory, а не конкретный сервер, а свойство EnablePasswordReset true , экземпляр ActiveDirectoryMembershipProvider всегда будет подключаться к серверу с ролью PDC для домена, чтобы убедиться, что изменения пароля вступили в силу и доступны при вызове метода ValidateUser.Эта строка подключения не допускается при использовании ADAM и вызовет NotSupportedException. |
LDAP://<домене или сервере>:[порт]/<контейнер dn> Номер порта необязателен для ADAM и не требуется для Active Directory. |
Поставщик работает с указанным доменом или сервером. Создание и удаление пользователей выполняется только в указанном контейнере. Все остальные операции, в том числе любые методы поиска, выполняют поиск поддерев, корневым в контейнере. Для серверов ADAM контейнер указывает корень секции приложения или контейнер в разделе приложения. Мы рекомендуем определить конкретный контейнер для повышения производительности строки подключения. |
Экземпляр ActiveDirectoryMembershipProvider сопоставляет атрибуты каталога с ActiveDirectoryMembershipUser свойствами. Атрибуты по умолчанию используются, если сопоставление атрибутов не выполняется в файле Web.config. Дополнительные сведения о сопоставлениях атрибутов см. в документации по классам ActiveDirectoryMembershipUser.
В следующей таблице перечислены свойства ActiveDirectoryMembershipUser и сопоставления атрибутов по умолчанию.
Важный
Класс ActiveDirectoryMembershipProvider не проверяет, не сопоставляются ли атрибуты поставщика с основными атрибутами объекта пользователя в каталоге. Необходимо убедиться, что конфиденциальная информация из каталога не предоставляется с помощью сопоставленных атрибутов.
Свойство | Атрибут каталога по умолчанию | Можно ли сопоставить? |
---|---|---|
ProviderUserKey | securityIdentifier | Нет |
UserName | userPrincipalName | Да, но должен быть userPrincipalName или sAMAccountName |
Comment | комментарий | Нет |
CreationDate | whenCreated | Нет |
почта | Да, но должен быть однозначным атрибутом типа Юникод String. | |
LastActivityDate | n/a | Не поддерживается ActiveDirectoryMembershipProvider. |
LastLoginDate | n/a | Не поддерживается ActiveDirectoryMembershipProvider. |
LastPasswordChangedDate | pwdLastSet | Нет |
PasswordQuestion | никакой | Да, но должен быть однозначным атрибутом типа Юникод String. |
IsApproved | ПользовательскаяAccount-Control (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 и EnablePasswordResettrue
, класс ActiveDirectoryMembershipProvider поддерживает безопасность сброса пароля, требуя от пользователя ответить на заданный вопрос. Чтобы поддержать вопрос и ответ, необходимо задать следующие атрибуты конфигурации с помощью добавить элемент для поставщиков для членства (схема параметров ASP.NET) в файле конфигурации приложения.
Атрибут конфигурации | Тип атрибута |
---|---|
attributeMapPasswordQuestion |
Должен быть однозначным атрибутом типа Юникод String. |
attributeMapPasswordAnswer |
Должен быть однозначным атрибутом типа Юникод String. |
attributeMapFailedPasswordAnswerCount |
Должен быть однозначным атрибутом типа Integer. |
attributeMapFailedPasswordAnswerTime |
Должен быть однозначным атрибутом типа Large Integer/Interval. |
attributeMapFailedPasswordAnswerLockoutTime |
Должен быть однозначным атрибутом типа Large Integer/Interval. |
Дополнительные сведения об использовании безопасности сброса пароля см. в свойстве RequiresQuestionAndAnswer.
Подключения Active Directory
Если класс ActiveDirectoryMembershipProvider используется для подключения к серверу Active Directory или в режиме приложений Active Directory (ADAM), атрибут connectionProtection
, заданный с помощью добавления элемента для поставщиков для членства (схема параметров ASP.NET) в файле конфигурации приложения может ограничить типы операций, которые класс ActiveDirectoryMembershipProvider может выполнять через подключение. Атрибут connectionProtection
также определяет методы, которые экземпляр ActiveDirectoryMembershipProvider будет использовать для создания подключения к серверу Active Directory или ADAM.
В следующей таблице показан эффект атрибута connectionProtection
при подключении к Active Directory.
параметр connectionProtection |
Эффект |
---|---|
None | Класс ActiveDirectoryMembershipProvider будет подключаться к Active Directory с этими ограничениями. — Любой метод, который задает пароль, завершится ошибкой. Для Active Directory требуется безопасное подключение при изменении паролей. — Необходимо явно задать атрибуты connectionUsername и connectionPassword с помощью добавить элемент для поставщиков для членства (схема параметров ASP.NET) в файле конфигурации приложения; В противном случае экземпляр 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 экземпляр АДАМ должен содержать схему, определяющую класс User
. Класс User
можно импортировать с помощью импорта LDIF файла MS-User.ldf
, доступного в каталоге установки ADAM.
Класс ActiveDirectoryMembershipProvider будет работать с сервером ADAM, настроенным для использования сетевых портов по умолчанию. В следующей таблице показаны значения по умолчанию, ожидаемые для сервера ADAM.
Параметр connectionProtection | Ожидаемый порт ADAM |
---|---|
None | 389 |
Secure |
636 |
Конструкторы
ActiveDirectoryMembershipProvider() |
Создает новый экземпляр класса ActiveDirectoryMembershipProvider. |
Свойства
ApplicationName |
Имя приложения с помощью пользовательского поставщика членства. |
CurrentConnectionProtection |
Возвращает текущий уровень безопасности, используемый для защиты связи с сервером. |
Description |
Получает краткое понятное описание, подходящее для отображения в средствах администрирования или других пользовательских интерфейсах (UIs). (Унаследовано от ProviderBase) |
EnablePasswordReset |
Возвращает значение, указывающее, настроен ли экземпляр ActiveDirectoryMembershipProvider, чтобы пользователи могли сбрасывать пароли. |
EnablePasswordRetrieval |
Возвращает значение, указывающее, можно ли получить пароль пользователя из хранилища данных Active Directory. Это свойство всегда возвращает |
EnableSearchMethods |
Возвращает значение, указывающее, доступны ли методы ActiveDirectoryMembershipProvider с ориентацией поиска. |
MaxInvalidPasswordAttempts |
Возвращает количество неудачных попыток ответа, разрешенное пользователю для вопроса сброса пароля. |
MinRequiredNonAlphanumericCharacters |
Возвращает минимальное количество специальных символов, которые должны присутствовать в допустимом пароле. |
MinRequiredPasswordLength |
Возвращает минимальную длину, необходимую для пароля. |
Name |
Возвращает понятное имя, используемое для ссылки на поставщика во время настройки. (Унаследовано от ProviderBase) |
PasswordAnswerAttemptLockoutDuration |
Получите продолжительность времени, для которого учетная запись пользователя заблокирована после того, как пользователь выполняет слишком много неудачных попыток ответа на пароль. |
PasswordAttemptWindow |
Возвращает период времени, в течение которого выполняется последовательная попытка предоставить допустимый пароль или допустимый ответ на пароль. |
PasswordFormat |
Возвращает значение, указывающее формат паролей в хранилище данных Active Directory. |
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[], MembershipPasswordCompatibilityMode) |
Шифрует указанный пароль с помощью указанного режима совместимости паролей. (Унаследовано от MembershipProvider) |
EncryptPassword(Byte[]) |
Шифрует пароль. (Унаследовано от 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) |
Применяется к
См. также раздел
- Общие сведения о членстве ASP.NET
- Практическое руководство. Использование членства в ASP.NET 2.0