Compartir a través de


Creación de un contexto de seguridad de Schannel

Para establecer un contexto de seguridad que protegerá las comunicaciones entre un cliente y un servidor, ambos deben participar en el siguiente proceso de intercambio de información:

Remoto

  1. El cliente llama a la función InitializeSecurityContext (General).
  2. Schannel comienza a crear un contexto de seguridad según las reglas del protocolo de seguridad seleccionado. El código devuelto de la función indica si el cliente debe llamar a la función de nuevo. InitializeSecurityContext (General) puede devolver un token que representa el contexto.
  3. Si se devolvió un token, el cliente lo envía al servidor.
  4. Cuando InitializeSecurityContext (General) devuelve SEC_E_OK, el cliente se realiza. Si la función devuelve SEC_I_CONTINUE_NEEDED, el cliente debe esperar a que el servidor lo envíe un token. Cuando el cliente tiene el token del servidor, debe volver a llamar a la funciónInitializeSecurityContext (General). (Vuelva al paso 2).

Servidor

  1. El servidor espera a que un cliente envíe un mensaje que contenga un token de seguridad. El servidor pasa el token recibido del cliente a la función AcceptSecurityContext (General).
  2. Schannel se basa en el contexto de seguridad parcial representado por el token. Schannel devuelve un token al servidor y un código de retorno que indica si el servidor debe llamar a la función de nuevo.
  3. Si se devolvió un token, el servidor lo envía al cliente.
  4. Cuando AcceptSecurityContext (General) devuelve SEC_E_OK, se realiza el servidor. Si la función devuelve SEC_I_CONTINUE_NEEDED, el servidor debe esperar a que el cliente lo envíe un token. Cuando el servidor tiene el token del cliente, debe llamar de nuevo a la función AcceptSecurityContext (General). (Vuelva al paso 2).

Si alguna función devuelve un valor distinto de SEC_E_OK, SEC_I_CONTINUE_NEEDED o SEC_E_INCOMPLETE_MESSAGE (consulte el párrafo siguiente), se ha producido un error. El cliente y el servidor deben llamar a la función DeleteSecurityContext para eliminar el contexto de seguridad parcialmente establecido.

Un caso especial que puede modificar el procesamiento de cliente y servidor es cuando se envía demasiado o demasiado información al cliente o servidor de la otra parte. En el caso de demasiado poca información, ambas funciones devuelven SEC_E_INCOMPLETE_MESSAGE. Para obtener información sobre cómo reconocer y controlar información insuficiente o excesiva, consulte Búferes adicionales devueltos por Schannel.

Realización de la autenticación mediante Schannel

Asignación de certificados

Validación manual de credenciales de Schannel