функция Msv1_0SubAuthenticationFilter (subauth.h)

Функция Msv1_0SubAuthenticationFilter выполняет проверку подлинности при входе пользователя, относящееся к контроллерам домена.

Функция получает данные о входе пользователя и все сведения, найденные для пользователя в базе данных диспетчера учетных записей безопасности (SAM) контроллера домена.

Эта функция реализуется пользовательскими библиотеками DLL пакета вложенной проверки подлинности для использования с пакетами проверки подлинности Kerberos и MSV1_0.

Синтаксис

NTSTATUS Msv1_0SubAuthenticationFilter(
  [in]  NETLOGON_LOGON_INFO_CLASS LogonLevel,
  [in]  PVOID                     LogonInformation,
  [in]  ULONG                     Flags,
  [in]  PUSER_ALL_INFORMATION     UserAll,
  [out] PULONG                    WhichFields,
  [out] PULONG                    UserFlags,
  [out] PBOOLEAN                  Authoritative,
  [out] PLARGE_INTEGER            LogoffTime,
  [out] PLARGE_INTEGER            KickoffTime
);

Параметры

[in] LogonLevel

Указывает уровень сведений, указанных в LogonInformation. Этот параметр обычно имеет значение NetlogonInteractiveInformation.

[in] LogonInformation

Указатель на структуру NETLOGON_LOGON_IDENTITY_INFO . Элементы этой структуры содержат сведения о пользователе, который входит в систему. Элемент LogonDomainName игнорируется.

[in] Flags

Необязательный элемент. Содержит флаги, описывающие обстоятельства входа. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
MSV1_0_PASSTHRU
Сквозная проверка подлинности. Пользователь не подключается к этому компьютеру.
MSV1_0_GUEST_LOGON
Это повторная попытка входа с помощью гостевой учетной записи.

[in] UserAll

Указатель на структуру USER_ALL_INFORMATION , содержащую описание пользователя, возвращенное из базы данных SAM.

[out] WhichFields

Возвращает элементы структуры USER_ALL_INFORMATION , которые необходимо записать обратно в базу данных SAM. Эти элементы будут записываться только в том случае , если Msv1_0SubAuthenticationFilter возвращает успешное выполнение. Допустимо только следующее значение.

Значение Значение
USER_ALL_PARAMETERS
Запишите данные, содержащиеся в элементе Parameters структуры UserAll , обратно в базу данных SAM.

При изменении размера буфера UNICODE_STRING элемента ParametersMsv1_0SubAuthenticationFilter необходимо удалить буфер с помощью функции MIDL_user_free и перераспределить его с помощью функции MIDL_user_allocate.

[out] UserFlags

Значения, возвращаемые функцией LsaLogonUser в параметре ProfileBuffer этой функции. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
LOGON_GUEST
Это был гостевой вход.
LOGON_NOENCRYPTION
Вызывающий объект не указал зашифрованные учетные данные.
 
Примечание По соглашению пакеты вложенной проверки подлинности возвращают биты только в байте верхнего порядка параметра UserFlags .
 

[out] Authoritative

Указатель на логическое значение, указывающее, является ли возвращенное состояние заслуживающим доверия состоянием, которое должно быть возвращено исходному вызывающей объекту. Если возвращено значение FALSE, запрос на вход можно повторить на другом контроллере домена. Этот параметр должен возвращать допустимые сведения независимо от возвращаемого значения вызова функции. Этот параметр не используется с пакетом проверки подлинности Kerberos.

[out] LogoffTime

Указатель на значение, которое получает время выхода пользователя из системы. Это время используется для управления временем входа в систему и указывается как системное время Windows, относительное GMT.

[out] KickoffTime

Указатель на значение, которое получает время, когда пользователь должен выйти из системы. Это время используется для управления временем входа и указывается как системное время, относительное GMT. Если пользователь не должен автоматически выходить из системы, укажите большое положительное значение следующим образом:

KickoffTime->HighPart = 0x7FFFFFFF;
KickoffTime->LowPart = 0xFFFFFFFF;

Возвращаемое значение

Эта функция должна возвращать одно из следующих значений.

Код возврата Описание
STATUS_SUCCESS
Ошибки не было.
STATUS_ACCOUNT_DISABLED
Учетная запись отключена.
STATUS_ACCOUNT_EXPIRED
Срок действия учетной записи истек.
STATUS_ACCOUNT_LOCKED_OUT
Учетная запись заблокирована.
STATUS_INVALID_INFO_CLASS
LogonLevel недопустим.
STATUS_INVALID_LOGON_HOURS
В настоящее время пользователь не авторизован для входа в систему.
STATUS_INVALID_WORKSTATION
Пользователь не имеет прав на вход на указанную рабочую станцию.
STATUS_NO_SUCH_USER
У указанного пользователя нет учетной записи.
STATUS_PASSWORD_EXPIRED
Срок действия пароля истек.
STATUS_PASSWORD_MUST_CHANGE
Пароль должен измениться при следующем входе в систему.
STATUS_WRONG_PASSWORD
Недопустимый пароль.
 

Если функция Msv1_0SubAuthenticationFilter используется с пакетом проверки подлинности Kerberos, если вызов функции возвращает STATUS_SUCCESS и один из двух параметров LogoffTime или KickoffTime имеет ненулевое значение, это значение используется в качестве времени существования билета. Если, с другой стороны, значения обоих параметров не являются нулевыми, используется меньшее из этих двух значений.

Если значение, используемое для времени существования билета (чем раньше LogoffTime и KickoffTime), больше времени существования билета по умолчанию, то это значение будет использоваться в качестве максимального времени продления билета. И наоборот, если большее из двух значений (позднее LogoffTime и KickoffTime) меньше времени существования билета по умолчанию, это значение будет использоваться в качестве времени существования билета. Дополнительные сведения см. в статье Microsoft Kerberos.

При использовании с пакетом проверки подлинности Kerberos, если эта функция возвращает ошибку, центр распространения ключей (KDC) вернет ошибку Kerberos KDC_ERR_POLICY со значением состояния в качестве расширенного кода ошибки.

Комментарии

Реализации этой функции не должны выполнять какие-либо операции , вызывающие трафик LDAP. Например, не подключайтесь к базе данных Active Directory и не запрашивайте ее.

После того как пакет проверки подлинности MSV1_0 или Kerberos проверит вход, функция Msv1_0SubAuthenticationFilter может выполнить дополнительную проверку, чтобы определить, может ли пользователь войти в учетную запись сети. Эта функция вызывается, если библиотека DLL пакета вложенной проверки подлинности правильно зарегистрирована как Auth0 в реестре контроллера домена. Путь к реестру зависит от того, находится ли функция в библиотеке DLL пакета MSV1_0 или вложенной проверки подлинности Kerberos.

Эта подпрограмма фильтра может возвращать STATUS_SUCCESS, указывающее, что вход должен продолжаться, или код сбоя, указывающий на сбой дополнительной проверки.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header subauth.h