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. Он не поддерживает безопасность сброса пароля с помощью вопросов и ответов или возможности вызова методов поиска.
<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>
Комментарии
Этот класс используется классами 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