Función SspiInitializeSecurityContextAsyncA (sspi.h)
La función
Sintaxis
SECURITY_STATUS SspiInitializeSecurityContextAsyncA(
SspiAsyncContext *AsyncContext,
PCredHandle phCredential,
PCtxtHandle phContext,
LPSTR pszTargetName,
unsigned long fContextReq,
unsigned long Reserved1,
unsigned long TargetDataRep,
PSecBufferDesc pInput,
unsigned long Reserved2,
PCtxtHandle phNewContext,
PSecBufferDesc pOutput,
unsigned long *pfContextAttr,
PTimeStamp ptsExpiry
);
Parámetros
AsyncContext
Contexto de llamada asincrónica.
phCredential
Identificador de las credenciales devueltas por AcquireCredentialsHandle. Este identificador se usa para compilar el contexto de seguridad de .
phContext
Puntero a una estructura
pszTargetName
Puntero a una cadena terminada en null que indica el destino del contexto. El contenido de la cadena se paquete de seguridad específico, como se describe en la tabla siguiente. Esta lista no es exhaustiva. Se pueden agregar SSP adicionales del sistema y SSP de terceros a un sistema.
SSP en uso | Significado |
---|---|
de resumen de |
Cadena terminada en NULL que identifica de forma única el URI del recurso solicitado. La cadena debe estar compuesta de caracteres permitidos en un URI y que el conjunto de código ASCII us debe representar. La codificación porcentual se puede usar para representar caracteres fuera del conjunto de código ASCII de EE. UU. |
Kerberos o Negotiate | Nombre de entidad de seguridad de servicio (SPN) o el contexto de seguridad de |
NTLM | Nombre de entidad de seguridad de servicio (SPN) o el contexto de seguridad de |
Schannel/SSL | Cadena terminada en NULL que identifica de forma única el servidor de destino. Schannel usa este valor para comprobar el certificado de servidor. Schannel también usa este valor para buscar la sesión en la memoria caché de sesiones al restablecer una conexión. La sesión almacenada en caché solo se usa si se cumplen todas las condiciones siguientes:
|
fContextReq
Marcas de bits que indican solicitudes para el contexto.
Consulte InitializeSecurityContext: fContextReq para obtener una lista de valores de marca y sus significados.
Reserved1
Este parámetro está reservado y debe establecerse en cero.
TargetDataRep
Representación de datos, como la ordenación de bytes, en el destino. Este parámetro puede ser SECURITY_NATIVE_DREP o SECURITY_NETWORK_DREP.
pInput
Puntero a una estructura secBufferDesc de
Reserved2
Este parámetro está reservado y debe establecerse en cero.
phNewContext
Puntero a una estructura CtxtHandle.
pOutput
Puntero a una estructura secBufferDesc que contiene punteros a la estructura SecBuffer que recibe los datos de salida.
pfContextAttr
Puntero a una variable para recibir un conjunto de marcas de bits que indican los atributos del contexto establecido. Para obtener una descripción de los distintos atributos, vea Context Requirements.
ptsExpiry
opcional. Puntero a una estructura TimeStamp que recibe la hora de expiración del contexto.
Valor devuelto
Devuelve SEC_E_OK si la solicitud asincrónica para establecer un contexto de seguridad se puso en cola correctamente para su ejecución; de lo contrario, devuelve el error generado al intentar ponerla en cola. Para recuperar el estado de la operación, use SspiGetAsyncCallStatus.
Si se aceptó el contexto de seguridad recibido del servidor, SspiGetAsyncCallStatus devuelve SEC_E_OK o uno de los códigos SSPI de la tabla siguiente. De lo contrario, puede devolver SEC_I_ASYNC_CALL_PENDING si la llamada sigue en curso o cualquiera de los siguientes códigos de error irrecuperables en la segunda tabla siguiente.
Código devuelto |
Descripción |
---|---|
SEC_I_COMPLETE_AND_CONTINUE 0x00090314L |
El cliente debe llamar a CompleteAuthToken y pasar el token de salida al servidor. A continuación, el cliente espera un token devuelto y lo pasa, en otra llamada, a SspiInitializeSecurityContextAsyncA. |
SEC_I_COMPLETE_NEEDED 0x00090313L |
El cliente debe terminar de compilar el mensaje desde el servidor antes de llamar a CompleteAuthToken. |
SEC_I_CONTINUE_NEEDED 0x00090312L |
El cliente debe enviar el token de salida al servidor y esperar un token de retorno. A continuación, el token devuelto se pasa en otra llamada a SspiInitializeSecurityContextAsyncA. El token de salida puede estar vacío. |
SEC_I_INCOMPLETE_CREDENTIALS | Use con Schannel. El servidor ha solicitado la autenticación de cliente y las credenciales proporcionadas no incluyen un certificado o el certificado no lo emitió una entidad de certificación de confianza para el servidor. |
SEC_E_INCOMPLETE_MESSAGE 0x80090318L |
Los datos de todo el mensaje no se leyeron desde la conexión. Cuando se devuelve este valor, el búfer pInput contiene una estructura SecBuffer con un miembro BufferType de SECBUFFER_MISSING. El miembro cbBuffer de SecBuffer contiene un valor que indica el número de bytes adicionales que la función debe leer del cliente antes de que esta función se realice correctamente. Aunque este número no siempre es preciso, su uso puede ayudar a mejorar el rendimiento evitando varias llamadas a esta función. |
SEC_E_OK 0x00000000L |
Se aceptó el contexto de seguridad recibido del cliente. Si la función generó un token de salida, el token debe enviarse al servidor. |
Códigos de error irrecuperables
Código devuelto |
Descripción |
---|---|
SEC_E_INSUFFICIENT_MEMORY 0x80090300L |
No hay suficiente memoria disponible para completar la acción solicitada. |
SEC_E_INTERNAL_ERROR 0x80090304L |
Error que no se ha asignado a un código de error SSPI. |
SEC_E_INVALID_HANDLE 0x80100003L |
El identificador pasado a la función no es válido. |
SEC_E_INVALID_TOKEN 0x80090308L |
El error se debe a un token de entrada con formato incorrecto, como un token dañado en tránsito, un token de tamaño incorrecto o un token pasado al paquete de seguridad incorrecto. Pasar un token al paquete incorrecto puede ocurrir si el cliente y el servidor no negociaron el paquete de seguridad adecuado. |
SEC_E_LOGON_DENIED 0x8009030CL |
Error en el inicio de sesión. |
SEC_E_NO_AUTHENTICATING_AUTHORITY 0x80090311L |
No se pudo establecer contacto con ninguna autoridad para la autenticación. El nombre de dominio de la entidad de autenticación podría ser incorrecto, el dominio podría ser inaccesible o podría haber habido un error de relación de confianza. |
SEC_E_NO_CREDENTIALS 0x8009030EL |
No hay credenciales disponibles en el paquete de seguridad. |
SEC_E_TARGET_UNKNOWN | No se reconoció el destino. |
SEC_E_UNSUPPORTED_FUNCTION 0x80090302L |
Se especificó una marca de atributo de contexto que no es válida (ISC_REQ_DELEGATE o ISC_REQ_PROMPT_FOR_CREDS) en el parámetro fContextReq. |
SEC_E_WRONG_PRINCIPAL | La entidad de seguridad que recibió la solicitud de autenticación no es la misma que la que se pasa al parámetro pszTargetName. Esto indica un error en la autenticación mutua. |
Observaciones
Consulte initializeSecurityContext para obtener comentarios completos.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 10, versión 1607 [solo controladores en modo kernel] |
servidor mínimo admitido | Windows Server 2016 [solo controladores en modo kernel] |
encabezado de |
sspi.h |