Estructura CREDENTIALW (wincred.h)

La estructura CREDENTIAL contiene una credencial individual.

Sintaxis

typedef struct _CREDENTIALW {
  DWORD                  Flags;
  DWORD                  Type;
#if ...
  wchar_t                *TargetName;
#else
  LPWSTR                 TargetName;
#endif
#if ...
  wchar_t                *Comment;
#else
  LPWSTR                 Comment;
#endif
  FILETIME               LastWritten;
  DWORD                  CredentialBlobSize;
  LPBYTE                 CredentialBlob;
  DWORD                  Persist;
  DWORD                  AttributeCount;
  PCREDENTIAL_ATTRIBUTEW Attributes;
#if ...
  wchar_t                *TargetAlias;
#else
  LPWSTR                 TargetAlias;
#endif
#if ...
  wchar_t                *UserName;
#else
  LPWSTR                 UserName;
#endif
} CREDENTIALW, *PCREDENTIALW;

Miembros

Flags

Miembro bit que identifica las características de la credencial. Los bits no definidos deben inicializarse como cero y no modificarse para permitir mejoras futuras.

Valor Significado
CRED_FLAGS_PROMPT_NOW
2 (0x2)
Bit establecido si la credencial no conserva CredentialBlob y la credencial no se ha escrito durante esta sesión de inicio de sesión. Este bit se omite en la entrada y se establece automáticamente cuando se consulta.

Si Type es CRED_TYPE_DOMAIN_CERTIFICATE, CredentialBlob no se conserva entre sesiones de inicio de sesión porque el PIN de un certificado es información muy confidencial. De hecho, cuando la credencial se escribe en el administrador de credenciales, el PIN se pasa al CSP asociado al certificado. El CSP aplicará una directiva de retención de PIN adecuada para el certificado.

Si Type es CRED_TYPE_DOMAIN_PASSWORD o CRED_TYPE_DOMAIN_CERTIFICATE, siempre se produce un error en un intento de autenticación al usar credenciales marcadas como CRED_FLAGS_PROMPT_NOW. La aplicación (normalmente a través de la interfaz de usuario del anillo de claves) solicita al usuario la contraseña. La aplicación guarda la credencial y vuelve a intentar la autenticación. Dado que la credencial se ha escrito recientemente, el paquete de autenticación ahora obtiene una credencial que no está marcada como CRED_FLAGS_PROMPT_NOW.

CRED_FLAGS_USERNAME_TARGET
4 (0x4)
Bit se establece si esta credencial tiene un miembro TargetName establecido en el mismo valor que el miembro UserName . Esta credencial es una diseñada para almacenar CredentialBlob para un usuario específico. Para obtener más información, consulte la función CredMarshalCredential .

Este bit solo se puede especificar si Type es CRED_TYPE_DOMAIN_PASSWORD o CRED_TYPE_DOMAIN_CERTIFICATE.

Type

Tipo de la credencial. Este miembro no se puede cambiar después de crear la credencial. Los valores siguientes son válidos.

Valor Significado
CRED_TYPE_GENERIC
1 (0x1)
La credencial es una credencial genérica. Ningún paquete de autenticación determinado usará la credencial. La credencial se almacenará de forma segura, pero no tiene otras características significativas.
CRED_TYPE_DOMAIN_PASSWORD
2 (0x2)
La credencial es una credencial de contraseña y es específica de los paquetes de autenticación de Microsoft. Los paquetes de autenticación NTLM, Kerberos y Negotiate usarán automáticamente esta credencial al conectarse al destino con nombre.
CRED_TYPE_DOMAIN_CERTIFICATE
3 (0x3)
La credencial es una credencial de certificado y es específica de los paquetes de autenticación de Microsoft. Los paquetes de autenticación Kerberos, Negotiate y Schannel usan automáticamente esta credencial al conectarse al destino con nombre.
CRED_TYPE_DOMAIN_VISIBLE_PASSWORD
4 (0x4)
Este valor ya no se admite.

Windows Server 2003 y Windows XP: La credencial es una credencial de contraseña y es específica de los paquetes de autenticación de Microsoft. El paquete de autenticación de Passport usará automáticamente esta credencial al conectarse al destino con nombre.

En el futuro se definirán valores adicionales. Las aplicaciones deben escribirse para permitir los tipos de credenciales que no entienden.

CRED_TYPE_GENERIC_CERTIFICATE
5 (0x5)
La credencial es una credencial de certificado que es un paquete de autenticación genérico.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite.

CRED_TYPE_DOMAIN_EXTENDED
6 (0x6)
Los paquetes de Negotiate extendidos admiten la credencial.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite.

CRED_TYPE_MAXIMUM
7 (0x7)
Número máximo de tipos de credenciales admitidos.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite.

CRED_TYPE_MAXIMUM_EX
CRED_TYPE_MAXIMUM+1000
El número máximo extendido de tipos de credenciales admitidos que ahora permiten que las nuevas aplicaciones se ejecuten en sistemas operativos anteriores.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite.

TargetName

Nombre de la credencial. Los miembros TargetName y Type identifican de forma única la credencial. Este miembro no se puede cambiar después de crear la credencial. En su lugar, se debe eliminar la credencial con el nombre antiguo y la credencial con el nuevo nombre creado.

Si Type es CRED_TYPE_DOMAIN_PASSWORD o CRED_TYPE_DOMAIN_CERTIFICATE, este miembro identifica el servidor o los servidores para los que se va a usar la credencial. El miembro es un nombre de servidor NetBIOS o DNS, un sufijo de nombre de host DNS que contiene un carácter comodín, un nombre de dominio NetBIOS o DNS que contiene una secuencia de caracteres comodín o un asterisco.

Si TargetName es un nombre de host DNS, el miembro TargetAlias puede ser el nombre NetBIOS del host.

Si TargetName es un sufijo de nombre de host DNS que contiene un carácter comodín, la etiqueta situada más a la izquierda del nombre de host DNS es un asterisco (*), lo que indica que el nombre de destino es cualquier servidor cuyo nombre termine en el nombre especificado, por ejemplo, *.microsoft.com.

Si TargetName es un nombre de dominio que contiene una secuencia de caracteres comodín, la sintaxis es el nombre de dominio seguido de una barra diagonal inversa y un asterisco (\*), lo que indica que el nombre de destino es cualquier servidor que sea miembro del dominio con nombre (o dominio).

Si TargetName es un nombre de dominio DNS que contiene una secuencia de caracteres comodín, el miembro TargetAlias puede ser un nombre de dominio NetBIOS que use una secuencia de caracteres comodín para el mismo dominio.

Si TargetName especifica un recurso compartido DFS, por ejemplo, DfsRoot\DfsShare, esta credencial coincide con el recurso compartido DFS específico y los servidores alcanzados a través de ese recurso compartido DFS.

Si TargetName es un solo asterisco (*), esta credencial coincide con cualquier nombre de servidor.

Si TargetName es CRED_SESSION_WILDCARD_NAME, esta credencial coincide con cualquier nombre de servidor. Esta credencial coincide con antes de un solo asterisco y solo es válida si Persist es CRED_PERSIST_SESSION. Las aplicaciones que quieran invalidar temporalmente la credencial predeterminada pueden establecer la credencial.

Este miembro no puede tener más de CRED_MAX_DOMAIN_TARGET_NAME_LENGTH (337) caracteres.

Si el tipo es CRED_TYPE_GENERIC, este miembro debe identificar el servicio que usa la credencial además del destino real. Microsoft sugiere que el nombre esté prefijo por el nombre de la empresa que implementa el servicio. Microsoft usará el prefijo "Microsoft". Los servicios escritos por Microsoft deben anexar su nombre de servicio, por ejemplo , Microsoft_RAS_TargetName. Este miembro no puede tener más de CRED_MAX_GENERIC_TARGET_NAME_LENGTH (32767).

Este miembro no distingue mayúsculas de minúsculas.

Comment

Comentario de cadena del usuario que describe esta credencial. Este miembro no puede tener más de CRED_MAX_STRING_LENGTH (256) caracteres.

LastWritten

La hora, en hora universal coordinada (hora media de Greenwich), de la última modificación de la credencial. En el caso de las operaciones de escritura, se omite el valor de este miembro.

CredentialBlobSize

Tamaño, en bytes, del miembro CredentialBlob . Este miembro no puede ser mayor que CRED_MAX_CREDENTIAL_BLOB_SIZE (5*512) bytes.

CredentialBlob

Datos secretos de la credencial. El miembro CredentialBlob puede leerse y escribirse.

Si el miembro Type es CRED_TYPE_DOMAIN_PASSWORD, este miembro contiene la contraseña Unicode de texto no cifrado para UserName. Los miembros CredentialBlob y CredentialBlobSize no incluyen un carácter cero final. Además, para CRED_TYPE_DOMAIN_PASSWORD, este miembro solo puede ser leído por los paquetes de autenticación.

Si el miembro Type está CRED_TYPE_DOMAIN_CERTIFICATE, este miembro contiene el PIN Unicode de prueba sin cifrar para UserName. Los miembros CredentialBlob y CredentialBlobSize no incluyen un carácter cero final. Además, los paquetes de autenticación solo pueden leer este miembro.

Si el miembro Type es CRED_TYPE_GENERIC, la aplicación define este miembro.

Se espera que las credenciales sean portátiles. Las aplicaciones deben asegurarse de que los datos de CredentialBlob sean portátiles. La aplicación define el byte-endian y la alineación de los datos en CredentialBlob.

Persist

Define la persistencia de esta credencial. Este miembro se puede leer y escribir.

Valor Significado
CRED_PERSIST_SESSION
1 (0x1)
La credencial persiste durante la vida útil de la sesión de inicio de sesión. No será visible para otras sesiones de inicio de sesión de este mismo usuario. No existirá después de que este usuario cierre la sesión y vuelva a activarse.
CRED_PERSIST_LOCAL_MACHINE
2 (0x2)
La credencial persiste para todas las sesiones de inicio de sesión posteriores en este mismo equipo. Es visible para otras sesiones de inicio de sesión de este mismo usuario en este mismo equipo y no visibles para las sesiones de inicio de sesión de este usuario en otros equipos.

Windows Vista Home Basic, Windows Vista Home Premium, Windows Vista Starter y Windows XP Home Edition: Este valor no se admite.

CRED_PERSIST_ENTERPRISE
3 (0x3)
La credencial persiste para todas las sesiones de inicio de sesión posteriores en este mismo equipo. Es visible para otras sesiones de inicio de sesión de este mismo usuario en este mismo equipo y para iniciar sesión para este usuario en otros equipos.

Esta opción se puede implementar como credencial persistente localmente si el administrador o el usuario configura la cuenta de usuario para que no tenga estado móvil. Por ejemplo, si el usuario no tiene ningún perfil móvil, la credencial solo se conservará localmente.

Windows Vista Home Basic, Windows Vista Home Premium, Windows Vista Starter y Windows XP Home Edition: Este valor no se admite.

AttributeCount

Número de atributos definidos por la aplicación que se van a asociar a la credencial. Este miembro se puede leer y escribir. Su valor no puede ser mayor que CRED_MAX_ATTRIBUTES (64).

Attributes

Atributos definidos por la aplicación asociados a la credencial. Este miembro se puede leer y escribir.

TargetAlias

Alias para el miembro TargetName . Este miembro se puede leer y escribir. No puede tener más de CRED_MAX_STRING_LENGTH (256) caracteres.

Si el tipo de credencial es CRED_TYPE_GENERIC, este miembro puede ser distinto de NULL, pero el administrador de credenciales omite el miembro.

UserName

Nombre de usuario de la cuenta usada para conectarse a TargetName.

Si el tipo de credencial es CRED_TYPE_DOMAIN_PASSWORD, este miembro puede ser domainName\UserName o un UPN.

Si el tipo de credencial es CRED_TYPE_DOMAIN_CERTIFICATE, este miembro debe ser una referencia de certificado serializado creada llamando a CredMarshalCredential con un CertCredential .

Si el tipo de credencial es CRED_TYPE_GENERIC, este miembro puede ser distinto de NULL, pero el administrador de credenciales omite el miembro.

Este miembro no puede tener más de CRED_MAX_USERNAME_LENGTH (513) caracteres.

Comentarios

Nota:

El encabezado wincred.h define CREDENTIAL como un alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado wincred.h