CredUnPackAuthenticationBufferA-Funktion (wincred.h)
Die CredUnPackAuthenticationBuffer-Funktion konvertiert einen Authentifizierungspuffer, der von einem Aufruf des CredUIPromptForWindowsCredentials Funktion in einen Zeichenfolgenbenutzernamen und ein Kennwort zurückgegeben wird.
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
Durch Festlegen des Werts dieses Parameters auf CRED_PACK_PROTECTED_CREDENTIALS 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 FALSEzurück, und ein Aufruf der GetLastError--Funktion gibt den Wert ERROR_NOT_CAPABLEzurü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 einer der gemarsteten KERB_*_LOGON-Strukturen ist, entschlüsselt die Funktion das Kennwort, bevor sie im pszPassword- Puffer zurückgegeben wird.
[in] pAuthBuffer
Ein Zeiger auf den zu konvertierenden Authentifizierungspuffer.
Dieser Puffer ist in der Regel die Ausgabe der CredUIPromptForWindowsCredentials oder CredPackAuthenticationBuffer Funktion. Dies muss einer der folgenden Typen sein:
- Eine SEC_WINNT_AUTH_IDENTITY_EX2 Struktur für Identitätsanmeldeinformationen. Die Funktion akzeptiert keine anderen SEC_WINNT_AUTH_IDENTITY Strukturen.
- Eine KERB_INTERACTIVE_LOGON oder KERB_INTERACTIVE_UNLOCK_LOGON Struktur für Kennwortanmeldeinformationen.
- Eine KERB_CERTIFICATE_LOGON- oder KERB_CERTIFICATE_UNLOCK_LOGON Struktur für Smartcardzertifikatanmeldeinformationen.
- GENERIC_CRED für generische Anmeldeinformationen.
[in] cbAuthBuffer
Die Größe des pAuthBuffer- Puffers in Byte.
[out] pszUserName
Ein Zeiger auf eine mit Null beendete Zeichenfolge, die den Benutzernamen empfängt.
Diese Zeichenfolge kann eine gemarstete Anmeldeinformationen sein. Siehe Anmerkungen.
[in, out] pcchlMaxUserName
Ein Zeiger auf einen DWORD--Wert, der die Größe des pszUserName- Puffers in Zeichen angibt. Wenn der Puffer bei der Ausgabe nicht ausreichend groß ist, gibt die erforderliche Größe des pszUserName Puffers in Zeichen an. Die Größe enthält das Beenden des Nullzeichens.
[out] pszDomainName
Ein Zeiger auf eine mit Null beendete 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 pszDomainName- Puffers in Zeichen angibt. Gibt bei der Ausgabe, wenn der Puffer nicht ausreichend groß ist, die erforderliche Größe des pszDomainName Puffers in Zeichen an. Die Größe enthält das endende Nullzeichen. Die erforderliche Größe kann null sein, wenn kein Domänenname vorhanden ist.
[out] pszPassword
Ein Zeiger auf eine mit Null beendete 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. Gibt bei der Ausgabe, wenn der Puffer nicht ausreichend groß ist, die erforderliche Größe des pszPassword- Puffers in Zeichen an. Die Größe enthält das endende Nullzeichen.
Diese Zeichenfolge kann eine gemarstete Anmeldeinformationen sein. Siehe Anmerkungen.
Rückgabewert
TRUE, wenn die Funktion erfolgreich ist; andernfalls FALSE.
Rufen Sie für erweiterte Fehlerinformationen die GetLastError--Funktion auf. Die folgende Tabelle enthält allgemeine Werte für die GetLastError--Funktion.
Zurückgeben von Code/Wert | Beschreibung |
---|---|
|
CRED_PACK_PROTECTED_CREDENTIALS wurde als Wert des dwFlags-Parameters übergeben, diese Funktion kann die Anmeldeinformationen jedoch nicht entschlüsseln, da sich der Sicherheitskontext zum Schutz des Kennworts vom Sicherheitskontext des Aufrufers unterscheidet. |
|
Einer der Ausgabepuffer, pszUserName, pszDomainNameoder pszPassword, war unzureichend. |
|
Der Authentifizierungspuffer weist keinen unterstützten Typ auf. |
Bemerkungen
Ab Windows 8 und Windows Server 2012 kann der Authentifizierungspuffer eine SEC_WINNT_AUTH_IDENTITY_EX2 Struktur sein, die optional mithilfe 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 CredUIPromptForWindowsCredentials oder SspiPromptForCredentials-Funktion zurückgegeben. Diese Struktur kann auch mithilfe der CredPackAuthenticationBuffer-Funktion erstellt werden. Wenn der Authentifizierungspuffer pAuthBuffer eine Nichtpassword-Anmeldeinformation darstellt, z. B. KERB_CERTIFICATE_LOGON oder SEC_WINNT_AUTH_IDENTITY_EX2, muss die Funktion die Anmeldeinformationen als Zeichenzeichenfolgen marshallen, die als Benutzername, Domänenname und Kennwortzeichenfolgen zurückgegeben werden. Das Marshalling erfolgt mithilfe eines bestimmten Verfahrens. Wenn dwFlags das CRED_PACK_PROTECTED_CREDENTIALS Flag enthält, muss der Aufrufer in derselben Anmeldesitzung ausgeführt werden, in der die Anmeldeinformationen verschlüsselt wurden.
Anmerkung
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 |
---|---|
mindestens unterstützte Client- | Windows Vista [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows Server 2008 [Nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | wincred.h |
Library | Credui.lib |
DLL- | Credui.dll |