функция обратного вызова LSA_AP_LOGON_USER (ntsecpkg.h)
Выполняет проверку подлинности учетных данных для входа пользователя.
Эта функция вызывается только для начального входа пользователя. Последующие запросы проверки подлинности должны использовать LsaCallAuthenticationPackage.
Если LsaApLogonUser выполняется успешно, создается сеанс входа. Он также возвращает сведения, используемые для создания маркера, представляющего только что вошедшего в систему пользователя.
Синтаксис
LSA_AP_LOGON_USER LsaApLogonUser;
NTSTATUS LsaApLogonUser(
[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] PLSA_UNICODE_STRING *AccountName,
[out] PLSA_UNICODE_STRING *AuthenticatingAuthority
)
{...}
Параметры
[in] ClientRequest
Указатель на непрозрачный буфер LSA_CLIENT_REQUEST , представляющий запрос клиента LSA. Пакет проверки подлинности может передать это значение в AllocateClientBuffer и FreeClientBuffer , чтобы определить клиентский процесс, в котором следует выделить или освободить память.
[in] LogonType
Значение SECURITY_LOGON_TYPE , определяющее тип запрошенного входа.
[in] AuthenticationInformation
Предоставляет сведения о проверке подлинности, относящиеся к пакету проверки подлинности. LSA освободит этот буфер. Это тот же входной буфер, который передается в LsaLogonUser.
[in] ClientAuthenticationBase
Предоставляет адрес сведений о проверке подлинности в клиентском процессе. Это может потребоваться для повторного сопоставления любых указателей в буфере AuthenticationInformation .
[in] AuthenticationInformationLength
Указывает длину буфера AuthenticationInformation в байтах.
[out] ProfileBuffer
Указатель, получающий адрес буфера профиля в клиентском процессе. Пакет проверки подлинности отвечает за выделение буфера ProfileBuffer в клиентском процессе путем вызова функции AllocateClientBuffer . Однако если впоследствии LSA обнаружит ошибку, которая препятствует успешному входу в систему, LSA освободит этот буфер.
Содержимое этого буфера определяется пакетом проверки подлинности. LSA не изменяет этот буфер; он просто возвращает значение функции LsaLogonUser .
[out] ProfileBufferLength
Указатель на ULONG , получающий длину буфера ProfileBuffer в байтах.
[out] LogonId
Указатель на LUID , получающий новый идентификатор входа, который однозначно идентифицирует этот сеанс входа. Пакет проверки подлинности отвечает за выделение этого LUID и создание сеанса входа для этого входа.
[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.
Возвращаемое значение
Если функция завершается успешно, она должна вернуть STATUS_SUCCESS.
Если функция завершается сбоем, она должна вернуть код ошибки NTSTATUS, который может быть одним из следующих значений или одним из возвращаемых значений функции политики LSA.
Код возврата | Описание |
---|---|
|
Не удалось завершить вход, так как квота памяти клиента недостаточна для выделения возвращаемого буфера. |
|
Контроллеры домена недоступны для обслуживания запроса проверки подлинности. |
|
Неудачная попытка входа. Причина сбоя не указана; Типичные причины включают в себя имена пользователей и пароли с ошибками. |
|
Учетная запись пользователя и пароль были допустимыми, но ограничения учетной записи пользователя не позволяют выполнить вход в систему. Дополнительные сведения см. в разделе Параметр SubStatus . |
|
Указанные сведения о проверке подлинности не распознаются указанным пакетом проверки подлинности. |
Вызывающие приложения могут использовать функцию LsaNtStatusToWinError для преобразования кода NTSTATUS в код ошибки Windows.
Комментарии
Пакеты проверки подлинности должны реализовывать одну из следующих функций: LsaApLogonUser, LsaApLogonUserEx или LsaApLogonUserEx2.
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | ntsecpkg.h |