функция обратного вызова LSA_AP_LOGON_USER_EX (ntsecpkg.h)
Выполняет проверку подлинности учетных данных для входа пользователя.
Эта функция вызывается локальным центром безопасности (LSA) только для первоначального входа пользователя. Последующие запросы проверки подлинности должны использовать LsaCallAuthenticationPackage. Если LsaApLogonUserEx завершается успешно, он создает сеанс входа и возвращает сведения, используемые для создания маркера, представляющего только что вошедшего в систему пользователя.
Эта функция отличается от LsaApLogonUser тем, что имя компьютера добавляется в запись аудита для попытки входа.
Синтаксис
LSA_AP_LOGON_USER_EX LsaApLogonUserEx;
NTSTATUS LsaApLogonUserEx(
[in] PLSA_CLIENT_REQUEST ClientRequest,
[in] SECURITY_LOGON_TYPE LogonType,
[in] PVOID AuthenticationInformation,
[in] PVOID ClientAuthenticationBase,
[in] ULONG AuthenticationInformationLength,
[out] PVOID *ProfileBuffer,
[out] PULONG ProfileBufferLength,
[out] PLUID LogonId,
[out] PNTSTATUS SubStatus,
[out] PLSA_TOKEN_INFORMATION_TYPE TokenInformationType,
[out] PVOID *TokenInformation,
[out] PUNICODE_STRING *AccountName,
[out] PUNICODE_STRING *AuthenticatingAuthority,
[out] PUNICODE_STRING *MachineName
)
{...}
Параметры
[in] ClientRequest
Указатель на непрозрачный LSA_CLIENT_REQUEST тип данных, представляющий запрос клиента LSA.
[in] LogonType
Структура SECURITY_LOGON_TYPE , которая определяет тип попытки входа.
[in] AuthenticationInformation
Предоставляет сведения о проверке подлинности, относящиеся к пакету проверки подлинности. LSA освободит этот буфер.
[in] ClientAuthenticationBase
Предоставляет адрес сведений о проверке подлинности в клиентском процессе. Это может потребоваться для повторного сопоставления любых указателей в буфере AuthenticationInformation .
[in] AuthenticationInformationLength
Указывает длину буфера AuthenticationInformation .
[out] ProfileBuffer
Указатель, получающий адрес буфера профиля в клиентском процессе. Пакет проверки подлинности отвечает за выделение буфера ProfileBuffer в клиентском процессе путем вызова функции AllocateClientBuffer . Однако если впоследствии LSA обнаруживает ошибку, которая препятствует успешному входу, LSA позаботится об освобождении этого буфера.
Содержимое этого буфера определяется пакетом проверки подлинности. LSA не изменяет этот буфер; он просто возвращает значение функции LsaLogonUser .
[out] ProfileBufferLength
Указатель на ULONG , получающий длину буфера ProfileBuffer в байтах.
[out] LogonId
Указатель на переменную LUID , которая получает новый идентификатор входа, который однозначно идентифицирует этот сеанс входа. Пакет проверки подлинности отвечает за выделение этого LUID и создание сеанса входа LSA для этого входа.
[out] SubStatus
Указатель на NTSTATUS, который получает причину сбоев из-за ограничений учетной записи. Значения, возвращаемые в SubStatus, определяются пакетом проверки подлинности.
Ниже приведены значения SubStatus для пакетов проверки подлинности MSV1_0 и Kerberos.
Дополнительные сведения о кодах NTSTATUS можно найти в файле заголовка Subauth.h, поставляемом вместе с пакетом SDK для платформы.
[out] TokenInformationType
Указатель, получающий адрес LSA_TOKEN_INFORMATION_TYPE значения, указывающего тип сведений, возвращаемых для включения в создаваемый маркер. Сведения возвращаются с помощью параметра TokenInformation .
[out] TokenInformation
Указатель, получающий адрес сведений, которые будут включены в токен. Формат и содержимое TokenInformation указываются параметром TokenInformationType . Ваш пакет проверки подлинности отвечает за выделение памяти, используемой TokenInformation; однако эта память будет освобождена LSA.
[out] AccountName
Указатель на структуру LSA_UNICODE_STRING , которая получает имя учетной записи пользователя. Имя_учетной записи всегда должно возвращаться независимо от успешного или неудачного вызова; его строка включается в запись аудита для попытки проверки подлинности. Ваш пакет проверки подлинности отвечает за выделение памяти, используемой accountName . Он будет освобожден LSA.
[out] AuthenticatingAuthority
Необязательный элемент. Указатель на структуру LSA_UNICODE_STRING , которая получает описание центра проверки подлинности для входа. Этот параметр может иметь значение NULL. Эта строка включена в запись аудита для попытки проверки подлинности. Пакет проверки подлинности отвечает за выделение памяти, используемой AuthenticatingAuthority; однако эта память будет освобождена LSA.
Пакет проверки подлинности MSV1_0 возвращает доменное имя домена, проверяющего учетную запись. Пакет проверки подлинности Kerberos возвращает имя домена NetBIOS.
[out] MachineName
Необязательный элемент. Указатель, получающий адрес структуры LSA_UNICODE_STRING , содержащей имя рабочей станции клиента. Эти сведения включаются в запись аудита для попытки проверки подлинности. Пакет проверки подлинности отвечает за выделение памяти, используемой machineName; однако эта память будет освобождена LSA.
Пакет проверки подлинности MSV1_0 возвращает netBIOS-имя рабочей станции клиента.
Возвращаемое значение
Если функция завершается успешно, она должна вернуть STATUS_SUCCESS.
В противном случае он должен вернуть код ошибки NTSTATUS, который может быть одним из следующих значений или одним из возвращаемых значений функции политики LSA.
Код возврата | Описание |
---|---|
|
Не удалось завершить вход, так как квота памяти клиента недостаточна для выделения возвращаемого буфера. |
|
Контроллеры домена недоступны для обслуживания запроса проверки подлинности. |
|
Неудачная попытка входа. Причина сбоя не указана; Типичные причины включают в себя имена пользователей и пароли с ошибками. |
|
Учетная запись пользователя и пароль являются допустимыми, но ограничения учетной записи пользователя препятствуют успешному входу в систему в настоящее время. |
|
Предоставленные сведения о проверке подлинности распознаются пакетом проверки подлинности. |
Вызывающие приложения могут использовать функцию LsaNtStatusToWinError для преобразования кода NTSTATUS в код ошибки Windows.
Комментарии
Пакеты проверки подлинности должны реализовывать одну из следующих функций: LsaApLogonUser, LsaApLogonUserEx или LsaApLogonUserEx2.
LsaApLogonUserEx был добавлен для сертификации C2. C2 — это классификация безопасности, определяемая США правительством.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | ntsecpkg.h |