다음을 통해 공유


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

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

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

[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_ENCRYPT_SAME_LOGON 옵션과 함께 SspiEncryptAuthIdentityEx 함수를 사용하여 선택적으로 암호화할 수 있는 SEC_WINNT_AUTH_IDENTITY_EX2 구조일 수 있습니다. 이 자격 증명 형식은 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