Функция SaslAcceptSecurityContext (sspi.h)

Функция SaslAcceptSecurityContext создает стандартный вызов функции AcceptSecurityContext (General)интерфейса поставщика поддержки безопасности и включает создание файлов cookie сервера SASL.

Синтаксис

SECURITY_STATUS SEC_ENTRY SaslAcceptSecurityContext(
  [in]            PCredHandle    phCredential,
  [in, optional]  PCtxtHandle    phContext,
  [in]            PSecBufferDesc pInput,
  [in]            unsigned long  fContextReq,
  [in]            unsigned long  TargetDataRep,
  [out]           PCtxtHandle    phNewContext,
  [in, out]       PSecBufferDesc pOutput,
  [out]           unsigned long  *pfContextAttr,
  [out, optional] PTimeStamp     ptsExpiry
);

Параметры

[in] phCredential

Дескриптор учетных данных сервера. Сервер вызывает функцию AcquireCredentialsHandle с установленным флагом INBOUND для получения этого дескриптора.

[in, optional] phContext

Указатель на структуру CtxtHandle . При первом вызове AcceptSecurityContext (General) этот указатель имеет значение NULL. При последующих вызовах phContext — это дескриптор частично сформированного контекста, который был возвращен в параметре phNewContext при первом вызове.

[in] pInput

Указатель на структуру SecBufferDesc , созданную вызовом клиента функции InitializeSecurityContext (General), содержащей дескриптор входного буфера.

ДЛЯ SASL требуется один буфер типа SECBUFFER_TOKEN. Буфер пуст для первого вызова функции AcceptSecurityContext (general) и содержит ответ на запрос, полученный от клиента для второго вызова.

[in] fContextReq

Битовые флаги, указывающие атрибуты, необходимые серверу для установления контекста. Битовые флаги можно объединять с помощью побитовых операций ИЛИ . В следующей таблице приводятся возможные значения.

Значение Значение
ASC_REQ_CONFIDENTIALITY
Шифрование и расшифровка сообщений.

Допустимо только с дайджест-поставщиком общих служб только для SASL.

ASC_REQ_HTTP
Используйте дайджест для HTTP. Опустите этот флаг, чтобы использовать дайджест в качестве механизма SASL.

[in] TargetDataRep

Указывает представление данных, например упорядочение байтов, в целевом объекте. Это значение может быть SECURITY_NATIVE_DREP или SECURITY_NETWORK_DREP.

[out] phNewContext

Указатель на структуру CtxtHandle . При первом вызове AcceptSecurityContext (General) этот указатель получает новый дескриптор контекста. При последующих вызовах phNewContext может совпадать с дескриптором, указанным в параметре phContext .

[in, out] pOutput

Указатель на структуру SecBufferDesc , содержащую дескриптор выходного буфера. Этот буфер отправляется клиенту для ввода в дополнительные вызовы InitializeSecurityContext (Общие). Выходной буфер может быть создан, даже если функция возвращает SEC_E_OK. Любой созданный буфер должен быть отправлен обратно в клиентское приложение.

[out] pfContextAttr

Указатель на переменную, которая получает набор битовых флагов, указывающих атрибуты установленного контекста. Описание различных атрибутов см. в разделе Требования к контексту. Флаги, используемые для этого параметра, имеют префикс ASC_RET, например ASC_RET_DELEGATE.

Не проверка атрибутов, связанных с безопасностью, до тех пор, пока не будет успешно выполнен окончательный вызов функции. Флаги атрибутов, не связанные с безопасностью, такие как флаг ASC_RET_ALLOCATED_MEMORY, можно проверить перед окончательным возвратом.

[out, optional] ptsExpiry

Указатель на структуру TimeStamp , которая получает время окончания срока действия контекста. Рекомендуется, чтобы пакет безопасности всегда возвращал это значение в местное время.

Примечание До последнего вызова процесса проверки подлинности время окончания срока действия контекста может быть неверным, так как на более поздних этапах согласования будут предоставлены дополнительные сведения. Таким образом, значение ptsTimeStamp должно иметь значение NULL до последнего вызова функции.
 

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

Если вызов выполнен успешно, эта функция возвращает SEC_E_OK. В следующей таблице показаны некоторые возможные значения, возвращаемые сбоем.

Код возврата Описание
SEC_E_ALGORITHM_MISMATCH
Обработка authz запрещена.
SEC_E_INSUFFICIENT_MEMORY
Недостаточно памяти для выполнения запроса.
SEC_E_INVALID_TOKEN
В параметре pOutput буфер маркера отсутствует, или сообщение не удалось расшифровать.

Комментарии

Определяется последний вызов функции AcceptSecurityContext (General), которая возвращает SEC_E_OK. При создании возвращаемого маркера обработка SASL приостанавливается на один круговой путь обратно клиенту, чтобы разрешить обработку окончательного маркера. После завершения обмена SEC_E_CONTINUE_NEEDED возвращается в приложение с дополнительным файлом cookie сервера SASL, зашифрованным с помощью функций сообщений SSPI. Исходный файл cookie сервера указывает, поддерживаются ли INTEGRITY и PRIVACY. Этот исходный файл cookie сервера обрабатывается клиентом, и клиент возвращает файл cookie клиента, чтобы указать, какие службы запрашивает клиент. Затем файл cookie клиента расшифровывается сервером, и конечные службы определяются для следующего трафика сообщений.

Требования

   
Минимальная версия клиента Ни одна версия не поддерживается
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header sspi.h (включая Security.h)
Библиотека Secur32.lib
DLL Secur32.dll