estructura SEC_WINNT_AUTH_IDENTITY_EX2 (sspi.h)

Contiene información sobre una identidad de autenticación. La estructura SEC_WINNT_AUTH_IDENTITY_EX2 contiene datos de autenticación que se proporcionan a la función AcquireCredentialsHandle .

Sintaxis

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;

Miembros

Version

Número de versión de la estructura. Debe ser SEC_WINNT_AUTH_IDENTITY_VERSION_2.

cbHeaderLength

Tamaño, en bytes, del encabezado de estructura.

cbStructureLength

Tamaño, en bytes, de la estructura.

UserOffset

Desplazamiento desde el principio de la estructura hasta el principio de la cadena de nombre de usuario.

UserLength

Tamaño, en bytes, de la cadena de nombre de usuario.

DomainOffset

Desplazamiento desde el principio de la estructura hasta el principio de la cadena de nombre de dominio.

Una credencial de identidad debe contener el nombre del proveedor de identidades en lugar del nombre de dominio.

DomainLength

Tamaño, en bytes, de la cadena de nombre de dominio.

PackedCredentialsOffset

Desplazamiento desde el principio de la estructura hasta el principio de las credenciales empaquetadas.

La credencial empaquetada es una estructura SEC_WINNT_AUTH_PACKED_CREDENTIALS que contiene un tipo de credencial que especifica de forma única el tipo de credencial.

PackedCredentialsLength

Tamaño, en bytes, de la cadena de credenciales empaquetadas.

Flags

Marca larga sin signo que indica el tipo utilizado por los paquetes de seguridad negociables.

Valor Significado
SEC_WINNT_AUTH_IDENTITY_MARSHALLED
4 (0x4)
Todos los datos están en un búfer.
SEC_WINNT_AUTH_IDENTITY_ONLY
8 (0x8)
Se usa con el proveedor de compatibilidad de seguridad (SSP) de Kerberos. Las credenciales son solo para identidades. El paquete Kerberos se dirige a no incluir datos de autorización en el vale.
SEC_WINNT_AUTH_IDENTITY_ANSI
1 (0x1)
Las credenciales están en formato ANSI.
SEC_WINNT_AUTH_IDENTITY_UNICODE
2 (0x2)
Las credenciales están en formato Unicode.
SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER
524288 (0x80000)
Cuando el tipo de credencial es contraseña, la presencia de esta marca especifica que la estructura es una credencial de identificador en línea. Los miembros DomainOffset y DomainLength corresponden al nombre del proveedor de identificadores en línea.

Windows Server 2008 R2 y Windows 7: Esta marca no se admite.

SEC_WINNT_AUTH_IDENTITY_FLAGS_PROCESS_ENCRYPTED
16 (0x10)
La estructura se cifra mediante la función SspiEncryptAuthIdentity o la función SspiEncryptAuthIdentityEx con la opción SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_PROCESS. Solo se puede descifrar mediante el mismo proceso.

Windows Server 2008 R2 y Windows 7: Esta marca no se admite.

SEC_WINNT_AUTH_IDENTITY_FLAGS_SYSTEM_PROTECTED
32 (0x20)
La estructura se cifra mediante la función SspiEncryptAuthIdentityEx con la opción SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON en el contexto de seguridad DEL SISTEMA. Solo se puede descifrar mediante un subproceso que se ejecuta como SYSTEM.

Windows Server 2008 R2 y Windows 7: Esta marca no se admite.

SEC_WINNT_AUTH_IDENTITY_FLAGS_USER_PROTECTED
64 (0x40)
La estructura se cifra mediante la función SspiEncryptAuthIdentityEx con la opción SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON en un contexto de seguridad que no sea SYSTEM. Solo se puede descifrar mediante un subproceso que se ejecuta en la misma sesión de inicio de sesión en la que se cifró.

Windows Server 2008 R2 y Windows 7: Esta marca no se admite.

SEC_WINNT_AUTH_IDENTITY_FLAGS_RESERVED
65536 (0x10000)
El búfer de identidad de autenticación es cbStructureLength + 8 bytes de relleno necesarios para el cifrado en contexto o el descifrado de la identidad.

PackageListOffset

Desplazamiento desde el principio de la estructura hasta el principio de la lista de paquetes admitidos.

PackageListLength

Tamaño, en bytes, de la lista de paquetes admitidos.

Comentarios

Este búfer de identidad de autenticación se puede devolver desde varias API de credenciales, por ejemplo, el método GetSerialization y las funciones CredUIPromptForWindowsCredential y SspiPromptForCredentials .

La estructura describe un encabezado del búfer de identidad de autenticación y los datos se anexan al final de la estructura. Aunque el miembro cbStructureLength especifica el tamaño del búfer real puede ser mayor o menor que cbStructureLength. Algunas funciones, como SspiValidateAuthIdentity, toman un puntero, pero no el tamaño del búfer, a la estructura de identidad como entrada. Como resultado, esas funciones pueden validar los datos internos del búfer, pero no pueden comprobar el tamaño del búfer. Esto puede dar lugar a la lectura o escritura de datos fuera del intervalo de búferes. Para evitar saturaciones de búfer al controlar un búfer de identidad que no es de confianza, las aplicaciones deben llamar a SspiUnmarshalAuthIdentity para obtener un puntero a una estructura de identidad con un tamaño validado y, a continuación, pasar ese puntero a las funciones.

QueryContextAttributes(CredSSP) puede devolver la estructura SEC_WINNT_AUTH_IDENTITY_EX2 y consumirla AcquireCredentialsHandle(CredSSP),LsaLogonUser y otras interfaces del proveedor de identidades.

SEC_WINNT_AUTH_PACKED_CREDENTIALS puede contener un tipo de credencial de contraseña, definido como SEC_WINNT_AUTH_DATA_TYPE_PASSWORD. Este tipo de credencial describe las credenciales de contraseña de un usuario de dominio, así como otras identidades en línea. Las aplicaciones deben definir _SEC_WINNT_AUTH_TYPES para compilar código que haga referencia a este tipo de credencial, así como otras definiciones de la estructura SEC_WINNT_AUTH_PACKED_CREDENTIALS .

Las aplicaciones no deben consultar ni establecer el miembro Flags directamente. Use las funciones SspiIsAuthIdentityEncrypted, SspiEncryptAuthIdentityEx y SspiDecryptAuthIdentityEx para administrar el cifrado y el descifrado de la estructura de SEC_WINNT_AUTH_IDENTITY_EX2 .

Los proveedores de identidades deben comprobar o establecer explícitamente SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER y los campos de nombre de dominio para diferenciar su credencial de contraseña de un dominio y la contraseña de otro proveedor de identidades.

Se puede llamar a la función CredPackAuthenticationBuffer con la opción CRED_PACK_ID_PROVIDER_CREDENTIALS para crear una estructura de SEC_WINNT_AUTH_IDENTITY_EX2 con los datos de autenticación de SEC_WINNT_AUTH_DATA_TYPE_PASSWORD tipo de credencial, un miembro Flags que contiene el valor de SEC_WINNT_AUTH_IDENTITY_FLAGS_ID_PROVIDER y un miembro DomainOffset establecido en el nombre del proveedor.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Encabezado sspi.h