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

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

Синтаксис

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

Параметры

[in] phCredential

Дескриптор учетных данных, возвращаемых
Функция AcquireCredentialsHandle, используемая для создания контекста безопасности. Для использования функции SaslInitializeSecurityContext требуются по крайней мере учетные данные OUTBOUND.

[in] phContext

Указатель на структуру CtxtHandle . При первом вызове функции SaslInitializeSecurityContext этот указатель имеет значение NULL. Во втором вызове этот параметр является указателем на дескриптор частично сформированного контекста, возвращаемого в параметре phNewContext при первом вызове.

[in] pszTargetName

Указатель на строку Юникода или ANSI, указывающую целевой объект контекста.

[in] fContextReq

Битовые флаги, указывающие требования контекста. Флаги, используемые для этого параметра, имеют префикс ISC_REQ_; Например, ISC_REQ_DELEGATE. Укажите сочетания следующих флагов атрибутов.

Значение Значение
ISC_REQ_REPLAY_DETECT
Обнаружение воспроизводимых пакетов.
ISC_REQ_SEQUENCE_DETECT
Обнаружение сообщений, полученных вне последовательности.
ISC_REQ_CONFIDENTIALITY
Шифрование сообщений.
ISC_REQ_STREAM
Поддержка потокового подключения.
ISC_REQ_EXTENDED_ERROR
При возникновении ошибок удаленная сторона будет уведомлена.
ISC_REQ_CONNECTION
Контекст безопасности не будет обрабатывать сообщения форматирования.
ISC_REQ_MUTUAL_AUTH
Клиент и сервер будут проходить проверку подлинности.
ISC_REQ_INTEGRITY
Подписывая сообщения и проверяя подписи.
 

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

[in] Reserved1

Зарезервированное значение; значение должно быть равно нулю.

[in] TargetDataRep

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

[in] pInput

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

ДЛЯ SASL требуется один буфер типа SECBUFFER_TOKEN , содержащий запрос, полученный от сервера.

[in] Reserved2

Зарезервированное значение; значение должно быть равно нулю.

[out] phNewContext

Указатель на структуру CtxtHandle . При первом вызове функции SaslInitializeSecurityContext этот указатель получает новый дескриптор контекста. Во втором вызове phNewContext может совпадать с дескриптором, указанным в параметре phContext .

[in, out] pOutput

Указатель на структуру SecBufferDesc , содержащую указатели на структуру SecBuffer , получающую выходные данные. Если буфер был введен как SEC_READWRITE во входных данных, он будет там на выходе. Система выделит буфер для маркера безопасности при запросе (через ISC_REQ_ALLOCATE_MEMORY) и заполнит адрес в дескрипторе буфера для маркера безопасности.

[out] pfContextAttr

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

Флаги, используемые для этого параметра, имеют префикс ISC_RET_, например ISC_RET_DELEGATE.

Список допустимых значений см. в параметре fContextReq .

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

Примечание Определенные атрибуты контекста могут изменяться во время согласования с удаленным одноранговым элементом.
 

[out, optional] ptsExpiry

Указатель на структуру TimeStamp , которая получает время окончания срока действия контекста. Рекомендуется, чтобы пакет безопасности всегда возвращал это значение в местное время. Этот параметр является необязательным, и для клиентов с коротким сроком действия необходимо передать ЗНАЧЕНИЕ NULL .

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

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

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

Комментарии

Примечание

Заголовок sspi.h определяет SaslInitializeSecurityContext в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

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