estrutura SEC_WINNT_AUTH_IDENTITY_EX2 (sspi.h)

Contém informações sobre uma identidade de autenticação. A estrutura SEC_WINNT_AUTH_IDENTITY_EX2 contém dados de autenticação fornecidos para a função AcquireCredentialsHandle .

Sintaxe

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;

Membros

Version

O número de versão da estrutura. Isso deve ser SEC_WINNT_AUTH_IDENTITY_VERSION_2.

cbHeaderLength

O tamanho, em bytes, do cabeçalho da estrutura.

cbStructureLength

Especifica o tamanho, em bytes, da estrutura.

UserOffset

O deslocamento do início da estrutura até o início da cadeia de caracteres de nome de usuário.

UserLength

O tamanho, em bytes, da cadeia de caracteres de nome de usuário.

DomainOffset

O deslocamento do início da estrutura até o início da cadeia de caracteres de nome de domínio.

Uma credencial de identidade deve conter o nome do provedor de identidade em vez do nome de domínio.

DomainLength

O tamanho, em bytes, da cadeia de caracteres de nome de domínio.

PackedCredentialsOffset

O deslocamento do início da estrutura até o início das credenciais empacotadas.

A credencial empacotada é uma estrutura SEC_WINNT_AUTH_PACKED_CREDENTIALS que contém um tipo de credencial que especifica exclusivamente o tipo de credencial.

PackedCredentialsLength

O tamanho, em bytes, da cadeia de caracteres de credenciais empacotadas.

Flags

Um sinalizador longo sem sinal que indica o tipo usado por pacotes de segurança negociáveis.

Valor Significado
SEC_WINNT_AUTH_IDENTITY_MARSHALLED
4 (0x4)
Todos os dados estão em um buffer.
SEC_WINNT_AUTH_IDENTITY_ONLY
8 (0x8)
Usado com o SSP (provedor de suporte de segurança) Kerberos. As credenciais são apenas para identidade. O pacote Kerberos é direcionado para não incluir dados de autorização no tíquete.
SEC_WINNT_AUTH_IDENTITY_ANSI
1 (0x1)
As credenciais estão no formato ANSI.
SEC_WINNT_AUTH_IDENTITY_UNICODE
2 (0x2)
As credenciais estão no formato Unicode.
SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER
524288 (0x80000)
Quando o tipo de credencial é password, a presença desse sinalizador especifica que a estrutura é uma credencial de ID online. Os membros DomainOffset e DomainLength correspondem ao nome do provedor de ID online.

Windows Server 2008 R2 e Windows 7: Não há suporte para esse sinalizador.

SEC_WINNT_AUTH_IDENTITY_FLAGS_PROCESS_ENCRYPTED
16 (0x10)
A estrutura é criptografada pela função SspiEncryptAuthIdentity ou pela função SspiEncryptAuthIdentityEx com a opção SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_PROCESS. Ele só pode ser descriptografado pelo mesmo processo.

Windows Server 2008 R2 e Windows 7: Não há suporte para esse sinalizador.

SEC_WINNT_AUTH_IDENTITY_FLAGS_SYSTEM_PROTECTED
32 (0x20)
A estrutura é criptografada pela função SspiEncryptAuthIdentityEx com a opção SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON no contexto de segurança SYSTEM. Ele só pode ser descriptografado por um thread em execução como SYSTEM.

Windows Server 2008 R2 e Windows 7: Não há suporte para esse sinalizador.

SEC_WINNT_AUTH_IDENTITY_FLAGS_USER_PROTECTED
64 (0x40)
A estrutura é criptografada pela função SspiEncryptAuthIdentityEx com a opção SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON em um contexto de segurança não SYSTEM. Ele só pode ser descriptografado por um thread em execução na mesma sessão de logon em que foi criptografado.

Windows Server 2008 R2 e Windows 7: Não há suporte para esse sinalizador.

SEC_WINNT_AUTH_IDENTITY_FLAGS_RESERVED
65536 (0x10000)
O buffer de identidade de autenticação é cbStructureLength + 8 bytes de preenchimento necessários para criptografia in-loco ou descriptografia da identidade.

PackageListOffset

O deslocamento do início da estrutura até o início da lista de pacotes com suporte.

PackageListLength

O tamanho, em bytes, da lista de pacotes com suporte.

Comentários

Esse buffer de identidade de autenticação pode ser retornado de várias APIs de credencial, por exemplo, o método GetSerialization e as funções CredUIPromptForWindowsCredential e SspiPromptForCredentials .

A estrutura descreve um cabeçalho do buffer de identidade de autenticação e os dados são acrescentados no final da estrutura. Embora o tamanho do buffer seja especificado pelo membro cbStructureLength , o tamanho real do buffer pode ser maior ou menor que cbStructureLength. Algumas funções, como SspiValidateAuthIdentity, levam um ponteiro, mas não o tamanho do buffer, para a estrutura de identidade como entrada. Como resultado, essas funções podem validar os dados do buffer interno, mas não podem verificar o tamanho do buffer. Isso pode resultar na leitura ou gravação de dados fora do intervalo de buffers. Para evitar estouros de buffer ao lidar com um buffer de identidade não confiável, os aplicativos devem chamar SspiUnmarshalAuthIdentity para obter um ponteiro para uma estrutura de identidade com um tamanho validado e, em seguida, passar esse ponteiro para as funções.

A estrutura SEC_WINNT_AUTH_IDENTITY_EX2 pode ser retornada por QueryContextAttributes(CredSSP) e consumida por AcquireCredentialsHandle(CredSSP), LsaLogonUser e outras interfaces do provedor de identidade.

SEC_WINNT_AUTH_PACKED_CREDENTIALS pode conter um tipo de credencial de senha, definido como SEC_WINNT_AUTH_DATA_TYPE_PASSWORD. Esse tipo de credencial descreve as credenciais de senha de um usuário de domínio, bem como outras identidades online. Os aplicativos devem definir _SEC_WINNT_AUTH_TYPES para compilar código que referencie esse tipo de credencial, bem como outras definições da estrutura SEC_WINNT_AUTH_PACKED_CREDENTIALS .

Os aplicativos não devem consultar nem definir o membro Flags diretamente. Use as funções SspiIsAuthIdentityEncrypted, SspiEncryptAuthIdentityEx e SspiDecryptAuthIdentityEx para gerenciar a criptografia e a descriptografia da estrutura SEC_WINNT_AUTH_IDENTITY_EX2 .

Os provedores de identidade devem marcar explicitamente ou definir SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER e os campos de nome de domínio para diferenciar a credencial de senha de uma senha de domínio e a senha de outro provedor de identidade.

A função CredPackAuthenticationBuffer pode ser chamada com a opção CRED_PACK_ID_PROVIDER_CREDENTIALS para criar uma estrutura SEC_WINNT_AUTH_IDENTITY_EX2 com os dados de autenticação de SEC_WINNT_AUTH_DATA_TYPE_PASSWORD tipo de credencial, um membro Flags que contém o valor SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER e um membro DomainOffset definido como o nome do provedor.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Cabeçalho sspi.h