AcquireCredentialsHandleA 함수(sspi.h)
AcquireCredentialsHandle(CredSSP) 함수는 보안 주체의 기존 자격 증명에 대한 핸들을 획득합니다. 이 핸들은 InitializeSecurityContext(CredSSP) 및 AcceptSecurityContext(CredSSP) 함수에 필요합니다. 이러한 자격 증명은 여기에 설명되지 않은 시스템 로그온을 통해 설정되는 기존 자격 증명이거나 호출자가 대체 자격 증명을 제공할 수 있습니다.
구문
SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleA(
[in, optional] LPSTR pszPrincipal,
[in] LPSTR pszPackage,
[in] unsigned long fCredentialUse,
[in, optional] void *pvLogonId,
[in, optional] void *pAuthData,
[in, optional] SEC_GET_KEY_FN pGetKeyFn,
[in, optional] void *pvGetKeyArgument,
[out] PCredHandle phCredential,
[out, optional] PTimeStamp ptsExpiry
);
매개 변수
[in, optional] pszPrincipal
핸들이 참조할 자격 증명을 가진 보안 주체의 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다.
[in] pszPackage
이러한 자격 증명을 사용할 보안 패키지 의 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다. EnumerateSecurityPackages 함수에서 반환된 SecPkgInfo 구조체의 이름 멤버에 반환된 보안 패키지 이름입니다. 컨텍스트가 설정되면 ulAttribute가 SECPKG_ATTR_PACKAGE_INFO 설정된 상태에서 QueryContextAttributes(CredSSP)를 호출하여 사용 중인 보안 패키지에 대한 정보를 반환할 수 있습니다.
[in] fCredentialUse
이러한 자격 증명을 사용하는 방법을 나타내는 플래그입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
값 | 의미 |
---|---|
|
들어오는 서버 자격 증명의 유효성을 검사합니다. 인바운드 자격 증명은 InitializeSecurityContext(CredSSP) 또는 AcceptSecurityContext(CredSSP)가 호출될 때 인증 기관을 사용하여 유효성을 검사할 수 있습니다. 이러한 기관을 사용할 수 없는 경우 함수가 실패하고 SEC_E_NO_AUTHENTICATING_AUTHORITY 반환합니다. 유효성 검사는 패키지별로 다릅니다. |
|
로컬 클라이언트 자격 증명이 나가는 토큰을 준비하도록 허용합니다. |
[in, optional] pvLogonId
사용자를 식별하는 LUID( 로컬 고유 식별자 )에 대한 포인터입니다. 이 매개 변수는 네트워크 리 디렉터와 같은 파일 시스템 프로세스에 대해 제공됩니다. 이 매개 변수는 NULL일 수 있습니다.
[in, optional] pAuthData
Schannel 및 Negotiate 패키지 모두에 대한 인증 데이터를 지정하는 CREDSSP_CRED 구조체에 대한 포인터입니다.
[in, optional] pGetKeyFn
예약되어 있습니다. 이 매개 변수는 사용되지 않으며 NULL로 설정해야 합니다.
[in, optional] pvGetKeyArgument
예약되어 있습니다. 이 매개 변수는 NULL로 설정해야 합니다.
[out] phCredential
자격 증명 핸들을 받을 CredHandle 구조체에 대한 포인터입니다.
[out, optional] ptsExpiry
반환된 자격 증명이 만료되는 시간을 수신하는 TimeStamp 구조체에 대한 포인터입니다. 받은 구조체 값은 로컬 시간에 값을 지정해야 하는 보안 패키지에 따라 달라집니다.
반환 값
함수가 성공하면 SEC_E_OK 반환합니다.
함수가 실패하면 다음 오류 코드 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
|
요청된 작업을 완료하는 데 사용할 수 있는 메모리가 부족합니다. |
|
SSPI 오류 코드에 매핑되지 않은 오류가 발생했습니다. |
|
보안 패키지에서 사용할 수 있는 자격 증명이 없습니다. |
|
함수의 호출자에게 필요한 자격 증명이 없습니다. |
|
요청된 보안 패키지가 없습니다. |
|
패키지에 제공된 자격 증명이 인식되지 않았습니다. |
설명
AcquireCredentialsHandle(CredSSP) 함수는 특정 보안 패키지에서 사용하는 사용자 또는 클라이언트와 같은 보안 주체의 자격 증명에 대한 핸들을 반환합니다. 함수는 핸들을 기존 자격 증명 또는 새로 만든 자격 증명으로 반환하고 반환할 수 있습니다. 이 핸들은 AcceptSecurityContext(CredSSP) 및 InitializeSecurityContext(CredSSP) 함수 에 대한 후속 호출에서 사용할 수 있습니다.
일반적으로 AcquireCredentialsHandle(CredSSP) 은 동일한 컴퓨터에 로그온한 다른 사용자의 자격 증명을 제공하지 않습니다. 그러나 SE_TCB_NAME 권한이 있는 호출자는 해당 세션의 LUID(로그온 식별자)를 지정하여 기존 로그온 세션의 자격 증명을 가져올 수 있습니다. 일반적으로 로그온한 사용자를 대신하여 작동해야 하는 커널 모드 모듈에서 사용됩니다.
패키지는 RPC 런타임 전송에서 제공하는 pGetKeyFn 에서 함수를 호출할 수 있습니다. 전송에서 자격 증명을 검색하는 콜백 개념을 지원하지 않는 경우 이 매개 변수는 NULL이어야 합니다.
커널 모드 호출자의 경우 다음과 같은 차이점에 주의해야 합니다.
- 두 문자열 매개 변수는 유니코드 문자열이어야 합니다.
- 버퍼 값은 풀이 아닌 프로세스 가상 메모리에 할당되어야 합니다.
참고
sspi.h 헤더는 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 AcquireCredentialsHandle을 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | sspi.h(Security.h 포함) |
라이브러리 | Secur32.lib |
DLL | Secur32.dll |
추가 정보
AcceptSecurityContext(CredSSP)