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


Функция 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

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

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

Допустимо только для SSP дайджеста для 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 (General). Выходной буфер может быть создан, даже если функция возвращает 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 сервера указывает, поддерживается ли целостность и конфиденциальность. Этот исходный файл cookie сервера обрабатывается клиентом, и клиент возвращает файл cookie клиента, чтобы указать, какие службы запрашивают клиент. Затем файл cookie клиента расшифровывается сервером, а конечные службы определяются для следующего трафика сообщений.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Не поддерживается
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка sspi.h (include Security.h)
библиотеки Secur32.lib
DLL Secur32.dll