Функция SspiAcceptSecurityContextAsync (sspi.h)
Функция SspiAcceptSecurityContextAsync позволяет компоненту сервера транспортного приложения асинхронно устанавливать контекст безопасности между сервером и удаленным клиентом. Удаленный клиент вызывает функцию SspiInitializeSecurityContextAsync , чтобы асинхронно запустить процесс создания контекста безопасности.
Примечание
Эта функция служит асинхронным аналогомфункции AcceptSecurityContext.
Синтаксис
SECURITY_STATUS SspiAcceptSecurityContextAsync(
SspiAsyncContext *AsyncContext,
PCredHandle phCredential,
PCtxtHandle phContext,
PSecBufferDesc pInput,
unsigned long fContextReq,
unsigned long TargetDataRep,
PCtxtHandle phNewContext,
PSecBufferDesc pOutput,
unsigned long *pfContextAttr,
PTimeStamp ptsExpiry
);
Параметры
AsyncContext
Контекст асинхронного вызова.
phCredential
Дескриптор учетных данных сервера. Чтобы получить этот дескриптор, сервер вызывает функцию SspiAcquireCredentialsHandleAsync с флагом SECPKG_CRED_INBOUND или SECPKG_CRED_BOTH.
phContext
Указатель на структуру CtxtHandle . При первом вызове SspiAcceptSecurityContextAsync этот указатель имеет значение NULL. При последующих вызовах phContext задает частично сформированный контекст, возвращаемый в параметре phNewContext при первом вызове.
pInput
Указатель на структуру SecBufferDesc , созданную вызовом SspiInitializeSecurityContextAsync. Структура содержит дескриптор входного буфера.
Первый буфер должен иметь тип SECBUFFER_TOKEN и содержать маркер безопасности, полученный от клиента. Второй буфер должен иметь тип SECBUFFER_EMPTY.
fContextReq
Битовые флаги, указывающие атрибуты, необходимые серверу для установления контекста.
Полный список значений параметров см. в разделе AcceptSecurityContext: fContextReq .
TargetDataRep
Представление данных, например порядок байтов, в целевом объекте. Этот параметр может быть SECURITY_NATIVE_DREP или SECURITY_NETWORK_DREP.
phNewContext
Указатель на структуру CtxtHandle . При первом вызове SspiAcceptSecurityContextAsync этот указатель получает новый дескриптор контекста. При последующих вызовах phNewContext может совпадать с дескриптором, указанным в параметре phContext .
pOutput
Указатель на структуру SecBufferDesc , содержащую дескриптор выходного буфера. Этот буфер отправляется клиенту для ввода в дополнительные вызовы SspiInitializeSecurityContextAsync. Выходной буфер может быть создан, даже если функция возвращает SEC_E_OK. Любой созданный буфер должен быть отправлен обратно в клиентское приложение.
В выходных данных этот буфер получает маркер для контекста асинхронной безопасности. Маркер должен быть отправлен клиенту. Функция также может возвращать буфер типа SECBUFFER_EXTRA.
pfContextAttr
Указатель на набор битовых флагов, указывающих атрибуты установленного контекста.
Описание атрибутов см. в разделе AcceptSecurityContext: pfContextAttr .
ptsExpiry
Указатель на структуру TimeStamp , которая получает время истечения срока действия контекста.
См . раздел AcceptSecurityContext: ptsExpiry.
Возвращаемое значение
Возвращает SEC_E_OK , если асинхронный запрос на установление контекста безопасности был успешно поставлен в очередь для выполнения. В противном случае возвращается ошибка, созданная при попытке поместить ее в очередь. Чтобы получить состояние операции, используйте SspiGetAsyncCallStatus.
Если контекст безопасности, полученный от клиента, был принят, SspiGetAsyncCallStatus возвращает SEC_E_OK или один из кодов SSPI в таблице ниже. В противном случае он может вернуть SEC_I_ASYNC_CALL_PENDING , если вызов все еще выполняется, или любой из следующих кодов неустранимых ошибок во второй таблице ниже.
Код возврата |
Описание |
---|---|
SEC_E_INCOMPLETE_MESSAGE 0x80090318L |
Функция выполнена успешно. Данные во входном буфере являются неполными. Приложение должно считывать дополнительные данные из клиента и снова вызывать SspiAcceptSecurityContextAsync. |
SEC_I_COMPLETE_AND_CONTINUE 0x00090314L |
Функция выполнена успешно. Сервер должен вызвать CompleteAuthToken и передать выходной маркер клиенту. Затем сервер должен дождаться возвращаемого маркера от клиента, прежде чем выполнять еще один вызов SspiAcceptSecurityContextAsync. |
SEC_I_COMPLETE_NEEDED 0x00090313L |
Функция выполнена успешно. Сервер должен завершить сборку сообщения от клиента перед вызовом CompleteAuthToken. |
SEC_I_CONTINUE_NEEDED 0x00090312L |
Функция выполнена успешно. Сервер должен отправить выходной маркер клиенту и дождаться возвращенного маркера. Возвращаемый маркер должен быть передан в pInput для другого вызова SspiAcceptSecurityContextAsync. |
Коды неустранимой ошибки
Код возврата |
Описание |
---|---|
SEC_E_INSUFFICIENT_MEMORY 0x80090300L |
Сбой функции. Недостаточно памяти для выполнения запрошенного действия. |
SEC_E_INTERNAL_ERROR 0x80090304L |
Сбой функции. Произошла ошибка, не сопоставленная с кодом ошибки SSPI. |
SEC_E_INVALID_HANDLE 0x80100003L |
Сбой функции. Дескриптор, переданный функции, недопустим. |
SEC_E_INVALID_TOKEN 0x80090308L |
Сбой функции. Маркер, переданный в функцию, недопустим. |
SEC_E_LOGON_DENIED 0x8009030CL |
Сбой входа. |
SEC_E_NO_AUTHENTICATING_AUTHORITY 0x80090311L |
Сбой функции. Невозможно связаться с центром для проверки подлинности. Это может быть вызвано следующими условиями:
|
SEC_E_NO_CREDENTIALS 0x8009030EL |
Сбой функции. Дескриптор учетных данных, указанный в параметре phCredential, недопустим. |
SEC_E_UNSUPPORTED_FUNCTION 0x80090302L |
Сбой функции. Параметр fContextReq задает недопустимый флаг атрибута контекста (ASC_REQ_DELEGATE или ASC_REQ_PROMPT_FOR_CREDS). |
Комментарии
Функция SspiAcceptSecurityContextAsync является серверной функцией SspiInitializeSecurityContextAsync .
Вызывающий объект отвечает за определение достаточности атрибутов конечного контекста. Например, если была запрошена конфиденциальность (шифрование), но не удалось установить, некоторые приложения могут немедленно завершить подключение. Если не удается установить контекст безопасности, сервер должен освободить частично созданный контекст, вызвав функцию SspiDeleteSecurityContextAsync .
Дополнительные замечания см. в разделе AcceptSecurityContext .
Требования
Минимальная версия клиента | Windows 10 версии 1607 [только драйверы в режиме ядра] |
Минимальная версия сервера | Windows Server 2016 [только драйверы в режиме ядра] |
Верхняя часть | sspi.h |
См. также раздел
SspiAcquireCredentialsHandleAsync
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по