Inicialización del contexto de cliente
Para establecer una conexión segura, el cliente adquiere un identificador de credenciales de salida antes de enviar una solicitud de autenticación al servidor. El servidor crea un contexto de seguridad para el cliente a partir de la solicitud de autenticación. Hay dos funciones SSPI del lado cliente implicadas en la configuración de autenticación:
- AcquireCredentialsHandle obtiene una referencia a las credenciales de inicio de sesión obtenidas anteriormente.
- InitializeSecurityContext (General) crea los tokens de seguridad de solicitud de autenticación iniciales.
El código de este proceso se puede ver en la función GenClientContext en Uso de SSPI con un cliente de Windows Sockets.
Si un programa cliente necesita usar credenciales además de sus propias credenciales de inicio de sesión, como un nombre de usuario, un nombre de dominio y una contraseña diferentes, los proporciona en la llamada AcquireCredentialsHandle con una estructura de SEC_WINNT_AUTH_IDENTITY que especifica las credenciales adicionales. Para obtener más información sobre las funciones de credenciales, consulte Administración de credenciales.
Nota
El miembro Flags de la estructura SEC_WINNT_AUTH_IDENTITY se puede establecer en SEC_WINNT_AUTH_IDENTITY_ANSI cuando las cadenas de la estructura son ASCI o OEM. Las cadenas ANSI se pueden usar con el miembro Flags de la estructura SEC_WINNT_AUTH_IDENTITY establecida en SEC_WINNT_AUTH_IDENTITY_UNICODE si se convierten por primera vez en Unicode mediante la función MultiByteToWideChar .
Para iniciar la primera etapa de la autenticación, el cliente llama a InitializeSecurityContext (General) para obtener un token de seguridad inicial que se enviará en un mensaje de solicitud de conexión al servidor.
El cliente usa la información del token de seguridad recibida en el descriptor del búfer de salida para generar un mensaje que se va a enviar al servidor. La construcción del mensaje, en términos de colocación de varios búferes, etc., forma parte del protocolo de aplicación y ambas partes deben entenderla.
El cliente comprueba el estado devuelto de InitializeSecurityContext (General) para ver si la autenticación se completará en una sola llamada. Un estado devuelto de SEC_I_CONTINUE_NEEDED indica que el protocolo de seguridad requiere varios mensajes de autenticación. Para obtener más información sobre las funciones de contexto, consulte Administración de contextos.