다음을 통해 공유


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반환하고 GetLastError 함수에 대한 호출은 ERROR_NOT_CAPABLE값을 반환합니다.

암호 해독이 수행되는 방법은 인증 버퍼의 형식에 따라 달라집니다.

인증 버퍼가 SEC_WINNT_AUTH_IDENTITY_EX2 구조인 경우 함수는 SEC_WINNT_AUTH_IDENTITY_ENCRYPT_SAME_LOGON 옵션과 함께 SspiEncryptAuthIdentityEx 사용하여 암호화된 경우 버퍼의 암호를 해독할 수 있습니다.

인증 버퍼가 마샬링된 KERB_*_LOGON 구조 중 하나인 경우 함수는 암호를 해독한 후 pszPassword 버퍼에 반환합니다.

[in] pAuthBuffer

변환할 인증 버퍼에 대한 포인터입니다.

이 버퍼는 일반적으로 credPACKAuthenticationBuffer 또는 CredPackAuthenticationBuffer 함수에 CredUIPromptForWindowsCredentials의 출력입니다. 다음 유형 중 하나여야 합니다.

[in] cbAuthBuffer

pAuthBuffer 버퍼의 크기(바이트)입니다.

[out] pszUserName

사용자 이름을 받는 null로 끝나는 문자열에 대한 포인터입니다.

이 문자열은 마샬링된 자격 증명일 수 있습니다. 비고를 참조하세요.

[in, out] pcchlMaxUserName

pszUserName 버퍼의 크기를 문자 단위로 지정하는 DWORD 값에 대한 포인터입니다. 출력에서 버퍼의 크기가 충분하지 않은 경우 pszUserName 필요한 크기를 문자 단위로 지정합니다. 크기에는 종료 null 문자가 포함됩니다.

[out] pszDomainName

사용자 도메인의 이름을 받는 null로 끝나는 문자열에 대한 포인터입니다.

[in, out] pcchMaxDomainName

pszDomainName 버퍼의 크기를 문자 단위로 지정하는 DWORD 값에 대한 포인터입니다. 출력에서 버퍼의 크기가 충분하지 않으면 pszDomainName 필요한 크기(문자)를 지정합니다. 이 크기에는 종료 null 문자가 포함됩니다. 도메인 이름이 없는 경우 필요한 크기는 0일 수 있습니다.

[out] pszPassword

암호를 받는 null로 끝나는 문자열에 대한 포인터입니다.

[in, out] pcchMaxPassword

pszPassword 버퍼의 크기를 문자 단위로 지정하는 DWORD 값에 대한 포인터입니다. 출력에서 버퍼의 크기가 충분하지 않은 경우 pszPassword 버퍼의 필요한 크기(문자)를 지정합니다. 이 크기에는 종료 null 문자가 포함됩니다.

이 문자열은 마샬링된 자격 증명일 수 있습니다. 비고를 참조하세요.

반환 값

함수가 성공하면 TRUE . 그렇지 않으면 FALSE.

확장 오류 정보는 GetLastError 함수를 호출합니다. 다음 표에서는 GetLastError 함수에 대한 공통 값을 보여 있습니다.

반환 코드/값 묘사
ERROR_NOT_CAPABLE
CRED_PACK_PROTECTED_CREDENTIALS dwFlags 매개 변수의 값으로 전달되었지만 암호를 보호하는 데 사용되는 보안 컨텍스트가 호출자의 보안 컨텍스트와 다르기 때문에 이 함수는 자격 증명의 암호를 해독할 수 없습니다.
ERROR_INSUFFICIENT_BUFFER
출력 버퍼 중 하나인 pszUserName, pszDomainName또는 pszPassword크기가 부족했습니다.
ERROR_NOT_SUPPORTED
인증 버퍼가 지원되는 형식이 아닙니다.

발언

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