Condividi tramite


Funzione CredUnPackAuthenticationBufferA (wincred.h)

La funzione CredUnPackAuthenticationBuffer converte un buffer di autenticazione restituito da una chiamata all'CredUIPromptForWindowsCredentials funzione in un nome utente e una password stringa.

Sintassi

CREDUIAPI BOOL CredUnPackAuthenticationBufferA(
  [in]      DWORD dwFlags,
  [in]      PVOID pAuthBuffer,
  [in]      DWORD cbAuthBuffer,
  [out]     LPSTR pszUserName,
  [in, out] DWORD *pcchlMaxUserName,
  [out]     LPSTR pszDomainName,
  [in, out] DWORD *pcchMaxDomainName,
  [out]     LPSTR pszPassword,
  [in, out] DWORD *pcchMaxPassword
);

Parametri

[in] dwFlags

L'impostazione del valore di questo parametro su CRED_PACK_PROTECTED_CREDENTIALS specifica che la funzione tenta di decrittografare le credenziali nel buffer di autenticazione. Se la credenziale non può essere decrittografata, la funzione restituisce FALSEe una chiamata alla funzione GetLastError restituirà il valore ERROR_NOT_CAPABLE.

La modalità di decrittografia dipende dal formato del buffer di autenticazione.

Se il buffer di autenticazione è una struttura di SEC_WINNT_AUTH_IDENTITY_EX2, la funzione può decrittografare il buffer se è crittografato usando SspiEncryptAuthIdentityEx con l'opzione SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON.

Se il buffer di autenticazione è una delle strutture di KERB_*_LOGON di marshalling, la funzione decrittografa la password prima di restituirla nel buffer pszPassword.

[in] pAuthBuffer

Puntatore al buffer di autenticazione da convertire.

Questo buffer è in genere l'output della funzione CredUIPromptForWindowsCredentials o CredPackAuthenticationBuffer. Deve essere uno dei tipi seguenti:

[in] cbAuthBuffer

Dimensioni, in byte, del buffer pAuthBuffer.

[out] pszUserName

Puntatore a una stringa con terminazione Null che riceve il nome utente.

Questa stringa può essere una credenziale con marshalling. Vedere la sezione Osservazioni.

[in, out] pcchlMaxUserName

Puntatore a un valore DWORD che specifica le dimensioni, in caratteri, del buffer pszUserName . In caso di output, se la dimensione del buffer non è sufficiente, specifica le dimensioni richieste, in caratteri, del buffer pszUserName. Le dimensioni includono il carattere null di terminazione.

[out] pszDomainName

Puntatore a una stringa con terminazione Null che riceve il nome del dominio dell'utente.

[in, out] pcchMaxDomainName

Puntatore a un valore DWORD che specifica le dimensioni, in caratteri, del buffer pszDomainName. Nell'output, se il buffer non è di dimensioni sufficienti, specifica le dimensioni necessarie, in caratteri, del buffer pszDomainName . Le dimensioni includono il carattere Null di terminazione. Le dimensioni necessarie possono essere pari a zero se non è presente alcun nome di dominio.

[out] pszPassword

Puntatore a una stringa con terminazione Null che riceve la password.

[in, out] pcchMaxPassword

Puntatore a un valore DWORD che specifica le dimensioni, in caratteri, del buffer pszPassword . Nell'output, se il buffer non è di dimensioni sufficienti, specifica le dimensioni richieste, in caratteri, del buffer pszPassword . Le dimensioni includono il carattere Null di terminazione.

Questa stringa può essere una credenziale con marshalling. Vedere la sezione Osservazioni.

Valore restituito

TRUE se la funzione ha esito positivo; in caso contrario, FALSE.

Per informazioni estese sull'errore, chiamare la funzione GetLastError . Nella tabella seguente vengono illustrati i valori comuni per la funzione GetLastError .

Codice/valore restituito Descrizione
ERROR_NOT_CAPABLE
CRED_PACK_PROTECTED_CREDENTIALS è stato passato come valore del parametro dwFlags, ma questa funzione non può decrittografare le credenziali perché il contesto di sicurezza usato per proteggere la password è diverso dal contesto di sicurezza del chiamante.
ERROR_INSUFFICIENT_BUFFER
Uno dei buffer di output, pszUserName, pszDomainNameo pszPassword, era di dimensioni insufficienti.
ERROR_NOT_SUPPORTED
Il buffer di autenticazione non è di un tipo supportato.

Osservazioni

A partire da Windows 8 e Windows Server 2012, il buffer di autenticazione può essere una struttura SEC_WINNT_AUTH_IDENTITY_EX2, che può essere crittografata facoltativamente usando la funzione SspiEncryptAuthIdentityEx con l'opzione SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON. Questo formato di credenziali viene restituito da un provider di credenziali di un provider di identità usando la funzione CredUIPromptForWindowsCredentials o SspiPromptForCredentials. Questa struttura può essere costruita anche usando la funzione credPackAuthenticationBuffer . Se il buffer di autenticazione pAuthBuffer rappresenta una credenziale non password, ad esempio KERB_CERTIFICATE_LOGON o SEC_WINNT_AUTH_IDENTITY_EX2, la funzione deve effettuare il marshalling delle credenziali come stringhe di caratteri, restituite come nome utente, nome di dominio e stringhe di password. Il marshalling viene eseguito usando una procedura specifica. Quando dwFlags contiene il flag di CRED_PACK_PROTECTED_CREDENTIALS, il chiamante deve essere eseguito nella stessa sessione di accesso in cui è stata crittografata la credenziale.

Nota

L'intestazione wincred.h definisce CredUnPackAuthenticationBuffer 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 indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows Vista [solo app desktop]
server minimo supportato Windows Server 2008 [solo app desktop]
piattaforma di destinazione Finestre
intestazione wincred.h
libreria Credui.lib
dll Credui.dll