다음을 통해 공유


SpAcceptLsaModeContextFn 콜백 함수(ntsecpkg.h)

서버 및 클라이언트에서 공유하는 보안 컨텍스트 를 만드는 데 사용되는 서버 디스패치 함수입니다.

SpAcceptLsaModeContext 함수는 서버가 보안 지원 공급자 인터페이스AcceptSecurityContext(일반) 함수를 호출할 때 호출됩니다.

구문

SpAcceptLsaModeContextFn Spacceptlsamodecontextfn;

NTSTATUS Spacceptlsamodecontextfn(
  [in]  LSA_SEC_HANDLE CredentialHandle,
  [in]  LSA_SEC_HANDLE ContextHandle,
  [in]  PSecBufferDesc InputBuffer,
  [in]  ULONG ContextRequirements,
  [in]  ULONG TargetDataRep,
  [out] PLSA_SEC_HANDLE NewContextHandle,
  [out] PSecBufferDesc OutputBuffer,
  [out] PULONG ContextAttributes,
  [out] PTimeStamp ExpirationTime,
  [out] PBOOLEAN MappedContext,
  [out] PSecBuffer ContextData
)
{...}

매개 변수

[in] CredentialHandle

선택 사항입니다. 컨텍스트에 사용할 자격 증명에 대한 핸들입니다.

[in] ContextHandle

선택 사항입니다. 현재 컨텍스트에 대한 핸들입니다.

[in] InputBuffer

클라이언트의 정보를 포함하는 SecBufferDesc 구조체에 대한 포인터입니다.

[in] ContextRequirements

컨텍스트 요구 사항을 나타내는 플래그입니다. 다음 표에는 유효한 값이 나와 있습니다.

의미
ASC_REQ_DELEGATE
서버는 클라이언트를 가장할 수 있습니다.
ASC_REQ_MUTUAL_AUTH
클라이언트와 서버 모두 ID를 증명해야 합니다.
ASC_REQ_REPLAY_DETECT
보안 컨텍스트는 재생된 패킷의 검색을 지원합니다.
ASC_REQ_SEQUENCE_DETECT
보안 컨텍스트는 순서가 다른 메시지의 검색을 지원합니다.
ASC_REQ_USE_SESSION_KEY
세션 키를 협상해야 합니다.
ASC_REQ_PROMPT_FOR_CREDS
클라이언트가 대화형 사용자인 경우 패키지는 가능한 경우 사용자에게 적절한 자격 증명을 묻는 메시지를 표시해야 합니다.
ASC_REQ_USE_SUPPLIED_CREDS
입력 버퍼에는 연결을 인증하는 데 사용해야 하는 패키지별 자격 증명 정보가 포함되어 있습니다.
ASC_REQ_ALLOCATE_MEMORY
패키지는 메모리를 할당해야 합니다. 호출자는 결국 FreeContextBuffer 함수를 호출하여 보안 패키지에서 할당한 메모리를 해제해야 합니다.
ASC_REQ_USE_DCE_STYLE
호출자는 3개 다리 상호 인증 트랜잭션을 예상합니다.
ASC_REQ_DATAGRAM
데이터그램 형식 통신 채널을 사용해야 합니다. 자세한 내용은 Datagram 컨텍스트를 참조하세요.
ASC_REQ_CONNECTION
연결 형식 통신 채널을 사용해야 합니다. 자세한 내용은 연결 지향 컨텍스트를 참조하세요.
ASC_REQ_EXTENDED_ERROR
컨텍스트가 실패하면 오류 응답 메시지를 생성하여 클라이언트로 다시 보냅니다.
ASC_REQ_STREAM
스트림 형식 통신 채널을 사용해야 합니다. 자세한 내용은 Stream 컨텍스트를 참조하세요.
ASC_REQ_INTEGRITY
버퍼 무결성을 확인할 수 있습니다. 그러나 재생된 메시지와 순서가 벗어난 메시지는 검색되지 않습니다.

[in] TargetDataRep

사용할 바이트 순서 지정과 같은 데이터 표현을 나타내는 플래그입니다. SECURITY_NATIVE_DREP 또는 SECURITY_NETWORK_DREP 포함합니다.

[out] NewContextHandle

LSA_SEC_HANDLE 대한 포인터입니다. AcceptSecurityContext에 대한 첫 번째 호출에서 이 포인터는 새 컨텍스트 핸들을 받습니다. 후속 호출에서 NewContextHandleContextHandle 매개 변수에 지정된 핸들과 같을 수 있습니다.

[out] OutputBuffer

클라이언트로 보낼 정보를 수신하는 SecBufferDesc 구조체에 대한 포인터입니다.

[out] ContextAttributes

서버에서 지원하는 컨텍스트 특성을 지정하는 플래그에 대한 포인터입니다. 유효한 값 목록은 ContextRequirements 매개 변수를 참조하세요.

[out] ExpirationTime

컨텍스트의 만료 시간을 수신하는 TimeStamp 에 대한 포인터입니다.

[out] MappedContext

부울 값에 대한 포인터입니다. 보안 패키지가 사용자 모드 SSP/AP 함수를 구현하는 경우 MappedContextTRUE로 설정합니다.

[out] ContextData

선택 사항입니다. 사용자 모드 보안 컨텍스트를 만들 때 복사할 컨텍스트별 데이터를 수신하는 SecBuffer 구조체에 대한 포인터입니다. AllocateLsaHeap 함수를 사용하여 ContextData에 대한 메모리를 할당해야 합니다. LSA( 로컬 보안 기관 )는 메모리를 해제합니다.

반환 값

SpAcceptLsaModeContext 함수가 성공하고 보안 컨텍스트를 설정하는 데 더 이상 처리가 필요하지 않은 경우 STATUS_SUCCESS 반환합니다. 추가 처리가 필요한 경우 함수는 SEC_I_CONTINUE_NEEDED 반환해야 합니다.

함수가 다른 이유로 보안 컨텍스트를 만들지 못하는 경우 이유를 나타내는 NTSTATUS 코드를 반환합니다.

설명

SpInitLsaModeContext 는 보안 컨텍스트를 만들기 위한 클라이언트 쪽 함수입니다.

SSP/AP는 SpAcceptLsaModeContext 함수를 구현해야 합니다. 구현에 지정된 실제 이름은 개발자에게 달려 있습니다.

SpAcceptLsaModeContext 함수에 대한 포인터는 SpLsaModeInitialize 함수에서 받은 SECPKG_FUNCTION_TABLE 구조에서 사용할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 ntsecpkg.h

추가 정보

AllocateLsaHeap

SpInitLsaModeContext

SpLsaModeInitialize