Функция обратного вызова 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 .

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

Значение Значение
ISC_REQ_DELEGATE
Серверу разрешено олицетворить клиента.
ISC_REQ_MUTUAL_AUTH
И клиент, и сервер должны подтвердить свою личность.
ISC_REQ_REPLAY_DETECT
Контекст безопасности будет поддерживать обнаружение воспроизводимых пакетов.
ISC_REQ_SEQUENCE_DETECT
Контекст безопасности будет поддерживать обнаружение неупорядоченных сообщений.
ISC_REQ_USE_SESSION_KEY
Необходимо согласовать новый ключ сеанса .
ISC_REQ_PROMPT_FOR_CREDS
Если клиент является интерактивным пользователем, пакет должен, по возможности, запрашивать у пользователя соответствующие учетные данные.
ISC_REQ_USE_SUPPLIED_CREDS
Входной буфер содержит учетные данные для конкретного пакета, которые следует использовать для проверки подлинности подключения.
ISC_REQ_ALLOCATE_MEMORY
Пакет должен выделить память. В конечном итоге вызывающий объект должен вызвать функцию FreeContextBuffer , чтобы освободить память, выделенную пакетом.
ISC_REQ_USE_DCE_STYLE
Вызывающий объект ожидает трехуровневую транзакцию взаимной проверки подлинности.
ISC_REQ_DATAGRAM
Следует использовать канал связи типа datagram. Дополнительные сведения см. в разделе Контексты datagram.
ISC_REQ_CONNECTION
Следует использовать канал связи типа подключения. Дополнительные сведения см. в разделе Контексты, ориентированные на подключение.
ISC_REQ_EXTENDED_ERROR
Если контекст завершается сбоем, создайте ответное сообщение об ошибке для отправки обратно клиенту.
ISC_REQ_STREAM
Следует использовать канал связи типа потока. Дополнительные сведения см. в разделе контексты Stream.
ISC_REQ_INTEGRITY
Проверяется целостность буфера; однако повторно воспроизводимые и вне последовательности сообщения не будут обнаружены.

[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

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

AllocateLsaHeap

InitializeSecurityContext (General)

SECPKG_FUNCTION_TABLE

SpAcceptLsaModeContext

SpLsaModeInitialize

Timestamp