Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция AcquireCredentialsHandle (CredSSP) получает дескриптор для предварительного выполнения учетных данных субъекта безопасности. Этот дескриптор требуется функциями InitializeSecurityContext (CredSSP) и AcceptSecurityContext (CredSSP ). Это могут быть либо существующие учетные данные, которые устанавливаются через системный вход, который не описан здесь, либо вызывающий может предоставить альтернативные учетные данные.
Примечание.
Это не "вход в сеть" и не подразумевает сбор учетных данных.
Синтаксис
SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandle(
_In_opt_ SEC_CHAR *pszPrincipal,
_In_ SEC_CHAR *pszPackage,
_In_ unsigned long fCredentialUse,
_In_opt_ void *pvLogonID,
_In_opt_ void *pAuthData,
_In_opt_ SEC_GET_KEY_FN pGetKeyFn,
_Reserved_ void *pvGetKeyArgument,
_Out_ PCredHandle phCredential,
_Out_opt_ PTimeStamp ptsExpiry
);
Параметры
pszPrincipal [in, необязательный]
Указатель на строку, завершающуюся значением NULL, которая указывает имя субъекта, учетные данные которого будут ссылаться на дескриптор.
Примечание.
Если процесс, запрашивающий дескриптор, не имеет доступа к учетным данным, функция возвращает ошибку. Строка NULL указывает, что процесс требует дескриптора учетных данных пользователя, в контексте безопасности которого он выполняется.
pszPackage [in]
Указатель на строку, завершающуюся значением NULL, которая указывает имя пакета безопасности, с которыми будут использоваться эти учетные данные. Это имя пакета безопасности, возвращаемое в элементе имени структуры SecPkgInfo , возвращаемой функцией ListeSecurityPackages . После установки контекста можно вызвать ЗапросContextAttributes (CredSSP) с параметром ulAttributeSECPKG_ATTR_PACKAGE_INFO для возврата сведений об используемом пакете безопасности.
fCredentialUse [in]
Флаг, указывающий, как будут использоваться эти учетные данные. Этот параметр может быть одним из следующих значений.
| Ценность | Значение |
|---|---|
|
SECPKG_CRED_INBOUND 0x1 |
Проверка учетных данных входящего сервера. Входящие учетные данные могут быть проверены с помощью центра проверки подлинности при вызове InitializeSecurityContext (CredSSP) или AcceptSecurityContext (CredSSP). Если такой центр недоступен, функция завершится ошибкой и возвратит SEC_E_NO_AUTHENTICATING_AUTHORITY. Проверка — это конкретный пакет |
|
SECPKG_CRED_OUTBOUND 0x0 |
Разрешить локальным учетным данным клиента подготовить исходящий маркер. |
pvLogonId [in, необязательный]
Указатель на локальный уникальный идентификатор (LUID), определяющий пользователя. Этот параметр предоставляется для процессов файловой системы, таких как сетевые перенаправления. Этот параметр может быть NULL.
pAuthData [in, необязательный]
Указатель на структуру CREDSSP_CRED , указывающую данные проверки подлинности для пакетов Schannel и Negotiate.
pGetKeyFn [in, необязательный]
Зарезервировано. Этот параметр не используется и должен иметь значение NULL.
pvGetKeyArgument [in, необязательный]
Зарезервировано. Этот параметр должен иметь значение NULL.
phCredential [out]
Указатель на структуру CredHandle , которая получит дескриптор учетных данных.
ptsExpiry [out, необязательный]
Указатель на структуру TimeStamp , которая получает время истечения срока действия возвращаемых учетных данных. Полученное значение структуры зависит от пакета безопасности, который должен указывать значение в локальном времени.
Возвращаемое значение
Если функция выполнена успешно, она возвращает SEC_E_OK.
Если функция завершается ошибкой, она возвращает один из следующих кодов ошибок.
| Код возврата | Описание |
|---|---|
| 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 | Учетные данные, предоставленные пакету, не распознаны. |
Замечания
Функция AcquireCredentialsHandle (CredSSP) возвращает дескриптор учетным данным субъекта, например пользователя или клиента, как используется определенным пакетом безопасности. Функция может вернуть дескриптор в предварительно созданные учетные данные или только что созданные учетные данные и вернуть его. Этот дескриптор можно использовать в последующих вызовах функций AcceptSecurityContext (CredSSP) и InitializeSecurityContext (CredSSP ).
Как правило, AcquireCredentialsHandle (CredSSP) не предоставляет учетные данные других пользователей, вошедшего на тот же компьютер. Однако вызывающий объект с правами SE_TCB_NAME может получить учетные данные существующего сеанса входа, указав идентификатор входа (LUID) этого сеанса. Как правило, это используется модулями в режиме ядра, которые должны действовать от имени пользователя, вошедшего в систему.
Пакет может вызвать функцию в pGetKeyFn , предоставляемую транспортом времени выполнения RPC. Если транспорт не поддерживает понятие обратного вызова для получения учетных данных, этот параметр должен иметь значение NULL.
Для вызывающих вызовов в режиме ядра необходимо отметить следующие различия:
- Два строковых параметра должны быть строками Юникода .
- Значения буфера должны быть выделены в виртуальной памяти процесса, а не из пула.
Завершив использование возвращаемых учетных данных, освободите память, используемую учетными данными, вызвав функцию FreeCredentialsHandle .
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows Vista [только классические приложения] |
| Минимальный поддерживаемый сервер | Windows Server 2008 [только классические приложения] |
| Заголовок | Sspi.h (include Security.h) |
| Библиотека | Secur32.lib |
| DLL | Secur32.dll |
| Имена Юникода и ANSI | AcquireCredentialsHandleW (Юникод) и AcquireCredentialsHandleA (ANSI) |