функция обратного вызова 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.
Дополнительные сведения о кодах 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.
Код возврата | Описание |
---|---|
|
Не удалось завершить вход, так как квота памяти клиента недостаточна для выделения возвращаемого буфера. |
|
Контроллеры домена недоступны для обслуживания запроса проверки подлинности. |
|
Неудачная попытка входа. Причина сбоя не указана; Типичные причины включают в себя имена пользователей и пароли с ошибками. |
|
Учетная запись пользователя и пароль были допустимыми, но ограничения учетной записи пользователя не позволяли успешно выполнить вход в систему. Дополнительные сведения см. в параметре SubStatus . |
|
Предоставленные сведения о проверке подлинности не распознаются пакетом проверки подлинности. |
|
Недопустимый тип logonType . |
|
Идентификатор входа, выбранный для этого сеанса входа (в параметре LogonId ), уже существует. |
|
База данных SAM или служба Netlogon являются обязательными, но недоступны. |
|
Квоты виртуальной памяти или файлов подкачки клиента недостаточны для выделения возвращаемого буфера. |
Вызывающие приложения могут использовать функцию LsaNtStatusToWinError для преобразования кода NTSTATUS в код ошибки Windows.
Комментарии
Пакеты проверки подлинности должны реализовывать одну из следующих функций: LsaApLogonUser, LsaApLogonUserEx или LsaApLogonUserEx2.
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | ntsecpkg.h |