Поделиться через


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.

Комментарии

Этот класс используется классами 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 Нет
Email mail Да, но должен быть однозначным атрибутом типа Строка Юникода.
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. Данное свойство всегда возвращает значение 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)

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

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