Поделиться через


Функция 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 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 . При первом вызове функции SaslInitializeSecurityCon text этот указатель получает новый дескриптор контекста. Во втором вызове 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 [только классические приложения]
целевая платформа Виндоус
заголовка sspi.h (include Security.h)
библиотеки Secur32.lib
DLL Secur32.dll