Condividi tramite


Struttura CREDENTIALA (wincred.h)

La struttura CREDENTIAL contiene una singola credenziale.

Sintassi

typedef struct _CREDENTIALA {
  DWORD                  Flags;
  DWORD                  Type;
  LPSTR                  TargetName;
  LPSTR                  Comment;
  FILETIME               LastWritten;
  DWORD                  CredentialBlobSize;
  LPBYTE                 CredentialBlob;
  DWORD                  Persist;
  DWORD                  AttributeCount;
  PCREDENTIAL_ATTRIBUTEA Attributes;
  LPSTR                  TargetAlias;
  LPSTR                  UserName;
} CREDENTIALA, *PCREDENTIALA;

Members

Flags

Membro bit che identifica le caratteristiche delle credenziali. I bit non definiti devono essere inizializzati come zero e non altrimenti modificati per consentire un miglioramento futuro.

Valore Significato
CRED_FLAGS_PROMPT_NOW
2 (0x2)
Impostare bit se la credenziale non persiste nella CredentialBlob e le credenziali non sono state scritte durante questa sessione di accesso. Questo bit viene ignorato nell'input e viene impostato automaticamente quando viene eseguita una query.

Se Type è CRED_TYPE_DOMAIN_CERTIFICATE, CredentialBlob non viene persistente tra le sessioni di accesso perché il PIN di un certificato è informazioni molto sensibili. In effetti, quando la credenziale viene scritta in gestione credenziali, il PIN viene passato al provider di servizi di gestione credenziali associato al certificato. Il provider di servizi di configurazione applica un criterio di conservazione pin appropriato al certificato.

Se type è CRED_TYPE_DOMAIN_PASSWORD o CRED_TYPE_DOMAIN_CERTIFICATE, un pacchetto di autenticazione ha sempre esito negativo quando si usano le credenziali contrassegnate come CRED_FLAGS_PROMPT_NOW. L'applicazione (in genere tramite l'interfaccia utente dell'anello della chiave) richiede all'utente la password. L'applicazione salva le credenziali e riprova l'autenticazione. Poiché le credenziali sono state scritte di recente, il pacchetto di autenticazione ottiene ora una credenziale non contrassegnata come CRED_FLAGS_PROMPT_NOW.

CRED_FLAGS_USERNAME_TARGET
4 (0x4)
Bit è impostato se questa credenziale ha un membro TargetName impostato sullo stesso valore del membro UserName . Questa credenziale è progettata per archiviare CredentialBlob per un utente specifico. Per altre informazioni, vedere la funzione CredMarshalCredential .

Questo bit può essere specificato solo se Type è CRED_TYPE_DOMAIN_PASSWORD o CRED_TYPE_DOMAIN_CERTIFICATE.

Type

Tipo di credenziale. Impossibile modificare questo membro dopo la creazione delle credenziali. I valori seguenti sono validi.

Valore Significato
CRED_TYPE_GENERIC
1 (0x1)
La credenziale è una credenziale generica. Le credenziali non verranno usate da alcun pacchetto di autenticazione specifico. Le credenziali verranno archiviate in modo sicuro, ma non hanno altre caratteristiche significative.
CRED_TYPE_DOMAIN_PASSWORD
2 (0x2)
La credenziale è una credenziale password ed è specifica per i pacchetti di autenticazione di Microsoft. I pacchetti di autenticazione NTLM, Kerberos e Negotiate useranno automaticamente questa credenziale durante la connessione alla destinazione denominata.
CRED_TYPE_DOMAIN_CERTIFICATE
3 (0x3)
La credenziale è una credenziale del certificato ed è specifica per i pacchetti di autenticazione di Microsoft. I pacchetti di autenticazione Kerberos, Negotiate e Schannel usano automaticamente questa credenziale durante la connessione alla destinazione denominata.
CRED_TYPE_DOMAIN_VISIBLE_PASSWORD
4 (0x4)
Questo valore non è più supportato.

Windows Server 2003 e Windows XP: La credenziale è una credenziale password ed è specifica per i pacchetti di autenticazione da Microsoft. Il pacchetto di autenticazione Passport userà automaticamente questa credenziale durante la connessione alla destinazione denominata.

I valori aggiuntivi verranno definiti in futuro. Le applicazioni devono essere scritte per consentire i tipi di credenziali che non capiscono.

CRED_TYPE_GENERIC_CERTIFICATE
5 (0x5)
La credenziale è una credenziale del certificato che è un pacchetto di autenticazione generico.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è supportato.

CRED_TYPE_DOMAIN_EXTENDED
6 (0x6)
Le credenziali sono supportate dai pacchetti negoziata estesi.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è supportato.

CRED_TYPE_MAXIMUM
7 (0x7)
Numero massimo di tipi di credenziali supportati.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è supportato.

CRED_TYPE_MAXIMUM_EX
CRED_TYPE_MAXIMUM+1000
Numero massimo esteso di tipi di credenziali supportati che ora consentono alle nuove applicazioni di eseguire nei sistemi operativi meno recenti.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è supportato.

TargetName

Nome della credenziale. I membri TargetName e Type identificano in modo univoco le credenziali. Impossibile modificare questo membro dopo la creazione delle credenziali. Le credenziali con il nome precedente devono invece essere eliminate e le credenziali con il nuovo nome creato.

Se Type è CRED_TYPE_DOMAIN_PASSWORD o CRED_TYPE_DOMAIN_CERTIFICATE, questo membro identifica il server o i server per cui deve essere usata la credenziale. Il membro è un nome server NetBIOS o DNS, un suffisso nome host DNS contenente un carattere jolly, un nome di dominio NetBIOS o DNS che contiene una sequenza di caratteri jolly o un asterisco.

Se TargetName è un nome host DNS, il membro TargetAlias può essere il nome NetBIOS dell'host.

Se targetName è un suffisso nome host DNS contenente un carattere jolly, l'etichetta più sinistra del nome host DNS è un asterisco (*), che indica che il nome di destinazione è qualsiasi server il cui nome termina nel nome specificato, ad esempio *.microsoft.com.

Se TargetName è un nome di dominio che contiene una sequenza di caratteri jolly, la sintassi è il nome di dominio seguito da una barra rovesciata e un asterisco (*), che indica che il nome di destinazione è qualsiasi server membro del dominio denominato (o area di autenticazione).

Se TargetName è un nome di dominio DNS contenente una sequenza di caratteri jolly, il membro TargetAlias può essere un nome di dominio NetBIOS che usa una sequenza con caratteri jolly per lo stesso dominio.

Se TargetName specifica una condivisione DFS, ad esempio DfsRoot\DfsShare, questa credenziale corrisponde alla condivisione DFS specifica e a qualsiasi server raggiunto tramite tale condivisione DFS.

Se TargetName è un singolo asterisco (*), questa credenziale corrisponde a qualsiasi nome del server.

Se TargetName è CRED_SESSION_WILDCARD_NAME, questa credenziale corrisponde a qualsiasi nome del server. Questa credenziale corrisponde prima di un singolo asterisco ed è valida solo se Persist è CRED_PERSIST_SESSION. Le credenziali possono essere impostate dalle applicazioni che vogliono eseguire temporaneamente l'override delle credenziali predefinite.

Questo membro non può essere più lungo di CRED_MAX_DOMAIN_TARGET_NAME_LENGTH (337) caratteri.

Se il tipo è CRED_TYPE_GENERIC, questo membro deve identificare il servizio che usa le credenziali oltre alla destinazione effettiva. Microsoft suggerisce che il nome sia preceduto dal nome dell'azienda che implementa il servizio. Microsoft userà il prefisso "Microsoft". I servizi scritti da Microsoft devono aggiungere il nome del servizio, ad esempio Microsoft_RAS_TargetName. Questo membro non può essere più lungo di CRED_MAX_GENERIC_TARGET_NAME_LENGTH (32767) caratteri.

Questo membro è senza distinzione tra maiuscole e minuscole.

Comment

Commento stringa dell'utente che descrive questa credenziale. Questo membro non può essere più lungo di CRED_MAX_STRING_LENGTH (256) caratteri.

LastWritten

Ora, in Coordinated Universal Time (Greenwich Mean Time), dell'ultima modifica delle credenziali. Per le operazioni di scrittura, il valore di questo membro viene ignorato.

CredentialBlobSize

Dimensioni, in byte, del membro CredentialBlob . Questo membro non può essere maggiore di CRED_MAX_CREDENTIAL_BLOB_SIZE (5*512) byte.

CredentialBlob

Dati segreti per le credenziali. Il membro CredentialBlob può essere sia letto che scritto.

Se il membro Type è CRED_TYPE_DOMAIN_PASSWORD, questo membro contiene la password Unicode non crittografata per UserName. I membri CredentialBlob e CredentialBlobSize non includono un carattere finale zero. Inoltre, per CRED_TYPE_DOMAIN_PASSWORD, questo membro può essere letto solo dai pacchetti di autenticazione.

Se il membro Type è CRED_TYPE_DOMAIN_CERTIFICATE, questo membro contiene il PIN Unicode di test chiaro per UserName. I membri CredentialBlob e CredentialBlobSize non includono un carattere finale zero. Inoltre, questo membro può essere letto solo dai pacchetti di autenticazione.

Se il membro Type è CRED_TYPE_GENERIC, questo membro viene definito dall'applicazione.

Le credenziali devono essere portabili. Le applicazioni devono assicurarsi che i dati in CredentialBlob siano portatili. L'applicazione definisce il byte-endian e l'allineamento dei dati in CredentialBlob.

Persist

Definisce la persistenza di questa credenziale. Questo membro può essere letto e scritto.

Valore Significato
CRED_PERSIST_SESSION
1 (0x1)
Le credenziali vengono mantenute per la durata della sessione di accesso. Non sarà visibile ad altre sessioni di accesso dello stesso utente. Non esiste dopo che questo utente si disconnette e torna indietro.
CRED_PERSIST_LOCAL_MACHINE
2 (0x2)
Le credenziali vengono mantenute per tutte le sessioni di accesso successive nello stesso computer. È visibile ad altre sessioni di accesso dello stesso utente nello stesso computer e non visibili per accedere alle sessioni per l'utente in altri computer.

Windows Vista Home Basic, Windows Vista Home Premium, Windows Vista Starter e Windows XP Home Edition: Questo valore non è supportato.

CRED_PERSIST_ENTERPRISE
3 (0x3)
Le credenziali vengono mantenute per tutte le sessioni di accesso successive nello stesso computer. È visibile ad altre sessioni di accesso dello stesso utente nello stesso computer e per accedere alle sessioni per l'utente in altri computer.

Questa opzione può essere implementata come credenziali persistenti in locale se l'amministratore o l'utente configura l'account utente per non avere stato in grado di eseguire il roaming. Ad esempio, se l'utente non ha un profilo roaming, le credenziali verranno mantenute solo in locale.

Windows Vista Home Basic, Windows Vista Home Premium, Windows Vista Starter e Windows XP Home Edition: Questo valore non è supportato.

AttributeCount

Numero di attributi definiti dall'applicazione da associare alle credenziali. Questo membro può essere letto e scritto. Il valore non può essere maggiore di CRED_MAX_ATTRIBUTES (64).

Attributes

Attributi definiti dall'applicazione associati alle credenziali. Questo membro può essere letto e scritto.

TargetAlias

Alias per il membro TargetName . Questo membro può essere letto e scritto. Non può essere più lungo di CRED_MAX_STRING_LENGTH (256) caratteri.

Se il tipo di credenziali è CRED_TYPE_GENERIC, questo membro può essere diverso da NULL, ma gestione credenziali ignora il membro.

UserName

Nome utente dell'account usato per connettersi a TargetName.

Se il tipo di credenziali è CRED_TYPE_DOMAIN_PASSWORD, questo membro può essere un nomeutente DomainName o un UPN.

Se il tipo di credenziali è CRED_TYPE_DOMAIN_CERTIFICATE, questo membro deve essere un riferimento al certificato di marshalling creato chiamando CredMarshalCredential con un certificato CertCredential.

Se il tipo di credenziali è CRED_TYPE_GENERIC, questo membro può essere diverso da NULL, ma gestione credenziali ignora il membro.

Questo membro non può essere più lungo di CRED_MAX_USERNAME_LENGTH (513) caratteri.

Commenti

Nota

L'intestazione wincred.h definisce CREDENTIAL come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Intestazione wincred.h