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

O tamanho, em bytes, da estrutura.

UserOffset

O deslocamento do início da estrutura para 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 para 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 de 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 provedor de suporte de segurançaKerberos (SSP). As credenciais são somente 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 formulário Unicode.
SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER
524288 (0x80000)
Quando o tipo de credencial é senha, 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 na qual 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.

Observações

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

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 internos do buffer, 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 sobrecargas 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 pelo QueryContextAttributes(CredSSP) e consumida por AcquireCredentialsHandle(CredSSP), LsaLogonUsere 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 o código que faz referência a esse tipo de credencial, bem como a outras definições da estrutura SEC_WINNT_AUTH_PACKED_CREDENTIALS.

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

Os provedores de identidade devem verificar ou definir explicitamente 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 do tipo de credencial SEC_WINNT_AUTH_DATA_TYPE_PASSWORD, um membro sinalizadores 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
de cliente com suporte mínimo Windows 7 [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2008 R2 [somente aplicativos da área de trabalho]
cabeçalho sspi.h