Partilhar via


Contextos de fluxo

Os contextos de fluxo lidam com os protocolos seguros orientados a fluxo, como SSL ou PCT. No interesse de compartilhar a mesma interface e gerenciamento de credenciais semelhantes, o SSPI fornece suporte para contextos de fluxo. O protocolo de segurança incorpora o esquema de autenticação de fluxo e os formatos de registro.

Para fornecer protocolos orientados a fluxo, pacotes de segurança que dão suporte a contextos de fluxo têm as seguintes características de processo:

  • O pacote define o sinalizador SECPKG_FLAG_STREAM para indicar que ele dá suporte à semântica de fluxo.

  • Os aplicativos de transporte solicitam semântica de fluxo definindo os sinalizadores ISC_REQ_STREAM e ASC_REQ_STREAM nas chamadas para as funçõesInitializeSecurityContext (Geral) eAcceptSecurityContext (Geral).

  • O aplicativo chama a funçãoQueryContextAttributes (Geral) com uma estrutura SecPkgContext_StreamSizes para consultar o contexto de segurança para o número de buffers a serem fornecidos e os tamanhos a serem reservados para cabeçalhos ou trailers.

  • O aplicativo fornece descritores de buffer de sobra durante o processamento real dos dados. Ao especificar a semântica de fluxo, o chamador indica a vontade de fazer processamento extra para que o pacote de segurança possa lidar com o bloqueio das mensagens. Em essência, para as funções MakeSignature e VerifySignature, o chamador passa uma lista de buffers. Quando uma mensagem é recebida de um canal orientado a fluxo (como uma porta TCP), o chamador passa em uma lista de buffers da seguinte maneira.

    Buffer Comprimento Tipo de buffer
    1 Comprimento da Mensagem SECBUFFER_DATA
    2 0 SECBUFFER_EMPTY
    3 0 SECBUFFER_EMPTY
    4 0 SECBUFFER_EMPTY
    5 0 SECBUFFER_EMPTY

     

    Em seguida, o pacote de segurança funciona noblob. Se a função retornar com êxito, a lista de buffers será semelhante à seguinte.

    Buffer Comprimento Tipo de buffer
    1 Comprimento do cabeçalho SECBUFFER_STREAM_HEADER
    2 Comprimento dos dados SECBUFFER_DATA
    3 Comprimento do trailer SECBUFFER_STREAM_TRAILER
    4 0 SECBUFFER_EMPTY
    5 0 SECBUFFER_EMPTY

     

    O pacote também pode ter retornado o buffer nº 4 com tamanho x e tipo de buffer SECBUFFER_EXTRA indicando que os dados nesse buffer fazem parte do próximo registro e ainda não foram processados. Por outro lado, se a função de mensagem retornar o código de erro SEC_E_INCOMPLETE_MESSAGE, a lista de buffers retornada será semelhante à seguinte.

    Buffer Comprimento Tipo de buffer
    1 x SECBUFFER_MISSING

     

    Isso indica que mais dados foram necessários para processar o registro. Ao contrário da maioria dos erros retornados de uma função de mensagem, esse tipo de buffer não indica que o contexto foi comprometido. Em vez disso, indica que mais dados são necessários. pacotes de segurança não devem atualizar seusde estadonessa condição.

    Da mesma forma, no lado remetente da comunicação, o chamador pode chamar a função MakeSignature. O pacote de segurança pode precisar realocar o buffer ou copiar as coisas ao redor. O chamador pode ser mais eficiente fornecendo uma lista de buffers da seguinte maneira.

    Buffer Comprimento Tipo
    1 Comprimento do cabeçalho SECBUFFER_STREAM_HEADER
    2 Comprimento dos dados SECBUFFER_DATA
    3 Comprimento do trailer SECBUFFER_STREAM_TRAILER

     

    Isso permite que o chamador use os buffers com mais eficiência. Ao chamar a função QueryContextAttributes para determinar a quantidade de espaço a reservar antes de chamar MakeSignature, a operação é mais eficiente para o aplicativo e o pacote de segurança.