Поделиться через


структура 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)
Используется с поставщиком поддержки безопасности KerberosKerberos (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 и DomainLeng th соответствуют имени поставщика идентификаторов в Сети.

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 в контексте безопасности, отличном от СИСТЕМЫ. Его можно расшифровать только потоком, работающим в том же сеансе входа, в котором он был зашифрован.

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.

Приложения не должны напрямую запрашивать или задавать флаги . Используйте 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, Флаги, содержащий значение SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER, и член DomainOffset, заданный для имени поставщика.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 7 [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2008 R2 [только классические приложения]
заголовка sspi.h