CredUnPackAuthenticationBufferA 함수(wincred.h)
CredUnPackAuthenticationBuffer 함수는 CredUIPromptForWindowsCredentials 함수를 호출하여 반환된 인증 버퍼를 문자열 사용자 이름 및 암호로 변환합니다.
통사론
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
);
매개 변수
[in] dwFlags
이 매개 변수의 값을 CRED_PACK_PROTECTED_CREDENTIALS 설정하면 함수가 인증 버퍼에서 자격 증명의 암호를 해독하려고 시도합니다. 자격 증명을 해독할 수 없는 경우 함수는 FALSE
암호 해독이 수행되는 방법은 인증 버퍼의 형식에 따라 달라집니다.
인증 버퍼가 SEC_WINNT_AUTH_IDENTITY_EX2 구조인 경우 함수는 SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON 옵션과 함께 SspiEncryptAuthIdentityEx 사용하여 암호화된 경우 버퍼의 암호를 해독할 수 있습니다.
인증 버퍼가 마샬링된 KERB_*_LOGON 구조 중 하나인 경우 함수는 암호를 해독한 후 pszPassword 버퍼에 반환합니다.
[in] pAuthBuffer
변환할 인증 버퍼에 대한 포인터입니다.
이 버퍼는 일반적으로 credPACKAuthenticationBuffer 또는
- ID 자격 증명에 대한 SEC_WINNT_AUTH_IDENTITY_EX2 구조입니다. 함수는 다른 SEC_WINNT_AUTH_IDENTITY 구조를 허용하지 않습니다.
- 암호 자격 증명에 대한 KERB_INTERACTIVE_LOGON 또는 KERB_INTERACTIVE_UNLOCK_LOGON 구조입니다.
- 스마트 카드 인증서 자격 증명에 대한 KERB_CERTIFICATE_LOGON 또는 KERB_CERTIFICATE_UNLOCK_LOGON 구조입니다.
- 일반 자격 증명에 대한 GENERIC_CRED.
[in] cbAuthBuffer
pAuthBuffer 버퍼의 크기(바이트)입니다.
[out] pszUserName
사용자 이름을 받는 null로 끝나는 문자열에 대한 포인터입니다.
이 문자열은 마샬링된 자격 증명일 수 있습니다. 비고를 참조하세요.
[in, out] pcchlMaxUserName
pszUserName 버퍼의 크기를 문자 단위로 지정하는 DWORD 값에 대한 포인터입니다. 출력에서 버퍼의 크기가 충분하지 않은 경우 pszUserName
[out] pszDomainName
사용자 도메인의 이름을 받는 null로 끝나는 문자열에 대한 포인터입니다.
[in, out] pcchMaxDomainName
pszDomainName 버퍼의 크기를 문자 단위로 지정하는 DWORD 값에 대한 포인터입니다. 출력에서 버퍼의 크기가 충분하지 않으면 pszDomainName
[out] pszPassword
암호를 받는 null로 끝나는 문자열에 대한 포인터입니다.
[in, out] pcchMaxPassword
pszPassword 버퍼의 크기를 문자 단위로 지정하는 DWORD 값에 대한 포인터입니다. 출력에서 버퍼의 크기가 충분하지 않은 경우 pszPassword 버퍼의 필요한 크기(문자)를 지정합니다. 이 크기에는 종료 null 문자가 포함됩니다.
이 문자열은 마샬링된 자격 증명일 수 있습니다. 비고를 참조하세요.
반환 값
함수가 성공하면 TRUE
확장 오류 정보는 GetLastError 함수를 호출합니다. 다음 표에서는 GetLastError 함수에 대한 공통 값을 보여 있습니다.
반환 코드/값 | 묘사 |
---|---|
|
CRED_PACK_PROTECTED_CREDENTIALS dwFlags 매개 변수의 값으로 전달되었지만 암호를 보호하는 데 사용되는 보안 컨텍스트가 호출자의 보안 컨텍스트와 다르기 때문에 이 함수는 자격 증명의 암호를 해독할 수 없습니다. |
|
출력 버퍼 중 하나인 pszUserName, |
|
인증 버퍼가 지원되는 형식이 아닙니다. |
발언
Windows 8 및 Windows Server 2012부터 인증 버퍼는 SEC_WINNT_AUTH_IDENTITY_EX2 구조일 수 있으며, SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON 옵션과 함께 SspiEncryptAuthIdentityEx 함수를 사용하여 선택적으로 암호화할 수 있습니다. 이 자격 증명 형식은 CredUIPromptForWindowsCredentials 또는 SspiPromptForCredentials 함수를 사용하여 ID 공급자의 자격 증명 공급자에 의해 반환됩니다. 이 구조체는 CredPackAuthenticationBuffer 함수를 사용하여 생성할 수도 있습니다. 인증 버퍼 pAuthBufferKERB_CERTIFICATE_LOGON 또는 SEC_WINNT_AUTH_IDENTITY_EX2같은 비패스워드 자격 증명을 나타내는 경우 함수는 자격 증명을 사용자 이름, 도메인 이름 및 암호 문자열로 반환된 문자열로 마샬링해야 합니다. 마샬링이 특정 프로시저를 사용하여 수행됩니다. dwFlags CRED_PACK_PROTECTED_CREDENTIALS 플래그를 포함하는 경우 호출자는 자격 증명이 암호화된 동일한 로그온 세션에서 실행되어야 합니다.
메모
wincred.h 헤더는 CRedUnPackAuthenticationBuffer를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | wincred.h |
라이브러리 | Credui.lib |
DLL | Credui.dll |