Функция обратного вызова SpInitLsaModeContextFn (ntsecpkg.h)
Функция SpInitLsaModeContext — это функция диспетчеризации клиента, используемая для установления контекста безопасности между сервером и клиентом.
Функция SpInitLsaModeContext вызывается, когда клиент вызывает функцию InitializeSecurityContext (General)интерфейса поставщика поддержки безопасности.
Синтаксис
SpInitLsaModeContextFn Spinitlsamodecontextfn;
NTSTATUS Spinitlsamodecontextfn(
[in] LSA_SEC_HANDLE CredentialHandle,
[in] LSA_SEC_HANDLE ContextHandle,
[in] PUNICODE_STRING TargetName,
[in] ULONG ContextRequirements,
[in] ULONG TargetDataRep,
[in] PSecBufferDesc InputBuffers,
[out] PLSA_SEC_HANDLE NewContextHandle,
[out] PSecBufferDesc OutputBuffers,
[out] PULONG ContextAttributes,
[out] PTimeStamp ExpirationTime,
[out] PBOOLEAN MappedContext,
[out] PSecBuffer ContextData
)
{...}
Параметры
[in] CredentialHandle
Необязательный параметр. Обработка учетных данных для использования в контексте. CredentialHandle может иметь значение NULL , если параметр ContextHandle не равен NULL.
[in] ContextHandle
Необязательный элемент. Обработка контекста для использования в качестве основы для этого контекста. ContextHandle может иметь значение NULL , если параметр CredentialHandle не равен NULL.
[in] TargetName
Необязательный элемент. Указатель на UNICODE_STRING , содержащий имя целевого объекта контекста. Содержимое TargetName зависит от пакета и не интерпретируется LSA.
[in] ContextRequirements
Флаги, указывающие атрибуты контекста, необходимые клиенту. Фактические атрибуты контекста возвращаются в параметре ContextAttributes .
В следующей таблице приведены допустимые значения параметра.
Значение | Значение |
---|---|
|
Серверу разрешено олицетворить клиента. |
|
И клиент, и сервер должны подтвердить свою личность. |
|
Контекст безопасности будет поддерживать обнаружение воспроизводимых пакетов. |
|
Контекст безопасности будет поддерживать обнаружение неупорядоченных сообщений. |
|
Необходимо согласовать новый ключ сеанса . |
|
Если клиент является интерактивным пользователем, пакет должен, по возможности, запрашивать у пользователя соответствующие учетные данные. |
|
Входной буфер содержит учетные данные для конкретного пакета, которые следует использовать для проверки подлинности подключения. |
|
Пакет должен выделить память. В конечном итоге вызывающий объект должен вызвать функцию FreeContextBuffer , чтобы освободить память, выделенную пакетом. |
|
Вызывающий объект ожидает трехуровневую транзакцию взаимной проверки подлинности. |
|
Следует использовать канал связи типа datagram. Дополнительные сведения см. в разделе Контексты datagram. |
|
Следует использовать канал связи типа подключения. Дополнительные сведения см. в разделе Контексты, ориентированные на подключение. |
|
Если контекст завершается сбоем, создайте ответное сообщение об ошибке для отправки обратно клиенту. |
|
Следует использовать канал связи типа потока. Дополнительные сведения см. в разделе контексты Stream. |
|
Проверяется целостность буфера; однако повторно воспроизводимые и вне последовательности сообщения не будут обнаружены. |
[in] TargetDataRep
Флаг, указывающий представление данных, например упорядочение байтов, на целевом объекте. Содержит SECURITY_NATIVE_DREP или SECURITY_NETWORK_DREP.
[in] InputBuffers
Указатель на структуру SecBufferDesc , содержащую предыдущее ответное сообщение с сервера. При первом вызове этой функции параметр InputBuffers имеет значение NULL.
[out] NewContextHandle
Указатель, получающий дескриптор нового контекста безопасности. Завершив использование контекста безопасности, отпустите дескриптор, вызвав функцию SpDeleteContext .
[out] OutputBuffers
Указатель на структуру SecBufferDesc , содержащую маркер безопасности для обратной передачи на сервер.
[out] ContextAttributes
Указатель на флаги, указывающие атрибуты нового контекста. Клиент запрашивает набор атрибутов с помощью параметра ContextRequirements . Если флаги ContextRequirements не соответствуют флагам ContextAttributes , клиент должен решить, следует ли продолжить или завершить работу. Полный список допустимых флагов см. в разделе Требования к контексту.
[out] ExpirationTime
Указатель на метку времени , которая получает срок действия для нового контекста.
[out] MappedContext
Указатель на логическое значение. Установите для параметра MappedContext значение TRUE , если пакет безопасности реализует функции SSP/AP в пользовательском режиме.
[out] ContextData
Указатель на структуру SecBuffer , которая получает данные для копирования при создании контекста безопасности пользовательского режима. Выделение памяти для ContextData с помощью функции AllocateLsaHeap . LSA освободит память.
Возвращаемое значение
Если функция выполнена успешно и обработка не требуется, верните STATUS_SUCCESS. Если обработка не завершена, функция должна вернуть SEC_I_CONTINUE_NEEDED. При возвращении этого значения вызывающий объект должен снова вызвать функцию InitializeSecurityContext (General).
Если функции не удается создать контекст безопасности по какой-либо другой причине, она должна вернуть код NTSTATUS, указывающий причину сбоя.
Комментарии
Функция SpAcceptLsaModeContext — это серверная функция для создания контекста.
Поставщики SSP или APs должны реализовывать функцию SpInitLsaModeContext ; однако фактическое имя, присваиваемого реализации, задается разработчиком.
Указатель на функцию SpInitLsaModeContext доступен в структуре SECPKG_FUNCTION_TABLE , полученной от функции SpLsaModeInitialize .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | ntsecpkg.h |