struttura SEC_WINNT_AUTH_IDENTITY_EX2 (sspi.h)

Contiene informazioni su un'identità di autenticazione. La struttura SEC_WINNT_AUTH_IDENTITY_EX2 contiene i dati di autenticazione forniti alla funzione AcquireCredentialsHandle .

Sintassi

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;

Members

Version

Numero di versione della struttura. Deve essere SEC_WINNT_AUTH_IDENTITY_VERSION_2.

cbHeaderLength

Dimensione, in byte, dell'intestazione della struttura.

cbStructureLength

Dimensione, in byte, della struttura.

UserOffset

Offset dall'inizio della struttura all'inizio della stringa del nome utente.

UserLength

Dimensione, in byte, della stringa del nome utente.

DomainOffset

Offset dall'inizio della struttura all'inizio della stringa del nome di dominio.

Una credenziale di identità deve contenere il nome del provider di identità anziché il nome di dominio.

DomainLength

Dimensione, in byte, della stringa del nome di dominio.

PackedCredentialsOffset

Offset dall'inizio della struttura all'inizio delle credenziali compresse.

La credenziale compressa è una struttura SEC_WINNT_AUTH_PACKED_CREDENTIALS che contiene un tipo di credenziale che specifica in modo univoco il tipo di credenziale.

PackedCredentialsLength

Dimensione, in byte, della stringa di credenziali compressa.

Flags

Flag long senza segno che indica il tipo utilizzato dai pacchetti di sicurezza negoziabili.

Valore Significato
SEC_WINNT_AUTH_IDENTITY_MARSHALLED
4 (0x4)
Tutti i dati si trovano in un unico buffer.
SEC_WINNT_AUTH_IDENTITY_ONLY
8 (0x8)
Usato con il provider di supporto per la sicurezzaKerberos( SSP). Le credenziali sono solo per identità. Il pacchetto Kerberos viene indirizzato a non includere i dati di autorizzazione nel ticket.
SEC_WINNT_AUTH_IDENTITY_ANSI
1 (0x1)
Le credenziali sono in formato ANSI.
SEC_WINNT_AUTH_IDENTITY_UNICODE
2 (0x2)
Le credenziali sono in formato Unicode.
SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER
524288 (0x80000)
Quando il tipo di credenziale è password, la presenza di questo flag specifica che la struttura è una credenziale ID online. I membri DomainOffset e DomainLength corrispondono al nome del provider ID online.

Windows Server 2008 R2 e Windows 7: Questo flag non è supportato.

SEC_WINNT_AUTH_IDENTITY_FLAGS_PROCESS_ENCRYPTED
16 (0x10)
La struttura viene crittografata dalla funzione SspiEncryptAuthIdentity o dalla funzione SspiEncryptAuthIdentityEx con l'opzione SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_PROCESS. Può essere decrittografata solo dallo stesso processo.

Windows Server 2008 R2 e Windows 7: Questo flag non è supportato.

SEC_WINNT_AUTH_IDENTITY_FLAGS_SYSTEM_PROTECTED
32 (0x20)
La struttura viene crittografata dalla funzione SspiEncryptAuthIdentityEx con l'opzione SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON nel contesto di sicurezza SYSTEM. Può essere decrittografata solo da un thread in esecuzione come SYSTEM.

Windows Server 2008 R2 e Windows 7: Questo flag non è supportato.

SEC_WINNT_AUTH_IDENTITY_FLAGS_USER_PROTECTED
64 (0x40)
La struttura viene crittografata dalla funzione SspiEncryptAuthIdentityEx con l'opzione SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON in un contesto di sicurezza non SYSTEM. Può essere decrittografato solo da un thread in esecuzione nella stessa sessione di accesso in cui è stato crittografato.

Windows Server 2008 R2 e Windows 7: Questo flag non è supportato.

SEC_WINNT_AUTH_IDENTITY_FLAGS_RESERVED
65536 (0x10000)
Il buffer di identità di autenticazione è cbStructureLength + 8 byte di riempimento necessari per la crittografia sul posto o la decrittografia dell'identità.

PackageListOffset

Offset dall'inizio della struttura all'inizio dell'elenco dei pacchetti supportati.

PackageListLength

Dimensioni, in byte, dell'elenco di pacchetti supportato.

Commenti

Questo buffer di identità di autenticazione può essere restituito da diverse API delle credenziali, ad esempio il metodo GetSerialization e le funzioni CredUIPromptForWindowsCredential e SspiPromptForCredentials .

La struttura descrive un'intestazione del buffer di identità di autenticazione e i dati vengono accodati alla fine della struttura. Anche se le dimensioni del buffer sono specificate dal membro cbStructureLength , le dimensioni effettive del buffer possono essere maggiori o inferiori a cbStructureLength. Alcune funzioni, ad esempio SspiValidateAuthIdentity, accettano un puntatore, ma non la dimensione del buffer, alla struttura di identità come input. Di conseguenza, tali funzioni possono convalidare i dati interni del buffer, ma non possono verificare le dimensioni del buffer. Ciò può comportare la lettura o la scrittura di dati all'esterno dell'intervallo di buffer. Per evitare sovraccarichi del buffer quando si gestisce un buffer di identità non attendibile, le applicazioni devono chiamare SspiUnmarshalAuthIdentity per ottenere un puntatore a una struttura di identità con una dimensione convalidata e quindi passare tale puntatore alle funzioni.

La struttura SEC_WINNT_AUTH_IDENTITY_EX2 può essere restituita da QueryContextAttributes(CredSSP) e utilizzata da AcquireCredentialsHandle(CredSSP), LsaLogonUser e altre interfacce del provider di identità.

SEC_WINNT_AUTH_PACKED_CREDENTIALS può contenere un tipo di credenziale password, definito come SEC_WINNT_AUTH_DATA_TYPE_PASSWORD. Questo tipo di credenziale descrive le credenziali password di un utente di dominio e altre identità online. Le applicazioni devono definire _SEC_WINNT_AUTH_TYPES per compilare il codice che fa riferimento a questo tipo di credenziale e ad altre definizioni della struttura SEC_WINNT_AUTH_PACKED_CREDENTIALS .

Le applicazioni non devono eseguire query o impostare direttamente il membro Flags . Usare le funzioni SspiIsAuthIdentityEncrypted, SspiEncryptAuthIdentityEx e SspiDecryptAuthIdentityEx per gestire la crittografia e la decrittografia della struttura SEC_WINNT_AUTH_IDENTITY_EX2 .

I provider di identità devono controllare o impostare in modo esplicito SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER e i campi dei nomi di dominio per distinguere le credenziali delle password da una password di dominio e da una password di un altro provider di identità.

La funzione CredPackAuthenticationBuffer può essere chiamata con l'opzione CRED_PACK_ID_PROVIDER_CREDENTIALS per creare una struttura di SEC_WINNT_AUTH_IDENTITY_EX2 con i dati di autenticazione di SEC_WINNT_AUTH_DATA_TYPE_PASSWORD tipo di credenziale, un membro Flags che contiene il valore SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER e un membro DomainOffset impostato sul nome del provider.

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Intestazione sspi.h