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.
Если класс 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 экземпляр АДАМ должен содержать схему, определяющую класс User
. Класс User
можно импортировать с помощью импорта LDIF файла MS-User.ldf
, доступного в каталоге установки ADAM.
Класс ActiveDirectoryMembershipProvider будет работать с сервером ADAM, настроенным для использования сетевых портов по умолчанию. В следующей таблице показаны значения по умолчанию, ожидаемые для сервера ADAM.
Параметр connectionProtection | Ожидаемый порт ADAM |
---|---|
None | 389 |
Secure |
636 |
Active |
Создает новый экземпляр класса ActiveDirectoryMembershipProvider. |
Application |
Имя приложения с помощью пользовательского поставщика членства. |
Current |
Возвращает текущий уровень безопасности, используемый для защиты связи с сервером. |
Description |
Получает краткое понятное описание, подходящее для отображения в средствах администрирования или других пользовательских интерфейсах (UIs). (Унаследовано от ProviderBase) |
Enable |
Возвращает значение, указывающее, настроен ли экземпляр ActiveDirectoryMembershipProvider, чтобы пользователи могли сбрасывать пароли. |
Enable |
Возвращает значение, указывающее, можно ли получить пароль пользователя из хранилища данных Active Directory. Это свойство всегда возвращает |
Enable |
Возвращает значение, указывающее, доступны ли методы ActiveDirectoryMembershipProvider с ориентацией поиска. |
Max |
Возвращает количество неудачных попыток ответа, разрешенное пользователю для вопроса сброса пароля. |
Min |
Возвращает минимальное количество специальных символов, которые должны присутствовать в допустимом пароле. |
Min |
Возвращает минимальную длину, необходимую для пароля. |
Name |
Возвращает понятное имя, используемое для ссылки на поставщика во время настройки. (Унаследовано от ProviderBase) |
Password |
Получите продолжительность времени, для которого учетная запись пользователя заблокирована после того, как пользователь выполняет слишком много неудачных попыток ответа на пароль. |
Password |
Возвращает период времени, в течение которого выполняется последовательная попытка предоставить допустимый пароль или допустимый ответ на пароль. |
Password |
Возвращает значение, указывающее формат паролей в хранилище данных Active Directory. |
Password |
Возвращает регулярное выражение, используемое для вычисления пароля. |
Requires |
Возвращает значение, указывающее, настроен ли поставщик членства на запрос пароля и ответ при создании пользователя. |
Requires |
Возвращает значение, указывающее, должен ли адрес электронной почты, хранящийся на сервере Active Directory, быть уникальным. |
Change |
Изменяет пароль для указанного пользователя. |
Change |
Обновляет вопрос пароля и ответ пользователя в хранилище Active Directory. |
Create |
Добавляет нового пользователя в хранилище данных Active Directory. |
Decrypt |
Расшифровывает зашифрованный пароль. (Унаследовано от MembershipProvider) |
Delete |
Удаляет сведения о членстве пользователя из хранилища данных Active Directory. |
Encrypt |
Шифрует указанный пароль с помощью указанного режима совместимости паролей. (Унаследовано от MembershipProvider) |
Encrypt |
Шифрует пароль. (Унаследовано от MembershipProvider) |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
Find |
Возвращает коллекцию пользователей членства из хранилища данных Active Directory на основе адреса электронной почты пользователя. |
Find |
Возвращает коллекцию пользователей из хранилища данных Active Directory на основе имени пользователя. |
Generate |
Создает случайный пароль. |
Get |
Возвращает коллекцию всех пользователей, хранящихся в источнике данных Active Directory. |
Get |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
Get |
Вызывает исключение NotSupportedException во всех случаях. |
Get |
Возвращает пароль указанного пользователя из базы данных. Класс ActiveDirectoryMembershipProvider не поддерживает этот метод. |
Get |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
Get |
Возвращает сведения о пользователе членства, связанные с указанным ключом пользователя. |
Get |
Возвращает сведения о пользователе членства, связанные с указанным именем пользователя. |
Get |
Возвращает имя пользователя, связанное с указанным адресом электронной почты. |
Initialize(String, Name |
Инициализирует экземпляр ActiveDirectoryMembershipProvider со значениями свойств из файлов конфигурации приложения. Этот метод не предназначен для вызова из кода. |
Memberwise |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
On |
Вызывает событие ValidatingPassword, если был определен обработчик событий. (Унаследовано от MembershipProvider) |
Reset |
Сбрасывает пароль пользователя на новый автоматически созданный пароль. |
To |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Unlock |
Очищает блокировку, чтобы пользователь членства можно было проверить. |
Update |
Обновляет сведения о пользователе в хранилище данных Active Directory. |
Validate |
Проверяет, существует ли указанное имя пользователя и пароль в хранилище данных Active Directory. |
Validating |
Происходит при создании пользователя, изменении пароля или сбросе пароля. (Унаследовано от MembershipProvider) |
Продукт | Версии |
---|---|
.NET Framework | 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
- Общие сведения о членстве ASP.NET
- Практическое руководство. Использование членства в ASP.NET 2.0
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: