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


функция обратного вызова LSA_AP_LOGON_USER_EX2 (ntsecpkg.h)

Используется для проверки подлинности попытки входа пользователя при первоначальном входе пользователя. Для пользователя устанавливается новый сеанс входа и возвращаются сведения о проверке для пользователя.

Синтаксис

LSA_AP_LOGON_USER_EX2 LsaApLogonUserEx2;

NTSTATUS LsaApLogonUserEx2(
  [in]  PLSA_CLIENT_REQUEST ClientRequest,
  [in]  SECURITY_LOGON_TYPE LogonType,
  [in]  PVOID ProtocolSubmitBuffer,
  [in]  PVOID ClientBufferBase,
  [in]  ULONG SubmitBufferSize,
  [out] PVOID *ProfileBuffer,
  [out] PULONG ProfileBufferSize,
  [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,
  [out] PSECPKG_PRIMARY_CRED PrimaryCredentials,
  [out] PSECPKG_SUPPLEMENTAL_CRED_ARRAY *SupplementalCredentials
)
{...}

Параметры

[in] ClientRequest

Указатель на LSA_CLIENT_REQUEST непрозрачный буфер, представляющий запрос клиента.

[in] LogonType

SECURITY_LOGON_TYPE значение, определяющее тип входа.

[in] ProtocolSubmitBuffer

Буфер, предоставляющий сведения о проверке подлинности, относящиеся к пакету проверки подлинности.

[in] ClientBufferBase

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

[in] SubmitBufferSize

Значение ULONG , указывающее размер (в байтах) буфера сведений о проверке подлинности.

[out] ProfileBuffer

Указатель, получающий адрес буфера профиля в клиентском процессе. Пакет проверки подлинности отвечает за выделение ProfileBuffer в клиентском процессе путем вызова функции AllocateClientBuffer . Однако если впоследствии LSA обнаруживает ошибку, которая препятствует успешному входу, LSA позаботится об освобождении этого буфера.

Содержимое этого буфера определяется пакетом проверки подлинности. LSA не изменяет этот буфер; он просто возвращает значение функции LsaLogonUser .

[out] ProfileBufferSize

Указатель на ULONG , который получает размер буфера ProfileBuffer .

[out] LogonId

Указатель на переменную LUID , которая получает новый идентификатор входа, который однозначно идентифицирует этот сеанс входа. Пакет проверки подлинности отвечает за выделение этого LUID и создание сеанса входа LSA для этого входа.

[out] SubStatus

Указатель на NTSTATUS, который получает причину сбоев из-за ограничений учетной записи. Значения, возвращаемые в SubStatus, определяются пакетом проверки подлинности.

В следующей таблице перечислены значения SubStatus для пакетов проверки подлинности MSV1_0 и Kerberos.

Значение Значение
STATUS_INVALID_LOGON_HOURS
Учетная запись пользователя имеет ограничения по времени; Его нельзя использовать для входа в систему в настоящее время.
STATUS_INVALID_WORKSTATION
Учетная запись пользователя имеет ограничения рабочей станции; Его нельзя использовать для входа на текущую рабочую станцию.
STATUS_PASSWORD_EXPIRED
Срок действия пароля учетной записи пользователя истек.
STATUS_ACCOUNT_DISABLED
Учетная запись пользователя в настоящее время отключена и не может использоваться для входа.
 

Дополнительные сведения о кодах NTSTATUS можно найти в файле заголовка Subauth.h, поставляемом вместе с пакетом SDK для платформы.

Функция LsaNtStatusToWinError преобразует код NTSTATUS в код ошибки Windows.

[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

Необязательный элемент. Указатель, получающий адрес UNICODE_STRING структуры, содержащей имя компьютера клиента. При необходимости эту строку можно опустить. Эта строка включена в запись аудита для этой попытки проверки подлинности. Пакет проверки подлинности отвечает за выделение памяти, используемой machineName; однако эта память будет освобождена LSA.

Пакет проверки подлинности MSV1_0 возвращает netBIOS-имя рабочей станции клиента.

[out] PrimaryCredentials

Указатель на структуру SECPKG_PRIMARY_CRED , которая возвращает основные учетные данные для передачи другим пакетам.

[out] SupplementalCredentials

Указатель на SECPKG_SUPPLEMENTAL_CRED_ARRAY массив дополнительных учетных данных для других пакетов.

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

Если функция завершается успешно, она должна вернуть STATUS_SUCCESS.

В противном случае он должен вернуть код ошибки NTSTATUS, который может быть одним из следующих значений или одним из возвращаемых значений функции политики LSA.

Код возврата Описание
STATUS_QUOTA_EXCEEDED
Не удалось завершить вход, так как квота памяти клиента недостаточна для выделения возвращаемого буфера.
STATUS_NO_LOGON_SERVERS
Контроллеры домена недоступны для обслуживания запроса проверки подлинности.
STATUS_LOGON_FAILURE
Неудачная попытка входа. Причина сбоя не указана; Типичные причины включают в себя имена пользователей и пароли с ошибками.
STATUS_ACCOUNT_RESTRICTION
Учетная запись пользователя и пароль были допустимыми, но ограничения учетной записи пользователя не позволяли успешно выполнить вход в систему. Дополнительные сведения см. в параметре SubStatus .
STATUS_BAD_VALIDATION_CLASS
Предоставленные сведения о проверке подлинности не распознаются пакетом проверки подлинности.
STATUS_INVALID_LOGON_TYPE
Недопустимый тип logonType .
STATUS_LOGON_SESSION_COLLISION
Идентификатор входа, выбранный для этого сеанса входа (в параметре LogonId ), уже существует.
STATUS_NETLOGON_NOT_STARTED
База данных SAM или служба Netlogon являются обязательными, но недоступны.
STATUS_NO_MEMORY
Квоты виртуальной памяти или файлов подкачки клиента недостаточны для выделения возвращаемого буфера.
 

Вызывающие приложения могут использовать функцию LsaNtStatusToWinError для преобразования кода NTSTATUS в код ошибки Windows.

Комментарии

Пакеты проверки подлинности должны реализовывать одну из следующих функций: LsaApLogonUser, LsaApLogonUserEx или LsaApLogonUserEx2.

Требования

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

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

LSA_CLIENT_REQUEST

LSA_TOKEN_INFORMATION_TYPE

LSA_UNICODE_STRING

LsaApLogonUser

LsaApLogonUserEx

LsaCallAuthenticationPackage