다음을 통해 공유


스트림 컨텍스트

스트림 컨텍스트는 SSL 또는 PCT와 같은 보안 스트림 지향 프로토콜을 처리합니다. 동일한 인터페이스 및 유사한 자격 증명 관리를 공유하기 위해 SSPI는 스트림 컨텍스트에 대한 지원을 제공합니다. 보안 프로토콜은 스트림 인증 체계와 레코드 형식을 모두 통합합니다.

스트림 지향 프로토콜을 제공하기 위해 스트림 컨텍스트 를 지원하는 보안 패키지 에는 다음과 같은 프로세스 특성이 있습니다.

  • 패키지는 SECPKG_FLAG_STREAM 플래그를 설정하여 스트림 의미 체계를 지원함을 나타냅니다.

  • 전송 애플리케이션은 InitializeSecurityContext(일반) 및 AcceptSecurityContext(일반) 함수에 대한 호출에서 ISC_REQ_STREAM 및 ASC_REQ_STREAM 플래그를 설정하여 스트림 의미 체계를 요청 합니다.

  • 애플리케이션은 SecPkgContext_StreamSizes 구조를 사용하여 QueryContextAttributes(일반) 함수를 호출하여 제공할 버퍼 수와 헤더 또는 트레일러에 예약할 크기에 대한 보안 컨텍스트를 쿼리합니다.

  • 애플리케이션은 데이터의 실제 처리 중에 예비할 버퍼 설명자를 제공합니다. 호출자는 스트림 의미 체계를 지정하여 보안 패키지 가 메시지 차단을 처리할 수 있도록 추가 처리를 수행하려는 의지를 나타냅니다. 기본적으로 MakeSignatureVerifySignature 함수의 경우 호출자는 버퍼 목록을 전달합니다. 스트림 지향 채널(예: TCP 포트)에서 메시지를 받으면 호출자는 다음과 같이 버퍼 목록을 전달합니다.

    Buffer 길이 버퍼 유형
    1 메시지 길이 SECBUFFER_DATA
    2 0 SECBUFFER_EMPTY
    3 0 SECBUFFER_EMPTY
    4 0 SECBUFFER_EMPTY
    5 0 SECBUFFER_EMPTY

     

    그런 다음, 보안 패키지는 BLOB에서 작동합니다. 함수가 성공적으로 반환되면 버퍼 목록은 다음과 같습니다.

    Buffer 길이 버퍼 유형
    1 머리글 길이 SECBUFFER_STREAM_HEADER
    2 데이터 길이 SECBUFFER_DATA
    3 예고편 길이 SECBUFFER_STREAM_TRAILER
    4 0 SECBUFFER_EMPTY
    5 0 SECBUFFER_EMPTY

     

    패키지는 길이가 x이고 버퍼 형식이 SECBUFFER_EXTRA 버퍼 #4를 반환하여 이 버퍼의 데이터가 다음 레코드의 일부이며 아직 처리되지 않았음을 나타낼 수도 있습니다. 반대로 메시지 함수가 SEC_E_INCOMPLETE_MESSAGE 오류 코드를 반환하는 경우 반환된 버퍼 목록은 다음과 같습니다.

    Buffer 길이 버퍼 유형
    1 x SECBUFFER_MISSING

     

    레코드를 처리하는 데 더 많은 데이터가 필요했음을 나타냅니다. 메시지 함수에서 반환된 대부분의 오류와 달리 이 버퍼 유형은 컨텍스트가 손상되었음을 나타내지 않습니다. 대신 더 많은 데이터가 필요하다는 것을 나타냅니다. 보안 패키지는 이 조건에서 상태를 업데이트해서는 안 됩니다.

    마찬가지로 통신의 보낸 사람 쪽에서 호출자는 MakeSignature 함수를 호출할 수 있습니다. 보안 패키지는 버퍼를 다시 할당하거나 주변 항목을 복사해야 할 수 있습니다. 호출자는 다음과 같이 버퍼 목록을 제공하여 더 효율적일 수 있습니다.

    Buffer 길이 형식
    1 머리글 길이 SECBUFFER_STREAM_HEADER
    2 데이터 길이 SECBUFFER_DATA
    3 예고편 길이 SECBUFFER_STREAM_TRAILER

     

    이렇게 하면 호출자가 버퍼를 보다 효율적으로 사용할 수 있습니다. MakeSignature를 호출하기 전에 예약할 공간의 양을 결정하기 위해 QueryContextAttributes 함수를 호출하면 애플리케이션 및 보안 패키지에 대한 작업이 더 효율적입니다.