SspiAcceptSecurityContextAsync 함수(sspi.h)
SspiAcceptSecurityContextAsync 함수를 사용하면 전송 애플리케이션의 서버 구성 요소가 서버와 원격 클라이언트 간에 보안 컨텍스트를 비동기적으로 설정할 수 있습니다. 원격 클라이언트는 SspiInitializeSecurityContextAsync 함수를 호출하여 보안 컨텍스트를 설정하는 프로세스를 비동기적으로 시작합니다.
참고
이 함수는AcceptSecurityContext 함수에 대한 비동기 함수 역할을 합니다.
구문
SECURITY_STATUS SspiAcceptSecurityContextAsync(
SspiAsyncContext *AsyncContext,
PCredHandle phCredential,
PCtxtHandle phContext,
PSecBufferDesc pInput,
unsigned long fContextReq,
unsigned long TargetDataRep,
PCtxtHandle phNewContext,
PSecBufferDesc pOutput,
unsigned long *pfContextAttr,
PTimeStamp ptsExpiry
);
매개 변수
AsyncContext
비동기 호출 컨텍스트입니다.
phCredential
서버 자격 증명에 대한 핸들입니다. 이 핸들을 검색하기 위해 서버는 SECPKG_CRED_INBOUND 또는 SECPKG_CRED_BOTH 플래그 집합을 사용하여 SspiAcquireCredentialsHandleAsync 함수를 호출합니다.
phContext
CtxtHandle 구조체에 대한 포인터입니다. SspiAcceptSecurityContextAsync에 대한 첫 번째 호출에서 이 포인터는 NULL입니다. 후속 호출에서 phContext 는 첫 번째 호출에 의해 phNewContext 매개 변수에 반환된 부분적으로 구성된 컨텍스트를 지정합니다.
pInput
SspiInitializeSecurityContextAsync에 대한 클라이언트 호출에 의해 생성된 SecBufferDesc 구조체에 대한 포인터입니다. 구조체에는 입력 버퍼 설명자가 포함됩니다.
첫 번째 버퍼는 SECBUFFER_TOKEN 형식이어야 하며 클라이언트에서 받은 보안 토큰을 포함해야 합니다. 두 번째 버퍼는 SECBUFFER_EMPTY 형식이어야 합니다.
fContextReq
컨텍스트를 설정하는 데 서버에서 요구하는 특성을 지정하는 비트 플래그입니다.
매개 변수 값의 전체 목록은 AcceptSecurityContext: fContextReq 를 참조하세요.
TargetDataRep
대상의 바이트 순서 지정과 같은 데이터 표현입니다. 이 매개 변수는 SECURITY_NATIVE_DREP 또는 SECURITY_NETWORK_DREP 수 있습니다.
phNewContext
CtxtHandle 구조체에 대한 포인터입니다. SspiAcceptSecurityContextAsync에 대한 첫 번째 호출에서 이 포인터는 새 컨텍스트 핸들을 받습니다. 후속 호출에서 phNewContext 는 phContext 매개 변수에 지정된 핸들과 같을 수 있습니다.
pOutput
출력 버퍼 설명 자를 포함하는 SecBufferDesc 구조체에 대한 포인터입니다. 이 버퍼는 SspiInitializeSecurityContextAsync에 대한 추가 호출에 대한 입력을 위해 클라이언트로 전송됩니다. 함수가 SEC_E_OK 반환하는 경우에도 출력 버퍼가 생성될 수 있습니다. 생성된 모든 버퍼를 클라이언트 애플리케이션으로 다시 보내야 합니다.
출력 시 이 버퍼는 비동기 보안 컨텍스트에 대한 토큰을 받습니다. 토큰을 클라이언트로 보내야 합니다. 함수는 SECBUFFER_EXTRA 형식의 버퍼를 반환할 수도 있습니다.
pfContextAttr
설정된 컨텍스트의 특성을 나타내는 비트 플래그 집합에 대한 포인터입니다.
특성 에 대한 설명은 AcceptSecurityContext: pfContextAttr 를 참조하세요.
ptsExpiry
컨텍스트의 만료 시간을 수신하는 TimeStamp 구조체에 대한 포인터입니다.
AcceptSecurityContext: ptsExpiry를 참조하세요.
반환 값
보안 컨텍스트를 설정하기 위한 비동기 요청이 실행을 위해 성공적으로 큐에 대기 된 경우 SEC_E_OK 반환합니다. 그렇지 않으면 큐에 대기하려고 시도하여 생성된 오류를 반환합니다. 작업의 상태 검색하려면 SspiGetAsyncCallStatus를 사용합니다.
클라이언트에서 받은 보안 컨텍스트가 수락된 경우 SspiGetAsyncCallStatus는 아래 표에 SEC_E_OK 또는 SSPI 코드 중 하나를 반환합니다. 그렇지 않으면 호출이 아직 진행 중인 경우 SEC_I_ASYNC_CALL_PENDING 반환되거나 아래 두 번째 표에 있는 다음과 같은 심각한 오류 코드가 반환됩니다.
반환 코드 |
설명 |
---|---|
SEC_E_INCOMPLETE_MESSAGE 0x80090318L |
함수가 성공했습니다. 입력 버퍼의 데이터가 불완전합니다. 애플리케이션은 클라이언트에서 추가 데이터를 읽고 SspiAcceptSecurityContextAsync를 다시 호출해야 합니다. |
SEC_I_COMPLETE_AND_CONTINUE 0x00090314L |
함수가 성공했습니다. 서버는 CompleteAuthToken 을 호출하고 출력 토큰을 클라이언트에 전달해야 합니다. 그런 다음 서버는 SspiAcceptSecurityContextAsync를 다시 호출하기 전에 클라이언트에서 반환 토큰을 기다려야 합니다. |
SEC_I_COMPLETE_NEEDED 0x00090313L |
함수가 성공했습니다. 서버는 CompleteAuthToken을 호출하기 전에 클라이언트에서 메시지 빌드를 완료해야 합니다. |
SEC_I_CONTINUE_NEEDED 0x00090312L |
함수가 성공했습니다. 서버는 출력 토큰을 클라이언트에 보내고 반환된 토큰을 기다려야 합니다. 반환된 토큰은 SspiAcceptSecurityContextAsync에 대한 다른 호출을 위해 pInput 으로 전달되어야 합니다. |
심각한 오류 코드
반환 코드 |
설명 |
---|---|
SEC_E_INSUFFICIENT_MEMORY 0x80090300L |
함수가 실패했습니다. 요청된 작업을 완료하는 데 사용할 수 있는 메모리가 부족합니다. |
SEC_E_INTERNAL_ERROR 0x80090304L |
함수가 실패했습니다. SSPI 오류 코드에 매핑되지 않은 오류가 발생했습니다. |
SEC_E_INVALID_HANDLE 0x80100003L |
함수가 실패했습니다. 함수에 전달된 핸들이 잘못되었습니다. |
SEC_E_INVALID_TOKEN 0x80090308L |
함수가 실패했습니다. 함수에 전달된 토큰이 잘못되었습니다. |
SEC_E_LOGON_DENIED 0x8009030CL |
로그온에 실패했습니다. |
SEC_E_NO_AUTHENTICATING_AUTHORITY 0x80090311L |
함수가 실패했습니다. 인증을 위해 연락할 수 있는 권한은 없습니다. 이는 다음과 같은 조건 때문일 수 있습니다.
|
SEC_E_NO_CREDENTIALS 0x8009030EL |
함수가 실패했습니다. phCredential 매개 변수에 지정된 자격 증명 핸들이 잘못되었습니다. |
SEC_E_UNSUPPORTED_FUNCTION 0x80090302L |
함수가 실패했습니다. fContextReq 매개 변수는 잘못된 컨텍스트 특성 플래그(ASC_REQ_DELEGATE 또는 ASC_REQ_PROMPT_FOR_CREDS)를 지정했습니다. |
설명
SspiAcceptSecurityContextAsync 함수는 SspiInitializeSecurityContextAsync 함수에 대응하는 서버 함수입니다.
호출자는 최종 컨텍스트 특성이 충분한지 여부를 결정합니다. 예를 들어 기밀성(암호화)을 요청했지만 설정할 수 없는 경우 일부 애플리케이션은 연결을 즉시 종료하도록 선택할 수 있습니다. 보안 컨텍스트를 설정할 수 없는 경우 서버는 SspiDeleteSecurityContextAsync 함수를 호출하여 부분적으로 생성된 컨텍스트를 해제해야 합니다.
추가 설명 은 AcceptSecurityContext 를 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows 10 버전 1607 [커널 모드 드라이버만 해당] |
지원되는 최소 서버 | Windows Server 2016 [커널 모드 드라이버만 해당] |
머리글 | sspi.h |
추가 정보
SspiAcquireCredentialsHandleAsync
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기