Функция обратного вызова 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
Флаги, указывающие требования к контексту. В следующей таблице приведены допустимые значения параметра.
Значение | Значение |
---|---|
|
Серверу разрешено олицетворить клиента. |
|
И клиент, и сервер должны подтвердить свою личность. |
|
Контекст безопасности будет поддерживать обнаружение воспроизводимых пакетов. |
|
Контекст безопасности будет поддерживать обнаружение неупорядоченных сообщений. |
|
Необходимо согласовать новый ключ сеанса . |
|
Если клиент является интерактивным пользователем, пакет должен, по возможности, запрашивать у пользователя соответствующие учетные данные. |
|
Входной буфер содержит учетные данные для конкретного пакета, которые следует использовать для проверки подлинности подключения. |
|
Пакет должен выделить память. В конечном итоге вызывающий объект должен вызвать функцию FreeContextBuffer , чтобы освободить память, выделенную пакетом безопасности. |
|
Вызывающий объект ожидает трехуровневую транзакцию взаимной проверки подлинности. |
|
Следует использовать канал связи типа datagram. Дополнительные сведения см. в разделе Контексты datagram. |
|
Следует использовать канал связи типа подключения. Дополнительные сведения см. в разделе Контексты, ориентированные на подключение. |
|
Если контекст завершается сбоем, создайте ответное сообщение об ошибке для отправки обратно клиенту. |
|
Следует использовать канал связи типа потока. Дополнительные сведения см. в разделе контексты Stream. |
|
Целостность буфера может быть проверена; однако повторно воспроизводимые и вне последовательности сообщения не будут обнаружены. |
[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 |