SaslAcceptSecurityContext 함수(sspi.h)

SaslAcceptSecurityContext 함수는 보안 지원 공급자 인터페이스AcceptSecurityContext(일반) 함수에 대한 표준 호출을 래핑하고 SASL 서버 쿠키 만들기를 포함합니다.

구문

SECURITY_STATUS SEC_ENTRY SaslAcceptSecurityContext(
  [in]            PCredHandle    phCredential,
  [in, optional]  PCtxtHandle    phContext,
  [in]            PSecBufferDesc pInput,
  [in]            unsigned long  fContextReq,
  [in]            unsigned long  TargetDataRep,
  [out]           PCtxtHandle    phNewContext,
  [in, out]       PSecBufferDesc pOutput,
  [out]           unsigned long  *pfContextAttr,
  [out, optional] PTimeStamp     ptsExpiry
);

매개 변수

[in] phCredential

서버의 자격 증명에 대한 핸들입니다. 서버는 이 핸들을 검색하기 위해 INBOUND 플래그가 설정된 AcquireCredentialsHandle 함수를 호출합니다.

[in, optional] phContext

CtxtHandle 구조체에 대한 포인터입니다. AcceptSecurityContext(일반)에 대한 첫 번째 호출에서 이 포인터는 NULL입니다. 후속 호출에서 phContext 는 첫 번째 호출에 의해 phNewContext 매개 변수에 반환된 부분적으로 구성된 컨텍스트에 대한 핸들입니다.

[in] pInput

입력 버퍼 설명자를 포함하는 InitializeSecurityContext(일반) 함수에 대한 클라이언트 호출에 의해 생성된 SecBufferDesc 구조체에 대한 포인터입니다.

SASL에는 SECBUFFER_TOKEN 형식의 단일 버퍼 필요합니다. AcceptSecurityContext(일반) 함수에 대한 첫 번째 호출에 대해 버퍼가 비어 있으며 두 번째 호출에 대해 클라이언트에서 받은 챌린지 응답이 포함됩니다.

[in] fContextReq

컨텍스트를 설정하는 데 서버에서 요구하는 특성을 지정하는 비트 플래그입니다. 비트 OR 연산을 사용하여 비트 플래그를 결합할 수 있습니다. 다음 표에서는 가능한 값을 보여 줍니다.

의미
ASC_REQ_CONFIDENTIALITY
메시지를 암호화하고 암호를 해독합니다.

SASL용 다이제스트 SSP에서만 유효합니다.

ASC_REQ_HTTP
HTTP용 다이제스트를 사용합니다. 다이제스트를 SASL 메커니즘으로 사용하려면 이 플래그를 생략합니다.

[in] TargetDataRep

대상의 바이트 순서 지정과 같은 데이터 표현을 나타냅니다. 이 값은 SECURITY_NATIVE_DREP 또는 SECURITY_NETWORK_DREP 수 있습니다.

[out] phNewContext

CtxtHandle 구조체에 대한 포인터입니다. AcceptSecurityContext(일반)에 대한 첫 번째 호출에서 이 포인터는 새 컨텍스트 핸들을 받습니다. 후속 호출에서 phNewContextphContext 매개 변수에 지정된 핸들과 같을 수 있습니다.

[in, out] pOutput

출력 버퍼 설명 자를 포함하는 SecBufferDesc 구조체에 대한 포인터입니다. 이 버퍼는 InitializeSecurityContext(일반)에 대한 추가 호출에 대한 입력을 위해 클라이언트로 전송됩니다. 함수가 SEC_E_OK 반환하는 경우에도 출력 버퍼가 생성될 수 있습니다. 생성된 모든 버퍼를 클라이언트 애플리케이션으로 다시 보내야 합니다.

[out] pfContextAttr

설정된 컨텍스트의 특성을 나타내는 비트 플래그 집합을 수신하는 변수에 대한 포인터입니다. 다양한 특성에 대한 설명은 컨텍스트 요구 사항을 참조하세요. 이 매개 변수에 사용되는 플래그에는 ASC_RET_DELEGATE 같은 ASC_RET 접두사로 지정됩니다.

최종 함수 호출이 성공적으로 반환될 때까지 보안 관련 특성에 대해 검사 않습니다. 보안과 관련이 없는 특성 플래그(예: ASC_RET_ALLOCATED_MEMORY 플래그)는 최종 반환 전에 확인할 수 있습니다.

[out, optional] ptsExpiry

컨텍스트의 만료 시간을 수신하는 TimeStamp 구조체에 대한 포인터입니다. 보안 패키지는 항상 로컬 시간에 이 값을 반환하는 것이 좋습니다.

참고 인증 프로세스의 마지막 호출까지는 협상의 이후 단계에서 추가 정보가 제공되므로 컨텍스트의 만료 시간이 올바르지 않을 수 있습니다. 따라서 ptsTimeStamp 는 함수에 대한 마지막 호출까지 NULL 이어야 합니다.
 

반환 값

호출이 성공적으로 완료되면 이 함수는 SEC_E_OK 반환합니다. 다음 표에서는 몇 가지 가능한 오류 반환 값을 보여줍니다.

반환 코드 설명
SEC_E_ALGORITHM_MISMATCH
Authz 처리는 허용되지 않습니다.
SEC_E_INSUFFICIENT_MEMORY
메모리가 부족하여 요청을 완료할 수 없습니다.
SEC_E_INVALID_TOKEN
pOutput 매개 변수에 토큰 버퍼가 없거나 메시지의 암호를 해독하지 못했습니다.

설명

SEC_E_OK 반환하는 AcceptSecurityContext(일반) 함수의 최종 호출이 식별됩니다. 반환 토큰이 생성되면 최종 토큰을 처리할 수 있도록 클라이언트로의 왕복 1회 동안 SASL 처리가 일시 중단됩니다. 교환이 완료되면 SEC_E_CONTINUE_NEEDED SSPI 메시지 함수로 암호화된 추가 SASL 서버 쿠키를 사용하여 애플리케이션에 반환됩니다. 초기 서버 쿠키는 INTEGRITY 및 PRIVACY가 지원되는지를 나타냅니다. 이 초기 서버 쿠키는 클라이언트에서 처리되고 클라이언트는 클라이언트가 요청하는 서비스를 나타내는 클라이언트 쿠키를 반환합니다. 그러면 클라이언트 쿠키가 서버에서 암호 해독되고 최종 서비스는 다음 메시지 트래픽에 대해 결정됩니다.

요구 사항

   
지원되는 최소 클라이언트 지원되는 버전 없음
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 sspi.h(Security.h 포함)
라이브러리 Secur32.lib
DLL Secur32.dll