Функция 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
[in] pInput
Указатель на структуру SecBufferDesc, созданную вызовом клиента к функции InitializeSecurityContext (General), содержащей дескриптор входного буфера.
SASL требует одного буфера типа SECBUFFER_TOKEN. Буфер пуст для первого вызова функции AcceptSecurityContext (General) и содержит ответ на вызов, полученный от клиента для второго вызова.
[in] fContextReq
Битовые флаги, указывающие атрибуты, необходимые серверу для установления контекста. Битовые флаги можно объединить с помощью побитовых операцийOR. В следующей таблице показаны возможные значения.
[in] TargetDataRep
Указывает представление данных, например упорядочение байтов в целевом объекте. Это значение может быть либо SECURITY_NATIVE_DREP, либо SECURITY_NETWORK_DREP.
[out] phNewContext
Указатель на структуру ctxtHandle
[in, out] pOutput
Указатель на структуру SecBufferDesc, содержащую дескриптор выходного буфера. Этот буфер отправляется клиенту для ввода дополнительных вызовов InitializeSecurityContext (General). Выходной буфер может быть создан, даже если функция возвращает SEC_E_OK. Любой созданный буфер необходимо отправить обратно в клиентское приложение.
[out] pfContextAttr
Указатель на переменную, которая получает набор битовых флагов, указывающих атрибуты установленного контекста. Описание различных атрибутов см. в разделе требования к контексту. Флаги, используемые для этого параметра, префиксируются ASC_RET, например ASC_RET_DELEGATE.
Не проверяйте наличие атрибутов, связанных с безопасностью, пока окончательный вызов функции не будет успешно возвращен. Флаги атрибутов, не связанные с безопасностью, например флагом ASC_RET_ALLOCATED_MEMORY, можно проверить перед окончательным возвратом.
[out, optional] ptsExpiry
Указатель на структуру TimeStamp, которая получает время истечения срока действия контекста. Рекомендуется, чтобы пакет безопасности всегда возвращать это значение в локальное время.
Возвращаемое значение
Если вызов выполнен успешно, эта функция возвращает SEC_E_OK. В следующей таблице показаны некоторые возможные значения возвращаемых ошибок.
Возвращаемый код | Описание |
---|---|
|
Обработка Authz не разрешена. |
|
Недостаточно памяти для завершения запроса. |
|
Буфер маркера не находится в параметре 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 |