Compartilhar via


Inicialização de contexto do servidor

Assim como o cliente, o servidor também adquire um identificador de credenciais para estar pronto para responder a uma solicitação de autenticação de entrada do cliente. As credenciais do servidor são usadas para autenticar o servidor no cliente em protocolos de segurança que dão suporte à autenticação do servidor ou à autenticação mútua. O servidor obtém um identificador para suas credenciais definidas pela conta de serviço usada para iniciar o servidor. Ele faz isso chamando AcquireCredentialsHandle.

O servidor pode adquirir seu identificador de credenciais e, em seguida, entrar em um estado de escuta ou pode esperar em um estado de escuta até que uma solicitação de conexão chegue e, em seguida, adquirir um identificador de credenciais de entrada. Para obter mais informações sobre as funções de credenciais, consulte Gerenciamento de credenciais.

Quando o servidor recebe uma mensagem de solicitação de conexão de um cliente, ele cria um contexto de segurança local para o cliente usando AcceptSecurityContext (Geral). O servidor usa esse contexto de segurança local para realizar solicitações futuras pelo mesmo cliente. Para obter mais informações sobre funções de contexto, consulte Gerenciamento de Contexto.

O servidor verifica o status de retorno e o descritor de buffer de saída para garantir que não haja erros até o momento e pode rejeitar a solicitação de conexão se houver erros. Se houver informações no buffer de saída retornadas por AcceptSecurityContext (Geral), ele agrupa esse buffer em uma mensagem de resposta para o cliente.

Qualquer buffer de saída de AcceptSecurityContext (Geral) deve ser enviado de volta para o cliente. Além disso, se o status de retorno exigir que o protocolo continue (SEC_I_CONTINUE_NEEDED ou SEC_I_COMPLETE_AND_CONTINUE), outra troca de mensagens com o cliente será necessária.

Para pernas adicionais, o servidor aguarda que o cliente responda com outra mensagem. Essa espera pode ser expirada para evitar um ataque de negação de serviço em que um cliente nunca responde propositalmente, fazendo com que um thread de servidor e, em breve, todos os threads do servidor, parem de responder.