Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция AcquireCredentialsHandle (Negotiate) получает дескриптор для предварительного получения учетных данных субъекта безопасности. Этот дескриптор требуется функциями InitializeSecurityContext (Negotiate) и AcceptSecurityContext (Negotiate). Это могут быть либо существующие учетные данные, которые устанавливаются через системный вход, который не описан здесь, либо вызывающий может предоставить альтернативные учетные данные.
Примечание.
Это не "вход в сеть" и не подразумевает сбор учетных данных.
Синтаксис
SECURITY_STATUS SEC_Entry AcquireCredentialsHandle(
_In_ SEC_CHAR *pszPrincipal,
_In_ SEC_CHAR *pszPackage,
_In_ ULONG fCredentialUse,
_In_ PLUID pvLogonID,
_In_ PVOID pAuthData,
_In_ SEC_GET_KEY_FN pGetKeyFn,
_In_ PVOID pvGetKeyArgument,
_Out_ PCredHandle phCredential,
_Out_ PTimeStamp ptsExpiry
);
Параметры
-
pszPrincipal [in]
-
Указатель на строку, завершающуюся значением NULL, которая указывает имя субъекта, учетные данные которого будут ссылаться на дескриптор.
Примечание.
Если процесс, запрашивающий дескриптор, не имеет доступа к учетным данным, функция возвращает ошибку. Строка NULL указывает, что процесс требует дескриптора учетных данных пользователя, в контексте безопасности которого он выполняется.
-
pszPackage [in]
-
Указатель на строку, завершающуюся значением NULL, которая указывает имя пакета безопасности , с которыми будут использоваться эти учетные данные. Это имя пакета безопасности , возвращаемое в элементе имени структуры SecPkgInfo , возвращаемой функцией ListeSecurityPackages . После установки контекста запросContextAttributes (согласование) можно вызвать с помощью ulAttribute , установленного для SECPKG_ATTR_PACKAGE_INFO для возврата сведений об используемом пакете безопасности .
Чтобы успешно вызвать эту функцию с помощью SSP "Согласование", задайте для этого параметра значение "Согласование".
-
fCredentialUse [in]
-
Флаг, указывающий, как будут использоваться эти учетные данные. Этот параметр может быть одним из следующих значений.
Ценность Значение - SECPKG_CRED_AUTOLOGON_RESTRICTED
- 0x00000010
Безопасность не использует учетные данные входа по умолчанию или учетные данные из Диспетчера учетных данных.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: это значение не поддерживается.- SECPKG_CRED_BOTH
Проверьте входящие учетные данные или используйте локальные учетные данные для подготовки исходящего маркера. Этот флаг включает оба других флага. - SECPKG_CRED_INBOUND
Проверка учетных данных входящего сервера. Входящие учетные данные могут быть проверены с помощью центра проверки подлинности при вызове InitializeSecurityContext (Negotiate) или AcceptSecurityContext (Negotiate). Если такой центр недоступен, функция завершится ошибкой и возвратит SEC_E_NO_AUTHENTICATING_AUTHORITY. Проверка зависит от пакета. - SECPKG_CRED_OUTBOUND
Разрешить локальным учетным данным клиента подготовить исходящий маркер. - SECPKG_CRED_PROCESS_POLICY_ONLY
- 0x00000020
Функция обрабатывает политику сервера и возвращает SEC_E_NO_CREDENTIALS, указывая, что приложение должно запрашивать учетные данные.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: это значение не поддерживается. -
pvLogonID [in]
-
Указатель на локальный уникальный идентификатор (LUID), определяющий пользователя. Этот параметр предоставляется для процессов файловой системы, таких как сетевые перенаправления. Этот параметр может быть NULL.
-
pAuthData [in]
-
Указатель на данные, относящиеся к пакету. Этот параметр может иметь значение NULL, указывающее, что учетные данные по умолчанию для этого пакета безопасности должны использоваться. Чтобы использовать предоставленные учетные данные, передайте структуру PSEC_WINNT_AUTH_IDENTITY_OPAQUE , возвращенную из предыдущего вызова функции SspiPromptForCredentials .
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Тип PSEC_WINNT_AUTH_IDENTITY_OPAQUE и функция SspiPromptForCredentials не поддерживаются. Чтобы использовать предоставленные учетные данные, передайте указатель на SEC_WINNT_AUTH_IDENTITY или SEC_WINNT_AUTH_IDENTITY_EX структуру, содержащую эти учетные данные.
Время выполнения RPC передает все, что было предоставлено в RpcBindingSetAuthInfo.
При использовании пакета "Согласование" максимальная длина символов для имени пользователя, пароля и домена составляет 256, 256 и 15 соответственно.
-
pGetKeyFn [in]
-
Этот параметр не используется и должен иметь значение NULL.
-
pvGetKeyArgument [in]
-
Этот параметр не используется и должен иметь значение NULL.
-
phCredential [out]
-
Указатель на структуру CredHandle для получения дескриптора учетных данных.
-
ptsExpiry [out]
-
Указатель на структуру TimeStamp , которая получает время истечения срока действия возвращаемых учетных данных. Значение, возвращаемое в этой структуре TimeStamp , зависит от ограниченного делегирования. Пакет безопасности должен возвращать это значение в локальное время.
Возвращаемое значение
Если функция выполнена успешно, функция возвращает SEC_E_OK.
Если функция завершается ошибкой, она возвращает один из следующих кодов ошибок.
| Код возврата | Описание |
|---|---|
|
Для выполнения запрошенного действия недостаточно памяти. |
|
Произошла ошибка, которая не сопоставлялась с кодом ошибки SSPI. |
|
Учетные данные недоступны в ограниченном делегировании. |
|
Вызывающий объект функции не имеет необходимых учетных данных. |
|
Запрошенный пакет безопасности не существует. |
|
Учетные данные, предоставленные пакету, не распознаны. |
Замечания
Функция AcquireCredentialsHandle (Согласование) возвращает дескриптор учетным данным субъекта, например пользователя или клиента, как используется определенным ограниченным делегированием. Это может быть дескриптор для предварительного выполнения учетных данных, или функция может создать новый набор учетных данных и вернуть его. Этот дескриптор можно использовать в последующих вызовах функций AcceptSecurityContext (Negotiate) и InitializeSecurityContext (Negotiate).
Как правило, AcquireCredentialsHandle (Согласование) не позволяет процессу получать дескриптор учетных данных других пользователей, вошедшего на тот же компьютер. Однако вызывающий объект с правами SE_TCB_NAME имеет возможность указать идентификатор входа (LUID) любого существующего маркера сеанса входа, чтобы получить дескриптор учетных данных этого сеанса. Как правило, это используется модулями в режиме ядра, которые должны действовать от имени пользователя, вошедшего в систему.
Пакет может вызвать функцию в pGetKeyFn , предоставляемую транспортом времени выполнения RPC. Если транспорт не поддерживает понятие обратного вызова для получения учетных данных, этот параметр должен иметь значение NULL.
Для вызывающих вызовов в режиме ядра необходимо отметить следующие различия:
- Два строковых параметра должны быть строками Юникода .
- Значения буфера должны быть выделены в виртуальной памяти процесса, а не из пула.
Завершив использование возвращаемых учетных данных, освободите память, используемую учетными данными, вызвав функцию FreeCredentialsHandle .
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент |
Windows XP [только классические приложения] |
| Минимальный поддерживаемый сервер |
Windows Server 2003 [только классические приложения] |
| Заголовок |
|
| Библиотека |
|
| DLL |
|
| Имена Юникода и ANSI |
AcquireCredentialsHandleW (Юникод) и AcquireCredentialsHandleA (ANSI) |
См. также