다음을 통해 공유


AcquireCredentialsHandle(일반) 함수

AcquireCredentialsHandle(일반) 함수는 보안 주체의 기존 자격 증명에 대한 핸들을 획득합니다. 이 핸들은 InitializeSecurityContext(일반)AcceptSecurityContext(일반) 함수에 필요합니다. 이러한 자격 증명은 여기에 설명되지 않은 시스템 로그온을 통해 설정된 기존 자격 증명이거나 호출자가 대체 자격 증명을 제공할 수 있습니다.

참고

이는 "네트워크에 로그온"이 아니며 자격 증명 수집을 의미하지는 않습니다.

 

특정 SSP(보안 지원 공급자)에서 이 함수를 사용하는 방법에 대한 자세한 내용은 다음 topics 참조하세요.

항목 설명
AcquireCredentialsHandle(CredSSP)
CredSSP(자격 증명 보안 지원 공급자)를 사용하는 보안 주체의 기존 자격 증명에 대한 핸들을 획득합니다.
AcquireCredentialsHandle(다이제스트)
다이제스트를 사용하는 보안 주체의 기존 자격 증명에 대한 핸들을 획득합니다.
AcquireCredentialsHandle(Kerberos)
Kerberos를 사용하는 보안 주체의 기존 자격 증명에 대한 핸들을 획득합니다.
AcquireCredentialsHandle(협상)
Negotiate를 사용하는 보안 주체의 기존 자격 증명에 대한 핸들을 획득합니다.
AcquireCredentialsHandle(NTLM)
NTLM을 사용하는 보안 주체의 기존 자격 증명에 대한 핸들을 획득합니다.
AcquireCredentialsHandle(Schannel)
Schannel을 사용하는 보안 주체의 기존 자격 증명에 대한 핸들을 획득합니다.

 

구문

SECURITY_STATUS SEC_Entry AcquireCredentialsHandle(
  _In_  SEC_CHAR       *pszPrincipal,
  _In_  SEC_CHAR       *pszPackage,
  _In_  ULONG          fCredentialUse,
  _In_  PLUID          pvLogonID,
  _In_  PVOID          pAuthData,
  _In_  SEC_GET_KEY_FN pGetKeyFn,
  _In_  PVOID          pvGetKeyArgument,
  _Out_ PCredHandle    phCredential,
  _Out_ PTimeStamp     ptsExpiry
);

매개 변수

pszPrincipal [in]

핸들이 참조할 자격 증명의 보안 주체 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다.

Digest SSP를 사용하는 경우 이 매개 변수는 선택 사항입니다.

Schannel SSP를 사용하는 경우 이 매개 변수는 사용되지 않으며 NULL로 설정해야 합니다.

참고

핸들을 요청하는 프로세스에 자격 증명에 대한 액세스 권한이 없는 경우 함수는 오류를 반환합니다. null 문자열은 프로세스가 실행 중인 보안 컨텍스트 에서 사용자의 자격 증명에 대한 핸들이 필요했음을 나타냅니다.

 

pszPackage [in]

이러한 자격 증명을 사용할 보안 패키지 의 이름을 지정하는 null로 종료된 문자열에 대한 포인터입니다. EnumerateSecurityPackages 함수에서 반환된 SecPkgInfo 구조체의 Name 멤버에 반환된 보안 패키지 이름입니다. 컨텍스트가 설정되면 ulAttribute가 SECPKG_ATTR_PACKAGE_INFO 설정된 QueryContextAttributes(일반)를 호출하여 사용 중인 보안 패키지에 대한 정보를 반환할 수 있습니다.

Digest SSP를 사용하는 경우 이 매개 변수를 WDIGEST_SP_NAME 설정합니다.

Schannel SSP를 사용하는 경우 이 매개 변수를 UNISP_NAME 설정합니다.

fCredentialUse [in]

이러한 자격 증명을 사용하는 방법을 나타내는 플래그입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
SECPKG_CRED_AUTOLOGON_RESTRICTED
0x00000010
보안은 자격 증명 관리자의 기본 로그온 자격 증명 또는 자격 증명을 사용하지 않습니다.
이 값은 협상 제한 위임에서만 지원됩니다.
Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 값은 지원되지 않습니다.
SECPKG_CRED_BOTH
들어오는 자격 증명의 유효성을 검사하거나 로컬 자격 증명을 사용하여 나가는 토큰을 준비합니다. 이 플래그는 다른 플래그를 모두 사용하도록 설정합니다. 다이제스트 및 Schannel SSP에서는 이 플래그가 유효하지 않습니다.
SECPKG_CRED_INBOUND
들어오는 서버 자격 증명의 유효성을 검사합니다. InitializeSecurityContext(일반) 또는 AcceptSecurityContext(일반)가 호출될 때 인증 기관을 사용하여 인바운드 자격 증명의 유효성 검사할 수 있습니다. 이러한 기관을 사용할 수 없는 경우 함수가 실패하고 SEC_E_NO_AUTHENTICATING_AUTHORITY 반환합니다. 유효성 검사는 패키지에 따라 다릅니다.
SECPKG_CRED_OUTBOUND
로컬 클라이언트 자격 증명이 나가는 토큰을 준비하도록 허용합니다.
SECPKG_CRED_PROCESS_POLICY_ONLY
0x00000020
함수는 서버 정책을 처리하고 SEC_E_NO_CREDENTIALS 반환하며, 이는 애플리케이션이 자격 증명을 묻는 메시지를 표시해야 함을 나타냅니다.
이 값은 협상 제한 위임에서만 지원됩니다.
Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 값은 지원되지 않습니다.

 

pvLogonID [in]

사용자를 식별하는 LUID( 로컬 고유 식별자 )에 대한 포인터입니다. 이 매개 변수는 네트워크 리디렉션기와 같은 파일 시스템 프로세스에 대해 제공됩니다. 이 매개 변수는 NULL일 수 있습니다.

Schannel SSP를 사용하는 경우 이 매개 변수는 사용되지 않으며 NULL로 설정해야 합니다.

pAuthData [in]

패키지별 데이터에 대한 포인터입니다. 이 매개 변수는 NULL일 수 있습니다. 이 매개 변수는 해당 보안 패키지 의 기본 자격 증명을 사용해야 했음을 나타냅니다. 제공된 자격 증명을 사용하려면 이 매개 변수에 해당 자격 증명을 포함하는 SEC_WINNT_AUTH_IDENTITY 구조를 전달합니다. RPC 런타임은 RpcBindingSetAuthInfo에 제공된 모든 것을 통과합니다.

Digest SSP를 사용하는 경우 이 매개 변수는 자격 증명을 찾는 데 사용할 인증 정보를 포함하는 SEC_WINNT_AUTH_IDENTITY 구조에 대한 포인터입니다.

Schannel SSP를 사용하는 경우 사용할 프로토콜과 다양한 사용자 지정 가능한 채널 기능에 대한 설정을 나타내는 SCHANNEL_CRED 구조를 지정합니다.

NTLM 또는 Negotiate 패키지를 사용하는 경우 사용자 이름, 암호 및 도메인의 최대 문자 길이는 각각 256, 256 및 15입니다.

pGetKeyFn [in]

이 매개 변수는 사용되지 않으며 NULL로 설정해야 합니다.

pvGetKeyArgument [in]

이 매개 변수는 사용되지 않으며 NULL로 설정해야 합니다.

phCredential [out]

자격 증명 핸들을 받을 CredHandle 구조체에 대한 포인터입니다.

ptsExpiry [out]

반환된 자격 증명이 만료되는 시간을 수신하는 TimeStamp 구조체에 대한 포인터입니다. 이 TimeStamp 구조에서 반환되는 값은 제한된 위임에 따라 달라집니다. 보안 패키지는 현지 시간으로 이 값을 반환해야 합니다.

이 매개 변수는 일정한 최대 시간으로 설정됩니다. 다이제스트 보안 컨텍스트또는 자격 증명 또는 다이제스트 SSP를 사용하는 경우 만료 시간이 없습니다.

Schannel SSP를 사용하는 경우 이 매개 변수는 선택 사항입니다. 인증에 사용할 자격 증명이 인증서인 경우 이 매개 변수는 해당 인증서의 만료 시간을 받습니다. 인증서가 제공되지 않은 경우 최대 시간 값이 반환됩니다.

반환 값

함수가 성공하면 함수는 SEC_E_OK 반환합니다.

함수가 실패하면 다음 오류 코드 중 하나를 반환합니다.

반환 코드 설명
SEC_E_INSUFFICIENT_MEMORY
요청된 작업을 완료하는 데 사용할 수 있는 메모리가 부족합니다.
SEC_E_INTERNAL_ERROR
SSPI 오류 코드에 매핑되지 않은 오류가 발생했습니다.
SEC_E_NO_CREDENTIALS
제한된 위임에서 자격 증명을 사용할 수 없습니다.
SEC_E_NOT_OWNER
함수의 호출자에게 필요한 자격 증명이 없습니다.
SEC_E_SECPKG_NOT_FOUND
요청된 보안 패키지 가 없습니다.
SEC_E_UNKNOWN_CREDENTIALS
패키지에 제공된 자격 증명이 인식되지 않았습니다.

 

설명

AcquireCredentialsHandle(일반) 함수는 제한된 특정 위임에서 사용하는 사용자 또는 클라이언트와 같은 보안 주체의 자격 증명에 대한 핸들을 반환합니다. 이는 기존 자격 증명에 대한 핸들이거나 함수가 새 자격 증명 집합을 만들어 반환할 수 있습니다. 이 핸들은 AcceptSecurityContext(일반) 및 InitializeSecurityContext(일반) 함수 에 대한 후속 호출에서 사용할 수 있습니다.

일반적으로 AcquireCredentialsHandle(일반) 은 프로세스가 동일한 컴퓨터에 로그온한 다른 사용자의 자격 증명에 대한 핸들을 가져오는 것을 허용하지 않습니다. 그러나 SE_TCB_NAME 권한이 있는 호출자에게는 기존 로그온 세션 토큰의 LUID( 로그온 식별자 )를 지정하여 해당 세션의 자격 증명에 대한 핸들을 가져올 수 있습니다. 일반적으로 로그온한 사용자를 대신하여 작동해야 하는 커널 모드 모듈에서 사용됩니다.

패키지는 RPC 런타임 전송에서 제공하는 pGetKeyFn 에서 함수를 호출할 수 있습니다. 전송에서 자격 증명을 검색하는 콜백 개념을 지원하지 않는 경우 이 매개 변수는 NULL이어야 합니다.

커널 모드 호출자의 경우 다음과 같은 차이점을 고려해야 합니다.

  • 두 문자열 매개 변수는 유니코드 문자열이어야 합니다.
  • 버퍼 값은 풀이 아닌 프로세스 가상 메모리에 할당되어야 합니다.

반환된 자격 증명 사용을 마치면 FreeCredentialsHandle 함수를 호출하여 자격 증명에서 사용하는 메모리를 해제합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버
Windows Server 2003 [데스크톱 앱만 해당]
헤더
Sspi.h(Security.h 포함)
라이브러리
Secur32.lib
DLL
Secur32.dll
유니코드 및 ANSI 이름
AcquireCredentialsHandleW (유니코드) 및 AcquireCredentialsHandleA (ANSI)

추가 정보

SSPI 함수

AcceptSecurityContext(일반)

InitializeSecurityContext(일반)

FreeCredentialsHandle