SspiAcquireCredentialsHandleAsyncA 함수(sspi.h)

SspiAcquireCredentialsHandleAsyncA 함수는 보안 주체의 기존 자격 증명에 대한 핸들을 비동기적으로 획득합니다.

이 핸들은 SspiInitializeSecurityContextAsyncSspiAcceptSecurityContextAsync 함수에 필요합니다. 이러한 자격 증명은 여기에 설명되지 않은 시스템 로그온을 통해 설정되는 기존 자격 증명이거나 호출자가 대체 자격 증명을 제공할 수 있습니다.

참고

이 함수는 AcquireCredentialsHandle에 대한 비동기 함수 역할을 합니다.

구문

SECURITY_STATUS SspiAcquireCredentialsHandleAsyncA(
  SspiAsyncContext *AsyncContext,
  LPSTR            pszPrincipal,
  LPSTR            pszPackage,
  unsigned long    fCredentialUse,
  void             *pvLogonId,
  void             *pAuthData,
  SEC_GET_KEY_FN   pGetKeyFn,
  void             *pvGetKeyArgument,
  PCredHandle      phCredential,
  PTimeStamp       ptsExpiry
);

매개 변수

AsyncContext

비동기 호출 컨텍스트입니다.

pszPrincipal

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

pszPackage

이러한 자격 증명을 사용할 보안 패키지 의 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다.

AcquireCredentialsHandleA: pszPackage를 참조하세요.

fCredentialUse

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

의미
SECPKG_CRED_INBOUND 들어오는 서버 자격 증명의 유효성을 검사합니다. SspiInitializeSecurityContextAsync 또는 SspiAcceptSecurityContextAsync가 호출될 때 인증 기관을 사용하여 인바운드 자격 증명의 유효성을 검사할 수 있습니다. 이러한 기관을 사용할 수 없는 경우 함수가 실패하고 SEC_E_NO_AUTHENTICATING_AUTHORITY 반환합니다. 유효성 검사는 패키지별로 다릅니다.
SECPKG_CRED_OUTBOUND 로컬 클라이언트 자격 증명이 나가는 토큰을 준비하도록 허용합니다.

pvLogonId

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

pAuthData

Schannel 및 Negotiate 패키지 모두에 대한 인증 데이터를 지정하는 CREDSSP_CRED 구조체에 대한 포인터입니다.

pGetKeyFn

GetKey() 함수에 대한 포인터입니다.

pvGetKeyArgument

GetKey()에 전달합니다.

phCredential

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

ptsExpiry

선택적 반환된 자격 증명이 만료되는 시간을 수신하는 TimeStamp 구조체에 대한 포인터입니다. 받은 구조체 값은 로컬 시간에 값을 지정해야 하는 보안 패키지에 따라 달라집니다.

반환 값

자격 증명 핸들을 획득하기 위한 비동기 요청이 실행을 위해 성공적으로 큐에 대기 된 경우 SEC_E_OK 반환합니다. 그렇지 않으면 큐에 대기하려고 시도하여 생성된 오류를 반환합니다. 작업의 상태 검색하려면 SspiGetAsyncCallStatus를 사용합니다.

핸들을 가져온 경우 SspiGetAsyncCallStatus는 SEC_E_OK 반환합니다. 그렇지 않으면 호출이 아직 진행 중인 경우 SEC_I_ASYNC_CALL_PENDING 반환되거나 아래 표에 있는 다음과 같은 심각한 오류 코드가 반환됩니다.

반환 코드
설명
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 패키지에 제공된 자격 증명이 인식되지 않았습니다.

설명

SspiAcquireCredentialsHandleAsyncA 함수는 특정 보안 패키지에서 사용하는 사용자 또는 클라이언트와 같은 보안 주체의 자격 증명에 대한 핸들을 반환합니다. 함수는 핸들을 기존 자격 증명 또는 새로 만든 자격 증명으로 반환하고 반환할 수 있습니다. 이 핸들은 SspiAcceptSecurityContextAsyncSspiInitializeSecurityContextAsync 함수에 대한 후속 호출에서 사용할 수 있습니다.

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

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

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

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

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 버전 1607 [커널 모드 드라이버만 해당]
지원되는 최소 서버 Windows Server 2016 [커널 모드 드라이버만 해당]
머리글 sspi.h

추가 정보

AcquireCredentialsHandle

SspiAcceptSecurityContextAsync

SspiFreeCredentialsHandleAsync

SspiInitializeSecurityContextAsync

SSPI 함수