структура SEC_WINNT_AUTH_IDENTITY_EX2 (sspi.h)

Содержит сведения об удостоверении проверки подлинности. Структура SEC_WINNT_AUTH_IDENTITY_EX2 содержит данные проверки подлинности, предоставляемые функции AcquireCredentialsHandle .

Синтаксис

typedef struct _SEC_WINNT_AUTH_IDENTITY_EX2 {
  unsigned long  Version;
  unsigned short cbHeaderLength;
  unsigned long  cbStructureLength;
  unsigned long  UserOffset;
  unsigned short UserLength;
  unsigned long  DomainOffset;
  unsigned short DomainLength;
  unsigned long  PackedCredentialsOffset;
  unsigned short PackedCredentialsLength;
  unsigned long  Flags;
  unsigned long  PackageListOffset;
  unsigned short PackageListLength;
} SEC_WINNT_AUTH_IDENTITY_EX2, *PSEC_WINNT_AUTH_IDENTITY_EX2;

Члены

Version

Номер версии структуры. Это должно быть SEC_WINNT_AUTH_IDENTITY_VERSION_2.

cbHeaderLength

Размер заголовка структуры (в байтах).

cbStructureLength

Размер структуры (в байтах).

UserOffset

Смещение от начала структуры к началу строки имени пользователя.

UserLength

Размер строки имени пользователя (в байтах).

DomainOffset

Смещение от начала структуры до начала строки доменного имени.

Учетные данные удостоверения должны содержать имя поставщика удостоверений, а не доменное имя.

DomainLength

Размер строки доменного имени в байтах.

PackedCredentialsOffset

Смещение от начала структуры до начала упакованных учетных данных.

Упакованные учетные данные — это структура SEC_WINNT_AUTH_PACKED_CREDENTIALS , содержащая тип учетных данных, который однозначно указывает тип учетных данных.

PackedCredentialsLength

Размер строки упакованных учетных данных (в байтах).

Flags

Длинный флаг без знака, указывающий тип, используемый оборотными пакетами безопасности.

Значение Значение
SEC_WINNT_AUTH_IDENTITY_MARSHALLED
4 (0x4)
Все данные находится в одном буфере.
SEC_WINNT_AUTH_IDENTITY_ONLY
8 (0x8)
Используется с поставщиком поддержки безопасностиKerberos (SSP). Учетные данные предназначены только для удостоверения. Пакет Kerberos направлен на то, чтобы не включать данные авторизации в билет.
SEC_WINNT_AUTH_IDENTITY_ANSI
1 (0x1)
Учетные данные находятся в форме ANSI.
SEC_WINNT_AUTH_IDENTITY_UNICODE
2 (0x2)
Учетные данные находятся в формате Юникода.
SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER
524288 (0x80000)
Если тип учетных данных — пароль, наличие этого флага указывает, что структура является учетными данными сетевого идентификатора. Члены DomainOffset и DomainLength соответствуют имени поставщика сетевых идентификаторов.

Windows Server 2008 R2 и Windows 7: Этот флаг не поддерживается.

SEC_WINNT_AUTH_IDENTITY_FLAGS_PROCESS_ENCRYPTED
16 (0x10)
Структура шифруется функцией SspiEncryptAuthIdentity или функцией SspiEncryptAuthIdentityEx с параметром SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_PROCESS. Он может быть расшифрован только тем же процессом.

Windows Server 2008 R2 и Windows 7: Этот флаг не поддерживается.

SEC_WINNT_AUTH_IDENTITY_FLAGS_SYSTEM_PROTECTED
32 (0x20)
Структура шифруется функцией SspiEncryptAuthIdentityEx с параметром SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON в контексте безопасности SYSTEM. Он может быть расшифрован только потоком, работающим под управлением SYSTEM.

Windows Server 2008 R2 и Windows 7: Этот флаг не поддерживается.

SEC_WINNT_AUTH_IDENTITY_FLAGS_USER_PROTECTED
64 (0x40)
Структура шифруется функцией SspiEncryptAuthIdentityEx с параметром SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON в контексте безопасности, отличном от SYSTEM. Он может быть расшифрован только потоком, запущенным в том же сеансе входа, в котором он был зашифрован.

Windows Server 2008 R2 и Windows 7: Этот флаг не поддерживается.

SEC_WINNT_AUTH_IDENTITY_FLAGS_RESERVED
65536 (0x10000)
Буфер удостоверения проверки подлинности — cbStructureLength + 8 байт заполнения, необходимых для шифрования на месте или расшифровки удостоверения.

PackageListOffset

Смещение от начала структуры к началу списка поддерживаемых пакетов.

PackageListLength

Размер списка поддерживаемых пакетов (в байтах).

Комментарии

Этот буфер удостоверений проверки подлинности можно вернуть из нескольких API учетных данных, например метода GetSerialization и функций CredUIPromptForWindowsCredential и SspiPromptForCredentials .

Структура описывает заголовок буфера удостоверения проверки подлинности, а данные добавляются в конце структуры. Хотя размер буфера определяется элементом cbStructureLength , фактический размер буфера может быть больше или меньше , чем cbStructureLength. Некоторые функции, например SspiValidateAuthIdentity, принимают в качестве входных данных указатель, но не размер буфера. В результате эти функции могут проверять данные внутреннего буфера, но не могут проверить размер буфера. Это может привести к чтению или записи данных за пределами буферного диапазона. Чтобы избежать переполнения буфера при обработке буфера ненадежных удостоверений, приложения должны вызывать SspiUnmarshalAuthIdentity , чтобы получить указатель на структуру удостоверения с проверенным размером, а затем передать этот указатель в функции.

Структура SEC_WINNT_AUTH_IDENTITY_EX2 может быть возвращена QueryContextAttributes(CredSSP) и использована AcquireCredentialsHandle(CredSSP),LsaLogonUser и другими интерфейсами поставщика удостоверений.

SEC_WINNT_AUTH_PACKED_CREDENTIALS может содержать тип учетных данных пароля, определенный как SEC_WINNT_AUTH_DATA_TYPE_PASSWORD. Этот тип учетных данных описывает учетные данные пароля пользователя домена, а также другие сетевые удостоверения. Приложения должны определять _SEC_WINNT_AUTH_TYPES для компиляции кода, который ссылается на этот тип учетных данных, а также другие определения структуры SEC_WINNT_AUTH_PACKED_CREDENTIALS .

Приложения не должны запрашивать или задавать член Flags напрямую. Используйте функции SspiIsAuthIdentityEncrypted, SspiEncryptAuthIdentityEx и SspiDecryptAuthIdentityEx для управления шифрованием и расшифровкой структуры SEC_WINNT_AUTH_IDENTITY_EX2 .

Поставщики удостоверений должны явно проверка или задать SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER и поля доменного имени, чтобы отличить свои учетные данные пароля от пароля домена и пароля другого поставщика удостоверений.

Функцию CredPackAuthenticationBuffer можно вызвать с параметром CRED_PACK_ID_PROVIDER_CREDENTIALS для создания структуры SEC_WINNT_AUTH_IDENTITY_EX2 с данными проверки подлинности SEC_WINNT_AUTH_DATA_TYPE_PASSWORD типа учетных данных, элементом Flags , содержащим значение SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER, и членом DomainOffset с именем поставщика.

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Верхняя часть sspi.h