Функция обратного вызова SpAcceptLsaModeContextFn (ntsecpkg.h)

Функция диспетчеризации сервера, используемая для создания контекста безопасности , совместно используемого сервером и клиентом.

Функция SpAcceptLsaModeContext вызывается, когда сервер вызывает функцию AcceptSecurityContext (General)интерфейса поставщика поддержки безопасности.

Синтаксис

SpAcceptLsaModeContextFn Spacceptlsamodecontextfn;

NTSTATUS Spacceptlsamodecontextfn(
  [in]  LSA_SEC_HANDLE CredentialHandle,
  [in]  LSA_SEC_HANDLE ContextHandle,
  [in]  PSecBufferDesc InputBuffer,
  [in]  ULONG ContextRequirements,
  [in]  ULONG TargetDataRep,
  [out] PLSA_SEC_HANDLE NewContextHandle,
  [out] PSecBufferDesc OutputBuffer,
  [out] PULONG ContextAttributes,
  [out] PTimeStamp ExpirationTime,
  [out] PBOOLEAN MappedContext,
  [out] PSecBuffer ContextData
)
{...}

Параметры

[in] CredentialHandle

Необязательный параметр. Обработка учетных данных для использования в контексте.

[in] ContextHandle

Необязательный элемент. Обработка в текущем контексте.

[in] InputBuffer

Указатель на структуру SecBufferDesc , содержащую сведения от клиента.

[in] ContextRequirements

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

Значение Значение
ASC_REQ_DELEGATE
Серверу разрешено олицетворить клиента.
ASC_REQ_MUTUAL_AUTH
И клиент, и сервер должны подтвердить свою личность.
ASC_REQ_REPLAY_DETECT
Контекст безопасности будет поддерживать обнаружение воспроизводимых пакетов.
ASC_REQ_SEQUENCE_DETECT
Контекст безопасности будет поддерживать обнаружение неупорядоченных сообщений.
ASC_REQ_USE_SESSION_KEY
Необходимо согласовать новый ключ сеанса .
ASC_REQ_PROMPT_FOR_CREDS
Если клиент является интерактивным пользователем, пакет должен, по возможности, запрашивать у пользователя соответствующие учетные данные.
ASC_REQ_USE_SUPPLIED_CREDS
Входной буфер содержит учетные данные для конкретного пакета, которые следует использовать для проверки подлинности подключения.
ASC_REQ_ALLOCATE_MEMORY
Пакет должен выделить память. В конечном итоге вызывающий объект должен вызвать функцию FreeContextBuffer , чтобы освободить память, выделенную пакетом безопасности.
ASC_REQ_USE_DCE_STYLE
Вызывающий объект ожидает трехуровневую транзакцию взаимной проверки подлинности.
ASC_REQ_DATAGRAM
Следует использовать канал связи типа datagram. Дополнительные сведения см. в разделе Контексты datagram.
ASC_REQ_CONNECTION
Следует использовать канал связи типа подключения. Дополнительные сведения см. в разделе Контексты, ориентированные на подключение.
ASC_REQ_EXTENDED_ERROR
Если контекст завершается сбоем, создайте ответное сообщение об ошибке для отправки обратно клиенту.
ASC_REQ_STREAM
Следует использовать канал связи типа потока. Дополнительные сведения см. в разделе контексты Stream.
ASC_REQ_INTEGRITY
Целостность буфера может быть проверена; однако повторно воспроизводимые и вне последовательности сообщения не будут обнаружены.

[in] TargetDataRep

Флаг, указывающий представление данных, например порядок байтов, для использования. Содержит SECURITY_NATIVE_DREP или SECURITY_NETWORK_DREP.

[out] NewContextHandle

Указатель на LSA_SEC_HANDLE. При первом вызове AcceptSecurityContext этот указатель получает новый дескриптор контекста. При последующих вызовах NewContextHandle может быть таким же, как дескриптор, указанный в параметре ContextHandle .

[out] OutputBuffer

Указатель на структуру SecBufferDesc , которая получает сведения для отправки клиенту.

[out] ContextAttributes

Указатель на флаги, указывающие атрибуты контекста, поддерживаемые сервером. Список допустимых значений см. в параметре ContextRequirements .

[out] ExpirationTime

Указатель на метку времени , которая получает время истечения срока действия контекста.

[out] MappedContext

Указатель на логическое значение. Установите для параметра MappedContext значение TRUE , если пакет безопасности реализует функции SSP/AP в пользовательском режиме.

[out] ContextData

Необязательный элемент. Указатель на структуру SecBuffer , которая получает данные, относящиеся к контексту, для копирования при создании контекста безопасности в пользовательском режиме. Память для ContextData должна быть выделена с помощью функции AllocateLsaHeap . Локальный центр безопасности (LSA) освободит память.

Возвращаемое значение

Если функция SpAcceptLsaModeContext выполнена успешно и для определения контекста безопасности больше не требуется обработка, верните STATUS_SUCCESS. Если требуется дополнительная обработка, функция должна возвращать SEC_I_CONTINUE_NEEDED.

Если функции не удается создать контекст безопасности по какой-либо другой причине, верните код NTSTATUS, указывающий причину.

Комментарии

SpInitLsaModeContext — это клиентская функция для создания контекста безопасности.

Поставщики SSP или APs должны реализовывать функцию SpAcceptLsaModeContext . Фактическое имя, данное реализации, задается разработчиком.

Указатель на функцию SpAcceptLsaModeContext доступен в структуре SECPKG_FUNCTION_TABLE , полученной от функции SpLsaModeInitialize .

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header ntsecpkg.h

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

AllocateLsaHeap

SpInitLsaModeContext

SpLsaModeInitialize