Freigeben über


CredUnPackAuthenticationBufferA-Funktion (wincred.h)

Die CredUnPackAuthenticationBuffer-Funktion konvertiert einen Authentifizierungspuffer, der durch einen Aufruf der Funktion CredUIPromptForWindowsCredentials zurückgegeben wird, in einen Zeichenfolgenbenutzernamen und ein Kennwort.

Syntax

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
);

Parameter

[in] dwFlags

Wenn Sie den Wert dieses Parameters auf CRED_PACK_PROTECTED_CREDENTIALS festlegen, wird angegeben, dass die Funktion versucht, die Anmeldeinformationen im Authentifizierungspuffer zu entschlüsseln. Wenn die Anmeldeinformationen nicht entschlüsselt werden können, gibt die Funktion FALSE zurück, und ein Aufruf der GetLastError-Funktion gibt den Wert ERROR_NOT_CAPABLE zurück.

Wie die Entschlüsselung erfolgt, hängt vom Format des Authentifizierungspuffers ab.

Wenn der Authentifizierungspuffer eine SEC_WINNT_AUTH_IDENTITY_EX2-Struktur ist, kann die Funktion den Puffer entschlüsseln, wenn er mit SspiEncryptAuthIdentityEx mit der Option SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON verschlüsselt wird.

Wenn der Authentifizierungspuffer eine der gemarshallten KERB_*_LOGON-Strukturen ist, entschlüsselt die Funktion das Kennwort, bevor es im pszPassword-Puffer zurückgegeben wird.

[in] pAuthBuffer

Ein Zeiger auf den zu konvertierenden Authentifizierungspuffer.

Dieser Puffer ist in der Regel die Ausgabe der Funktion CredUIPromptForWindowsCredentials oder CredPackAuthenticationBuffer . Dies muss einer der folgenden Typen sein:

[in] cbAuthBuffer

Die Größe des pAuthBuffer-Puffers in Bytes.

[out] pszUserName

Ein Zeiger auf eine NULL-endende Zeichenfolge, die den Benutzernamen empfängt.

Bei dieser Zeichenfolge kann es sich um gemarshallte Anmeldeinformationen handeln. Siehe Hinweise.

[in, out] pcchlMaxUserName

Ein Zeiger auf einen DWORD-Wert , der die Größe des Puffers pszUserName in Zeichen angibt. Wenn der Puffer bei der Ausgabe nicht ausreichend groß ist, gibt die erforderliche Größe des Puffers pszUserName in Zeichen an. Die Größe umfasst das beendende NULL-Zeichen.

[out] pszDomainName

Ein Zeiger auf eine NULL-endende Zeichenfolge, die den Namen der Domäne des Benutzers empfängt.

[in, out] pcchMaxDomainName

Ein Zeiger auf einen DWORD-Wert , der die Größe des Puffers pszDomainName in Zeichen angibt. Wenn der Puffer bei der Ausgabe nicht ausreichend groß ist, gibt die erforderliche Größe des Puffers pszDomainName in Zeichen an. Die Größe enthält das abschließende NULL-Zeichen. Die erforderliche Größe kann null sein, wenn kein Domänenname vorhanden ist.

[out] pszPassword

Ein Zeiger auf eine NULL-Zeichenfolge, die das Kennwort empfängt.

[in, out] pcchMaxPassword

Ein Zeiger auf einen DWORD-Wert , der die Größe des pszPassword-Puffers in Zeichen angibt. Wenn der Puffer bei der Ausgabe nicht ausreichend groß ist, gibt die erforderliche Größe des pszPassword-Puffers in Zeichen an. Die Größe enthält das abschließende NULL-Zeichen.

Bei dieser Zeichenfolge kann es sich um gemarshallte Anmeldeinformationen handeln. Siehe Hinweise.

Rückgabewert

TRUE , wenn die Funktion erfolgreich ist; andernfalls FALSE.

Rufen Sie die GetLastError-Funktion auf, um erweiterte Fehlerinformationen zu erhalten. Die folgende Tabelle enthält allgemeine Werte für die GetLastError-Funktion .

Rückgabecode/-wert BESCHREIBUNG
ERROR_NOT_CAPABLE
CRED_PACK_PROTECTED_CREDENTIALS wurde als Wert des dwFlags-Parameters übergeben, aber diese Funktion kann die Anmeldeinformationen nicht entschlüsseln, da sich der Sicherheitskontext, der zum Schutz des Kennworts verwendet wird, vom Sicherheitskontext des Aufrufers unterscheidet.
ERROR_INSUFFICIENT_BUFFER
Einer der Ausgabepuffer, pszUserName, pszDomainName oder pszPassword, war nicht ausreichend groß.
ERROR_NOT_SUPPORTED
Der Authentifizierungspuffer hat keinen unterstützten Typ.

Hinweise

Ab Windows 8 und Windows Server 2012 kann der Authentifizierungspuffer eine SEC_WINNT_AUTH_IDENTITY_EX2-Struktur sein, die optional mit der SspiEncryptAuthIdentityEx-Funktion mit der Option SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON verschlüsselt werden kann. Dieses Anmeldeinformationsformat wird von einem Anmeldeinformationsanbieter eines Identitätsanbieters mithilfe der Funktion CredUIPromptForWindowsCredentials oder SspiPromptForCredentials zurückgegeben. Diese Struktur kann auch mithilfe der Funktion CredPackAuthenticationBuffer erstellt werden. Wenn der Authentifizierungspuffer pAuthBuffer keine Kennwortanmeldeinformationen darstellt, z. B. KERB_CERTIFICATE_LOGON oder SEC_WINNT_AUTH_IDENTITY_EX2, muss die Funktion die Anmeldeinformationen als Zeichenfolgen marshallen, die als Benutzername, Domänenname und Kennwortzeichenfolgen zurückgegeben werden. Das Marshalling erfolgt mithilfe eines bestimmten Verfahrens. Wenn dwFlags das flag CRED_PACK_PROTECTED_CREDENTIALS enthält, muss der Aufrufer in derselben Anmeldesitzung ausgeführt werden, in der die Anmeldeinformationen verschlüsselt wurden.

Hinweis

Der wincred.h-Header definiert CredUnPackAuthenticationBuffer als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wincred.h
Bibliothek Credui.lib
DLL Credui.dll