Функция SspiAcquireCredentialsHandleAsyncA (sspi.h)
Функция SspiAcquireCredentialsHandleAsyncA асинхронно получает дескриптор для ранее существовающих учетных данныхсубъекта безопасности.
Этот дескриптор требуется для функций SspiInitializeSecurityContextAsync и SspiAcceptSecurityContextAsync . Это могут быть либо существующие учетные данные, которые устанавливаются с помощью системного входа, который не описан здесь, либо вызывающий объект может предоставить альтернативные учетные данные.
Примечание
Эта функция служит асинхронным аналогом AcquireCredentialsHandle.
Синтаксис
SECURITY_STATUS SspiAcquireCredentialsHandleAsyncA(
SspiAsyncContext *AsyncContext,
LPSTR pszPrincipal,
LPSTR pszPackage,
unsigned long fCredentialUse,
void *pvLogonId,
void *pAuthData,
SEC_GET_KEY_FN pGetKeyFn,
void *pvGetKeyArgument,
PCredHandle phCredential,
PTimeStamp ptsExpiry
);
Параметры
AsyncContext
Контекст асинхронного вызова.
pszPrincipal
Указатель на строку, завершающуюся значением NULL, которая указывает имя участника, учетные данные которого дескриптор будет ссылаться асинхронно.
pszPackage
Указатель на строку, завершающуюся нулевым значением, которая указывает имя пакета безопасности , с которым будут использоваться эти учетные данные.
См . Раздел AcquireCredentialsHandleA: pszPackage
fCredentialUse
Флаг, указывающий, как будут использоваться эти учетные данные. Этот параметр может иметь одно из следующих значений:
Значение |
Значение |
---|---|
SECPKG_CRED_INBOUND | Проверка учетных данных входящего сервера. Входящие учетные данные могут проверяться с помощью центра проверки подлинности при вызове SspiInitializeSecurityContextAsync или SspiAcceptSecurityContextAsync . Если такой центр недоступен, функция завершится ошибкой и возвратит SEC_E_NO_AUTHENTICATING_AUTHORITY. Проверка зависит от пакета. |
SECPKG_CRED_OUTBOUND | Разрешить учетным данным локального клиента подготовить исходящий маркер. |
pvLogonId
Указатель на локально уникальный идентификатор (LUID), который идентифицирует пользователя. Этот параметр предоставляется для процессов файловой системы, таких как перенаправление сети. Этот параметр может принимать значение NULL.
pAuthData
Указатель на структуру CREDSSP_CRED , которая задает данные проверки подлинности для пакетов Schannel и Negotiate.
pGetKeyFn
Указатель на функцию GetKey().
pvGetKeyArgument
Передайте в GetKey().
phCredential
Указатель на структуру CredHandle , которая получит дескриптор учетных данных.
ptsExpiry
Дополнительные Указатель на структуру TimeStamp , которая получает время истечения срока действия возвращенных учетных данных. Полученное значение структуры зависит от пакета безопасности, который должен указывать значение по местному времени.
Возвращаемое значение
Возвращает SEC_E_OK , если асинхронный запрос на получение дескриптора учетных данных был успешно поставлен в очередь для выполнения. В противном случае возвращается ошибка, созданная при попытке поместить ее в очередь. Чтобы получить состояние операции, используйте SspiGetAsyncCallStatus.
Если дескриптор был получен, SspiGetAsyncCallStatus возвращает SEC_E_OK. В противном случае он может вернуть SEC_I_ASYNC_CALL_PENDING , если вызов все еще выполняется, или любой из следующих кодов неустранимых ошибок в таблице ниже.
Код возврата |
Описание |
---|---|
SEC_E_INSUFFICIENT_MEMORY | Недостаточно памяти для выполнения запрошенного действия. |
SEC_E_INTERNAL_ERROR | Произошла ошибка, не сопоставленная с кодом ошибки SSPI. |
SEC_E_NO_CREDENTIALS | В пакете безопасности отсутствуют учетные данные |
SEC_E_NOT_OWNER | Вызывающий объект функции не имеет необходимых учетных данных. |
SEC_E_SECPKG_NOT_FOUND | Запрошенный пакет безопасности не существует. |
SEC_E_UNKNOWN_CREDENTIALS | Учетные данные, предоставленные пакету, не распознаны. |
Комментарии
Функция SspiAcquireCredentialsHandleAsyncA возвращает дескриптор учетных данных участника, например пользователя или клиента, используемых определенным пакетом безопасности. Функция может возвращать дескриптор для ранее существовающих учетных данных или вновь созданных учетных данных и возвращать его. Этот дескриптор можно использовать в последующих вызовах функций SspiAcceptSecurityContextAsync и SspiInitializeSecurityContextAsync .
Как правило, SspiAcquireCredentialsHandleAsyncA не предоставляет учетные данные других пользователей, выполнившего вход на тот же компьютер. Однако вызывающий объект с привилегией SE_TCB_NAME может получить учетные данные существующего сеанса входа, указав идентификатор входа (LUID) этого сеанса. Как правило, это используется модулями в режиме ядра, которые должны действовать от имени пользователя, выполнившего вход.
Пакет может вызывать функцию в pGetKeyFn , предоставляемую транспортом времени выполнения RPC. Если транспорт не поддерживает понятие обратного вызова для получения учетных данных, этот параметр должен иметь значение NULL.
Для вызывающих объектов режима ядра необходимо отметить следующие различия:
- Два строковых параметра должны быть строками Юникода .
- Значения буфера должны быть выделены в виртуальной памяти процесса, а не из пула.
Завершив использование возвращенных учетных данных, освободите память, используемую учетными данными, вызвав функцию SspiFreeCredentialsHandleAsync .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 версии 1607 [только драйверы в режиме ядра] |
Минимальная версия сервера | Windows Server 2016 [только драйверы в режиме ядра] |
Верхняя часть | sspi.h |
См. также раздел
SspiAcceptSecurityContextAsync
SspiFreeCredentialsHandleAsync