Partilhar via


Criando um contexto de segurança Schannel

Para estabelecer um contexto de segurança que proteja as comunicações entre um cliente e um servidor, ambos devem participar do seguinte processo de troca de informações:

Cliente

  1. O cliente chama a função InitializeSecurityContext (General).
  2. O Schannel começa a criar um contexto de segurança de acordo com as regras do protocolo de segurança selecionado. O código de retorno da função indica se o cliente deve chamar a função novamente. InitializeSecurityContext (Geral) pode retornar um token que representa o contexto.
  3. Se um token foi retornado, o cliente o envia para o servidor.
  4. Quando InitializeSecurityContext (Geral) retorna SEC_E_OK, o cliente conclui o processo. Se a função retornar SEC_I_CONTINUE_NEEDED, o cliente deverá aguardar que o servidor envie um token. Quando o cliente tem o token do servidor, ele deve chamar a função InitializeSecurityContext (General) novamente. (Volte para a etapa 2.)

Servidor

  1. O servidor aguarda que um cliente envie uma mensagem que contém um token de segurança. O servidor passa o token recebido do cliente para a função AcceptSecurityContext (General).
  2. O Schannel se baseia no contexto de segurança parcial representado pelo token. Schannel retorna um token para o servidor e um código de retorno indicando se o servidor deve chamar a função novamente.
  3. Se um token foi retornado, o servidor o envia para o cliente.
  4. Quando AcceptSecurityContext (Geral) retorna SEC_E_OK, o servidor concluiu. Se a função retornar SEC_I_CONTINUE_NEEDED, o servidor deverá aguardar que o cliente envie um token. Quando o servidor tem o token do cliente, o servidor deve chamar novamente a função AcceptSecurityContext (Geral). (Volte para a etapa 2.)

Se qualquer uma das funções retornar um valor diferente de SEC_E_OK, SEC_I_CONTINUE_NEEDED ou SEC_E_INCOMPLETE_MESSAGE (consulte o parágrafo a seguir) ocorreu um erro. O cliente e o servidor devem chamar a funçãoDeleteSecurityContext para excluir o contexto de segurança parcialmente estabelecido.

Um caso especial que pode alterar o processamento do cliente e do servidor é quando pouca ou muita informação é enviada para o cliente ou servidor da outra parte. No caso de pouca informação, ambas as funções retornam SEC_E_INCOMPLETE_MESSAGE. Para obter informações sobre como reconhecer e lidar com informações insuficientes ou em excesso, consulte buffers extras retornados pelo Schannel.

Executando a autenticação usando o Schannel

Certificados de mapeamento

Validação manual das credenciais Schannel