Partager via


structure SEC_WINNT_AUTH_IDENTITY_EX2 (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, en octets, de la structure.

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 packé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ées.

Flags

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

Valeur Signification
SEC_WINNT_AUTH_IDENTITY_MARSHALLED
4 (0x4)
Toutes les données se situent dans une mémoire tampon.
SEC_WINNT_AUTH_IDENTITY_ONLY
8 (0x8)
Utilisé avec le fournisseur de support de sécuritéKerberos (SSP). Les informations d’identification concernent uniquement 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 sous forme 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 un mot de passe, la présence de cet indicateur spécifie que la structure est des informations 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 sous un contexte de sécurité non-SYSTEM. Il peut uniquement être déchiffré 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 pour le chiffrement ou le déchiffrement sur place 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), LsaLogonUseret 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 de 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 du code qui 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 les indicateurs de membre. Utilisez les SspiIsAuthIdentityEncrypted, SspiEncryptAuthIdentityExet fonctions SspiDecryptAuthIdentityEx pour gérer le chiffrement et le déchiffrement de la structure SEC_WINNT_AUTH_IDENTITY_EX2.

Les fournisseurs d’identité doivent vérifier ou définir explicitement SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER et les champs de 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 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 Indicateurs qui contient la valeur SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER, et un membre DomainOff set défini sur le nom du fournisseur.

Exigences

Exigence Valeur
client minimum pris en charge Windows 7 [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
d’en-tête sspi.h