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
Наследование
ActiveDirectoryMembershipProvider

Примеры

В следующих примерах кода показан файл 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".

Комментарии

Этот класс используется классом и MembershipUser классами Membership для предоставления служб членства для приложения ASP.NET с помощью сервера Active Directory (AD) или режима приложений Active Directory (ADAM).

Примечание

Для использования сервера 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. Поставщик будет работать только в области домена или в подобласти в домене. В следующей таблице перечислены разрешенные строки подключения и используемая область.

Строка подключения Область
<domain or server>LDAP://:[порт]

Номер порта является необязательным для ADAM и не требуется для Active Directory.
Поставщик выполняется с указанным доменом или сервером. С помощью AD создание и удаление пользователей выполняется в контейнере пользователей по умолчанию. Все остальные операции, включая любые методы поиска, будут корневыми в контексте именования по умолчанию для домена.

Если строка подключения указывает домен Active Directory, а не конкретный сервер, а EnablePasswordReset свойство true, ActiveDirectoryMembershipProvider экземпляр всегда будет подключаться к серверу с ролью PDC для домена, чтобы убедиться, что изменения пароля вступили в силу и доступны при вызове ValidateUser метода.

Эта строка подключения не разрешена при использовании ADAM и вызовет NotSupportedExceptionисключение .
<domain or server>LDAP://:[порт]/<container dn>

Номер порта является необязательным для ADAM и не требуется для Active Directory.
Поставщик выполняется с указанным доменом или сервером. Создание и удаление пользователей выполняется только в указанном контейнере. Все остальные операции, включая любые методы поиска, выполняют поиск поддеревого дерева, корневого элемента в контейнере.

Для серверов ADAM контейнер указывает корень секции приложения или контейнер в секции приложения.

Мы рекомендуем определить конкретный контейнер для повышения производительности в строке подключения.

Экземпляр ActiveDirectoryMembershipProvider сопоставляет атрибуты каталога со свойствами ActiveDirectoryMembershipUser . Атрибуты по умолчанию используются, если сопоставление атрибутов в файле Web.config не выполняется. Дополнительные сведения о сопоставлениях атрибутов см. в документации по отдельным свойствам в документации по классам ActiveDirectoryMembershipUser .

В следующей таблице перечислены ActiveDirectoryMembershipUser свойства и их сопоставления атрибутов по умолчанию.

Важно!

Класс ActiveDirectoryMembershipProvider явно не проверяет, сопоставляются ли атрибуты поставщика с основными атрибутами объекта пользователя в каталоге. Необходимо убедиться, что конфиденциальная информация из каталога не предоставляется с помощью сопоставленных атрибутов.

Свойство. Атрибут каталога по умолчанию Можно ли сопоставить?
ProviderUserKey securityIdentifier Нет
UserName userPrincipalName Да, но должен быть userPrincipalName или sAMAccountName
Comment comment Нет
CreationDate whenCreated Нет
Email mail Да, но должен быть однозначным атрибутом типа Юникод String.
LastActivityDate Н/Д Не поддерживается ActiveDirectoryMembershipProvider.
LastLoginDate Н/Д Не поддерживается ActiveDirectoryMembershipProvider.
LastPasswordChangedDate pwdLastSet Нет
PasswordQuestion нет Да, но должен быть однозначным атрибутом типа Юникод String.
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 для поставщиков для членства (ASP.NET Параметры схемы) в файле конфигурации приложения.

Атрибут конфигурации Тип атрибута
attributeMapPasswordQuestion Должен быть однозначным атрибутом типа Юникод String.
attributeMapPasswordAnswer Должен быть однозначным атрибутом типа Юникод String.
attributeMapFailedPasswordAnswerCount Должен быть однозначным атрибутом типа Integer.
attributeMapFailedPasswordAnswerTime Должен быть однозначным атрибутом типа Large Integer/Interval.
attributeMapFailedPasswordAnswerLockoutTime Должен быть однозначным атрибутом типа Large Integer/Interval.

Дополнительные сведения об использовании безопасности сброса пароля см. в описании RequiresQuestionAndAnswer свойства.

Подключения Active Directory

ActiveDirectoryMembershipProvider Если класс используется для подключения к серверу Active Directory или active Directory Application Mode (ADAM), атрибут, заданный с помощью элемента add для поставщиков для членства (ASP.NET Параметры schema) в файле конфигурации приложения, может ограничить типы операцийActiveDirectoryMembershipProvider, connectionProtection которые класс может выполнять через соединение. Атрибут connectionProtection также определяет методы, которые ActiveDirectoryMembershipProvider экземпляр будет использовать для создания подключения к серверу Active Directory или ADAM.

В следующей таблице показано влияние атрибута connectionProtection при подключении к Active Directory.

Значение connectionProtection Действие
None Класс ActiveDirectoryMembershipProvider будет подключаться к Active Directory с этими ограничениями.

— Любой метод, который задает пароль, завершится ошибкой. Active Directory требует безопасного подключения при изменении паролей.
— Необходимо явно задать connectionUsername атрибуты с connectionPassword помощью элемента add для поставщиков членства (ASP.NET Параметры схемы) в файле конфигурации приложения; в противном случае ActiveDirectoryMembershipProvider экземпляр вызовет ProviderException исключение.
Secure Класс ActiveDirectoryMembershipProvider попытается подключиться к Active Directory с помощью SSL. В случае сбоя SSL будет выполнена вторая попытка подключиться к Active Directory с помощью подписи и запечатывания. Если обе попытки завершаются сбоемProviderException, ActiveDirectoryMembershipProvider экземпляр вызовет исключение.

Поддерживаются учетные данные процесса и явные учетные данные.

В следующей таблице показано влияние атрибута 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. Данное свойство всегда возвращает значение false.

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)

Применяется к

См. также раздел