Функция LsaCallAuthenticationPackage (ntsecapi.h)
Функция LsaCallAuthenticationPackage используется приложением для входа в систему для взаимодействия с пакетом проверки подлинности.
Эта функция обычно используется для доступа к службам, предоставляемым пакетом проверки подлинности.
Синтаксис
NTSTATUS LsaCallAuthenticationPackage(
[in] HANDLE LsaHandle,
[in] ULONG AuthenticationPackage,
[in] PVOID ProtocolSubmitBuffer,
[in] ULONG SubmitBufferLength,
[out] PVOID *ProtocolReturnBuffer,
[out] PULONG ReturnBufferLength,
[out] PNTSTATUS ProtocolStatus
);
Параметры
[in] LsaHandle
Дескриптор, полученный при предыдущем вызове LsaRegisterLogonProcess или LsaConnectUntrusted.
[in] AuthenticationPackage
Предоставляет идентификатор пакета проверки подлинности. Это значение получается путем вызова LsaLookupAuthenticationPackage.
[in] ProtocolSubmitBuffer
Буфер сообщений для конкретного пакета проверки подлинности, передаваемый в пакет проверки подлинности.
Сведения о формате и содержимом этого буфера см. в документации по отдельному пакету проверки подлинности.
[in] SubmitBufferLength
Указывает длину буфера ProtocolSubmitBuffer (в байтах).
[out] ProtocolReturnBuffer
Указатель, получающий адрес буфера, возвращаемого пакетом проверки подлинности.
Сведения о формате и содержимом этого буфера см. в документации по отдельному пакету проверки подлинности.
Этот буфер выделяется этой функцией. Завершив использование этого буфера, освободите память, вызвав функцию LsaFreeReturnBuffer .
[out] ReturnBufferLength
Указатель на ULONG , получающий длину возвращаемого буфера в байтах.
[out] ProtocolStatus
Если функция выполнена успешно, этот параметр получает код NTSTATUS , указывающий состояние завершения пакета проверки подлинности.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение будет STATUS_SUCCESS. Проверьте параметр ProtocolStatus , чтобы получить состояние, возвращаемое пакетом проверки подлинности.
Если функция завершается сбоем, возвращаемым значением будет код NTSTATUS . Ниже приведены возможные коды ошибок.
Код возврата | Описание |
---|---|
|
Не удалось выполнить вызов, так как квоты памяти клиента недостаточно для выделения возвращаемого буфера. |
|
Указанный пакет проверки подлинности не распознается LSA. |
|
Клиент Kerberos получил недопустимый сертификат KDC. Для входа устройства требуется строгая проверка KDC, поэтому центр сертификации должен иметь сертификаты, использующие шаблон проверки подлинности Kerberos или эквивалентный шаблон. Кроме того, срок действия сертификата KDC может быть просрочен, отозван или клиент подвергается активной атаке, отправляя запросы на неправильный сервер. |
|
Клиент Kerberos использует недопустимый системный сертификат. Для входа устройства должно быть DNS-имя. Кроме того, срок действия системного сертификата может быть истек или выбран неправильный. |
Дополнительные сведения см. в разделе Возвращаемые значения функции политики LSA.
Функция LsaNtStatusToWinError преобразует код NTSTATUS в код ошибки Windows.
Комментарии
Приложения для входа могут вызывать LsaCallAuthenticationPackage для взаимодействия с пакетом проверки подлинности. Это может сделать приложение по нескольким причинам.
- Реализация протоколов проверки подлинности с несколькими сообщениями, таких как протокол NTLM Challenge-Response.
- Передача сведений об изменении состояния в пакет проверки подлинности. Например, NTLM может уведомить пакет MSV1_0 о том, что ранее недоступный контроллер домена теперь доступен. Затем пакет проверки подлинности повторно войдет в систему всех пользователей, вошедшего в этот контроллер домена.
Необходимо вызвать LsaCallAuthenticationPackage , чтобы очистить учетные данные устройства PKINIT для LOCAL_SYSTEM и NETWORK_SERVICE. Если учетные данные устройства PKINIT отсутствуют, успешный вызов не выполняет никаких операций. При наличии учетных данных устройства PKINIT успешный вызов очищает учетные данные устройства PKINIT, чтобы остались только учетные данные пароля.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | ntsecapi.h |
Библиотека | Secur32.lib |
DLL | Secur32.dll |