Share via


SEC_WINNT_AUTH_IDENTITY_EX2 structure (sspi.h)

Contient des informations sur une identité d’authentification. La structure SEC_WINNT_AUTH_IDENTITY_EX2 contient des données d’authentification fournies à la fonction AcquireCredentialsHandle .

Syntaxe

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;

Membres

Version

Numéro de version de la structure. Cela doit être SEC_WINNT_AUTH_IDENTITY_VERSION_2.

cbHeaderLength

Taille, en octets, de l’en-tête de structure.

cbStructureLength

Taille de la structure en octets.

UserOffset

Décalage entre le début de la structure et le début de la chaîne de nom d’utilisateur.

UserLength

Taille, en octets, de la chaîne de nom d’utilisateur.

DomainOffset

Décalage entre le début de la structure et le début de la chaîne de nom de domaine.

Les informations d’identification d’identité doivent contenir le nom du fournisseur d’identité au lieu du nom de domaine.

DomainLength

Taille, en octets, de la chaîne de nom de domaine.

PackedCredentialsOffset

Décalage entre le début de la structure et le début des informations d’identification packlées.

Les informations d’identification packées sont une structure SEC_WINNT_AUTH_PACKED_CREDENTIALS qui contient un type d’informations d’identification qui spécifie de manière unique le type d’informations d’identification.

PackedCredentialsLength

Taille, en octets, de la chaîne d’informations d’identification packée.

Flags

Indicateur long non signé qui indique le type utilisé par les packages de sécurité négociables.

Valeur Signification
SEC_WINNT_AUTH_IDENTITY_MARSHALLED
4 (0x4)
Toutes les données sont dans une mémoire tampon.
SEC_WINNT_AUTH_IDENTITY_ONLY
8 (0x8)
Utilisé avec le fournisseur de support de sécurité (SSP) Kerberos. Les informations d’identification sont réservées à l’identité. Le package Kerberos est dirigé pour ne pas inclure les données d’autorisation dans le ticket.
SEC_WINNT_AUTH_IDENTITY_ANSI
1 (0x1)
Les informations d’identification sont au format ANSI.
SEC_WINNT_AUTH_IDENTITY_UNICODE
2 (0x2)
Les informations d’identification sont au format Unicode.
SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER
524288 (0x80000)
Lorsque le type d’informations d’identification est mot de passe, la présence de cet indicateur spécifie que la structure est une information d’identification d’ID en ligne. Les membres DomainOffset et DomainLength correspondent au nom du fournisseur d’ID en ligne.

Windows Server 2008 R2 et Windows 7 : Cet indicateur n’est pas pris en charge.

SEC_WINNT_AUTH_IDENTITY_FLAGS_PROCESS_ENCRYPTED
16 (0x10)
La structure est chiffrée par la fonction SspiEncryptAuthIdentity ou par la fonction SspiEncryptAuthIdentityEx avec l’option SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_PROCESS. Il ne peut être déchiffré que par le même processus.

Windows Server 2008 R2 et Windows 7 : Cet indicateur n’est pas pris en charge.

SEC_WINNT_AUTH_IDENTITY_FLAGS_SYSTEM_PROTECTED
32 (0x20)
La structure est chiffrée par la fonction SspiEncryptAuthIdentityEx avec l’option SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON sous le contexte de sécurité SYSTEM. Il ne peut être déchiffré que par un thread s’exécutant en tant que SYSTEM.

Windows Server 2008 R2 et Windows 7 : Cet indicateur n’est pas pris en charge.

SEC_WINNT_AUTH_IDENTITY_FLAGS_USER_PROTECTED
64 (0x40)
La structure est chiffrée par la fonction SspiEncryptAuthIdentityEx avec l’option SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON dans un contexte de sécurité non-SYSTEM. Il ne peut être déchiffré que par un thread s’exécutant dans la même session d’ouverture de session dans laquelle il a été chiffré.

Windows Server 2008 R2 et Windows 7 : Cet indicateur n’est pas pris en charge.

SEC_WINNT_AUTH_IDENTITY_FLAGS_RESERVED
65536 (0x10000)
La mémoire tampon d’identité d’authentification est cbStructureLength + 8 octets de remplissage nécessaires au chiffrement sur place ou au déchiffrement de l’identité.

PackageListOffset

Décalage entre le début de la structure et le début de la liste des packages pris en charge.

PackageListLength

Taille, en octets, de la liste des packages pris en charge.

Remarques

Cette mémoire tampon d’identité d’authentification peut être retournée à partir de plusieurs API d’informations d’identification, par exemple, la méthode GetSerialization et les fonctions CredUIPromptForWindowsCredential et SspiPromptForCredentials .

La structure décrit un en-tête de la mémoire tampon d’identité d’authentification et les données sont ajoutées à la fin de la structure. Bien que la taille de la mémoire tampon soit spécifiée par le membre cbStructureLength , la taille réelle de la mémoire tampon peut être supérieure ou inférieure à cbStructureLength. Certaines fonctions, telles que SspiValidateAuthIdentity, prennent un pointeur, mais pas la taille de la mémoire tampon, vers la structure d’identité comme entrée. Par conséquent, ces fonctions peuvent valider les données de mémoire tampon interne, mais ne peuvent pas vérifier la taille de la mémoire tampon. Cela peut entraîner la lecture ou l’écriture de données en dehors de la plage de mémoires tampons. Pour éviter les dépassements de mémoire tampon lors de la gestion d’une mémoire tampon d’identité non approuvée, les applications doivent appeler SspiUnmarshalAuthIdentity pour obtenir un pointeur vers une structure d’identité avec une taille validée, puis passer ce pointeur aux fonctions.

La structure SEC_WINNT_AUTH_IDENTITY_EX2 peut être retournée par QueryContextAttributes(CredSSP) et consommée par AcquireCredentialsHandle(CredSSP), LsaLogonUser et d’autres interfaces de fournisseur d’identité.

SEC_WINNT_AUTH_PACKED_CREDENTIALS peut contenir un type d’informations d’identification de mot de passe, défini comme SEC_WINNT_AUTH_DATA_TYPE_PASSWORD. Ce type d’informations d’identification décrit les informations d’identification du mot de passe d’un utilisateur de domaine, ainsi que d’autres identités en ligne. Les applications doivent définir _SEC_WINNT_AUTH_TYPES pour compiler le code qui fait référence à ce type d’informations d’identification ainsi que d’autres définitions de la structure SEC_WINNT_AUTH_PACKED_CREDENTIALS .

Les applications ne doivent pas interroger ou définir directement le membre Flags . Utilisez les fonctions SspiIsAuthIdentityEncrypted, SspiEncryptAuthIdentityEx et SspiDecryptAuthIdentityEx pour gérer le chiffrement et le déchiffrement de la structure SEC_WINNT_AUTH_IDENTITY_EX2 .

Les fournisseurs d’identité doivent explicitement case activée ou définir SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER et les champs nom de domaine pour différencier leurs informations d’identification de mot de passe d’un mot de passe de domaine et du mot de passe d’un autre fournisseur d’identité.

La fonction CredPackAuthenticationBuffer peut être appelée avec l’option CRED_PACK_ID_PROVIDER_CREDENTIALS pour créer une structure de SEC_WINNT_AUTH_IDENTITY_EX2 avec les données d’authentification de SEC_WINNT_AUTH_DATA_TYPE_PASSWORD type d’informations d’identification, un membre Flags qui contient la valeur SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER et un membre DomainOffset défini sur le nom du fournisseur.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
En-tête sspi.h