SpInitLsaModeContextFn 콜백 함수(ntsecpkg.h)
SpInitLsaModeContext 함수는 서버와 클라이언트 간에 보안 컨텍스트를 설정하는 데 사용되는 클라이언트 디스패치 함수입니다.
SpInitLsaModeContext 함수는 클라이언트가 보안 지원 공급자 인터페이스의 InitializeSecurityContext(일반) 함수를 호출할 때 호출됩니다.
구문
SpInitLsaModeContextFn Spinitlsamodecontextfn;
NTSTATUS Spinitlsamodecontextfn(
[in] LSA_SEC_HANDLE CredentialHandle,
[in] LSA_SEC_HANDLE ContextHandle,
[in] PUNICODE_STRING TargetName,
[in] ULONG ContextRequirements,
[in] ULONG TargetDataRep,
[in] PSecBufferDesc InputBuffers,
[out] PLSA_SEC_HANDLE NewContextHandle,
[out] PSecBufferDesc OutputBuffers,
[out] PULONG ContextAttributes,
[out] PTimeStamp ExpirationTime,
[out] PBOOLEAN MappedContext,
[out] PSecBuffer ContextData
)
{...}
매개 변수
[in] CredentialHandle
선택 사항입니다. 컨텍스트에 사용할 자격 증명 을 처리합니다. ContextHandle 매개 변수가 NULL이 아닌 경우 CredentialHandle은 NULL일 수 있습니다.
[in] ContextHandle
선택 사항입니다. 이 컨텍스트의 기초로 사용할 컨텍스트를 처리합니다. CredentialHandle 매개 변수가 NULL이 아닌 경우 ContextHandle은 NULL일 수 있습니다.
[in] TargetName
선택 사항입니다. 컨텍스트의 대상 이름을 포함하는 UNICODE_STRING 대한 포인터입니다. TargetName의 콘텐츠는 패키지별로 지정되며 LSA에서 해석되지 않습니다.
[in] ContextRequirements
클라이언트에 필요한 컨텍스트 특성을 나타내는 플래그입니다. 실제 컨텍스트 특성은 ContextAttributes 매개 변수에 반환됩니다.
다음 표에는 유효한 값이 나와 있습니다.
값 | 의미 |
---|---|
|
서버는 클라이언트를 가장할 수 있습니다. |
|
클라이언트와 서버 모두 ID를 증명해야 합니다. |
|
보안 컨텍스트는 재생된 패킷의 검색을 지원합니다. |
|
보안 컨텍스트는 순서가 다른 메시지의 검색을 지원합니다. |
|
새 세션 키를 협상해야 합니다. |
|
클라이언트가 대화형 사용자인 경우 패키지는 가능한 경우 사용자에게 적절한 자격 증명을 묻는 메시지를 표시해야 합니다. |
|
입력 버퍼에는 연결을 인증하는 데 사용해야 하는 패키지별 자격 증명 정보가 포함되어 있습니다. |
|
패키지는 메모리를 할당해야 합니다. 호출자는 결국 FreeContextBuffer 함수를 호출하여 패키지에서 할당한 메모리를 해제해야 합니다. |
|
호출자는 3개 다리 상호 인증 트랜잭션을 예상합니다. |
|
데이터그램 형식 통신 채널을 사용해야 합니다. 자세한 내용은 Datagram 컨텍스트를 참조하세요. |
|
연결 형식 통신 채널을 사용해야 합니다. 자세한 내용은 연결 지향 컨텍스트를 참조하세요. |
|
컨텍스트가 실패하면 오류 회신 메시지를 생성하여 클라이언트로 다시 보냅니다. |
|
스트림 형식 통신 채널을 사용해야 합니다. 자세한 내용은 Stream 컨텍스트를 참조하세요. |
|
버퍼 무결성이 확인되었습니다. 그러나 재생되고 순서가 벗어난 메시지는 검색되지 않습니다. |
[in] TargetDataRep
대상의 바이트 순서 지정과 같은 데이터 표현을 나타내는 플래그입니다. SECURITY_NATIVE_DREP 또는 SECURITY_NETWORK_DREP 포함합니다.
[in] InputBuffers
서버의 이전 회신 메시지를 포함하는 SecBufferDesc 구조체에 대한 포인터입니다. 이 함수를 처음 InputBuffers 매개 변수라고 하는 것은 NULL입니다.
[out] NewContextHandle
새 보안 컨텍스트에 대한 핸들을 수신하는 포인터입니다. 보안 컨텍스트 사용을 마쳤으면 SpDeleteContext 함수를 호출하여 핸들을 해제합니다.
[out] OutputBuffers
서버에 다시 전달할 보안 토큰을 포함하는 SecBufferDesc 구조체에 대한 포인터입니다.
[out] ContextAttributes
새 컨텍스트의 특성을 지정하는 플래그에 대한 포인터입니다. 클라이언트는 ContextRequirements 매개 변수를 사용하여 특성 집합을 요청합니다. ContextRequirements 플래그가 ContextAttributes 플래그와 일치하지 않는 경우 클라이언트는 계속할지 종료할지 결정해야 합니다. 유효한 플래그의 전체 목록은 컨텍스트 요구 사항을 참조하세요.
[out] ExpirationTime
새 컨텍스트의 만료 시간을 수신하는 TimeStamp 에 대한 포인터입니다.
[out] MappedContext
부울 값에 대한 포인터입니다. 보안 패키지가 사용자 모드 SSP/AP 함수를 구현하는 경우 MappedContext를 TRUE로 설정합니다.
[out] ContextData
사용자 모드 보안 컨텍스트를 만들 때 복사할 데이터를 수신하는 SecBuffer 구조체에 대한 포인터입니다. AllocateLsaHeap 함수를 사용하여 ContextData에 대한 메모리를 할당합니다. LSA는 메모리를 해제합니다.
반환 값
함수가 성공하고 더 이상 처리가 필요하지 않은 경우 STATUS_SUCCESS 반환합니다. 처리가 완료되지 않은 경우 함수는 SEC_I_CONTINUE_NEEDED 반환해야 합니다. 이 값이 반환되면 호출자는 InitializeSecurityContext(일반) 함수를 다시 호출해야 합니다.
함수가 다른 이유로 보안 컨텍스트 를 만들지 못하는 경우 실패한 이유를 나타내는 NTSTATUS 코드를 반환해야 합니다.
설명
SpAcceptLsaModeContext 함수는 컨텍스트를 만들기 위한 서버 쪽 함수입니다.
SSP/AP 는 SpInitLsaModeContext 함수를 구현해야 합니다. 그러나 구현에 지정된 실제 이름은 개발자에게 달려 있습니다.
SpInitLsaModeContext 함수에 대한 포인터는 SpLsaModeInitialize 함수에서 받은 SECPKG_FUNCTION_TABLE 구조체에서 사용할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | ntsecpkg.h |