Executando a autenticação usando schannel

Todos os protocolos Schannel exigem que o servidor forneça um certificado de uma AC (autoridade de certificação ) confiável como prova de sua identidade. Esse processo é chamado de autenticação de servidor. A autenticação do cliente, em que o cliente fornece uma prova de sua identidade, é opcional e pode ser solicitada pelo servidor a qualquer momento.

Autenticando o servidor

O comportamento padrão do Schannel é usar a função WinVerifyTrust para verificar a integridade e a propriedade do certificado do servidor. Para desabilitar esse recurso, especifique ISC_REQ_MANUAL_CRED_VALIDATION ao chamar a função InitializeSecurityContext (Schannel). Para obter mais informações, consulte Validando manualmente as credenciais do Schannel.

Autenticando o cliente

O Schannel não valida os certificados do cliente; o servidor deve executar essa autenticação manualmente. Normalmente, o servidor marcar a identidade do cliente em um banco de dados que contém informações de conta de usuário. Para servidores que precisam obter a conta de um cliente usando um certificado, consulte Mapeamento de certificados.

Quando o servidor solicita a autenticação do cliente, o cliente deve enviar ao servidor um de seus certificados. Por padrão, o Schannel, sem notificação para o cliente, tentará localizar um certificado do cliente e enviá-lo para o servidor. Para desabilitar esse recurso, os clientes especificam ISC_REQ_USE_SUPPLIED_CREDS ao chamar a função InitializeSecurityContext (Schannel). Quando esse sinalizador for especificado, o Schannel retornará SEC_I_INCOMPLETE_CREDENTIALS ao cliente quando o servidor solicitar autenticação e o cliente não tiver fornecido um certificado anteriormente.