SaslInitializeSecurityContextA 함수(sspi.h)

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

구문

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

매개 변수

[in] phCredential

에서 반환한 자격 증명 에 대한 핸들입니다.
보안 컨텍스트를 빌드하는 데 사용되는 AcquireCredentialsHandle 함수입니다. SaslInitializeSecurityContext 함수를 사용하려면 최소한 OUTBOUND 자격 증명이 필요합니다.

[in] phContext

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

[in] pszTargetName

컨텍스트의 대상을 나타내는 유니코드 또는 ANSI 문자열에 대한 포인터입니다.

[in] fContextReq

컨텍스트의 요구 사항을 나타내는 비트 플래그입니다. 이 매개 변수에 사용되는 플래그에는 ISC_REQ_ 접두사로 지정됩니다. 예: ISC_REQ_DELEGATE. 다음 특성 플래그의 조합을 지정합니다.

의미
ISC_REQ_REPLAY_DETECT
재생된 패킷을 검색합니다.
ISC_REQ_SEQUENCE_DETECT
시퀀스에서 수신된 메시지를 검색합니다.
ISC_REQ_CONFIDENTIALITY
메시지를 암호화합니다.
ISC_REQ_STREAM
스트림 지향 연결을 지원합니다.
ISC_REQ_EXTENDED_ERROR
오류가 발생하면 원격 당사자에게 알림이 표시됩니다.
ISC_REQ_CONNECTION
보안 컨텍스트는 메시지 서식을 처리하지 않습니다.
ISC_REQ_MUTUAL_AUTH
클라이언트 및 서버가 인증됩니다.
ISC_REQ_INTEGRITY
메시지에 서명하고 서명을 확인합니다.
 

다양한 특성에 대한 자세한 내용은 컨텍스트 요구 사항을 참조하세요.

[in] Reserved1

예약된 값; 0이어야 합니다.

[in] TargetDataRep

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

[in] pInput

패키지에 대한 입력으로 제공된 버퍼에 대한 포인터를 포함하는 SecBufferDesc 구조체에 대한 포인터입니다. 함수에 대한 첫 번째 호출에서 포인터가 NULL 이어야 합니다. 함수에 대한 후속 호출에서는 원격 피어에서 반환된 토큰을 보유하기에 충분한 메모리로 할당된 버퍼에 대한 포인터입니다.

SASL에는 서버에서 받은 챌린지가 포함된 SECBUFFER_TOKEN 형식의 단일 버퍼가 필요합니다.

[in] Reserved2

예약된 값; 0이어야 합니다.

[out] phNewContext

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

[in, out] pOutput

출력 데이터를 수신하는 SecBuffer 구조체에 대한 포인터를 포함하는 SecBufferDesc 구조체에 대한 포인터입니다. 버퍼가 입력에 SEC_READWRITE 입력된 경우 출력에 있습니다. 시스템은 요청된 경우(ISC_REQ_ALLOCATE_MEMORY 통해) 보안 토큰에 대한 버퍼를 할당하고 보안 토큰에 대한 버퍼 설명자의 주소를 채웁니다.

[out] pfContextAttr

설정된 컨텍스트특성을 나타내는 비트 플래그 집합을 수신하는 변수에 대한 포인터입니다. 다양한 특성에 대한 설명은 컨텍스트 요구 사항을 참조하세요.

이 매개 변수에 사용되는 플래그에는 ISC_RET_DELEGATE 같은 ISC_RET_ 접두사로 지정됩니다.

유효한 값 목록은 fContextReq 매개 변수를 참조하세요.

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

참고 특정 컨텍스트 특성은 원격 피어와 협상하는 동안 변경 될 수 있습니다.
 

[out, optional] ptsExpiry

컨텍스트의 만료 시간을 수신하는 TimeStamp 구조체에 대한 포인터입니다. 보안 패키지는 항상 로컬 시간에 이 값을 반환하는 것이 좋습니다. 이 매개 변수는 선택 사항이며 단기 클라이언트에 대해 NULL 을 전달해야 합니다.

반환 값

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

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

설명

참고

sspi.h 헤더는 SAslInitializeSecurityContext를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

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