Función SspiAcceptSecurityContextAsync (sspi.h)
La función
Nota
Esta función actúa como homólogo asincrónico de la función AcceptSecurityContext.
Sintaxis
SECURITY_STATUS SspiAcceptSecurityContextAsync(
SspiAsyncContext *AsyncContext,
PCredHandle phCredential,
PCtxtHandle phContext,
PSecBufferDesc pInput,
unsigned long fContextReq,
unsigned long TargetDataRep,
PCtxtHandle phNewContext,
PSecBufferDesc pOutput,
unsigned long *pfContextAttr,
PTimeStamp ptsExpiry
);
Parámetros
AsyncContext
Contexto de llamada asincrónica.
phCredential
Identificador de las credenciales del servidor. Para recuperar este identificador, el servidor llama a la función SspiAcquireCredentialsHandleAsync con la marca SECPKG_CRED_INBOUND o SECPKG_CRED_BOTH establecida.
phContext
Puntero a una estructura CtxtHandle. En la primera llamada a SspiAcceptSecurityContextAsync, este puntero es NULL. En las llamadas posteriores, phContext especifica el contexto parcialmente formado devuelto en el parámetro phNewContext por la primera llamada.
pInput
Puntero a una estructura secBufferDesc
El primer búfer debe ser de tipo SECBUFFER_TOKEN y contener el token de seguridad recibido del cliente. El segundo búfer debe ser de tipo SECBUFFER_EMPTY.
fContextReq
Marcas de bits que especifican los atributos requeridos por el servidor para establecer el contexto.
Consulte AcceptSecurityContext: fContextReq para obtener una lista completa de valores de parámetros.
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.
phNewContext
Puntero a una estructura CtxtHandle. En la primera llamada a SspiAcceptSecurityContextAsync, este puntero recibe el nuevo identificador de contexto. En las llamadas posteriores,
pOutput
Puntero a una estructura secBufferDesc que contiene el descriptor de búfer de salida. Este búfer se envía al cliente para la entrada en llamadas adicionales a SspiInitializeSecurityContextAsync. Se puede generar un búfer de salida incluso si la función devuelve SEC_E_OK. Cualquier búfer generado debe devolverse a la aplicación cliente.
En la salida, este búfer recibe un token para el contexto de seguridad asincrónico. El token debe enviarse al cliente. La función también puede devolver un búfer de tipo SECBUFFER_EXTRA.
pfContextAttr
Puntero a un conjunto de marcas de bits que indican los atributos del contexto establecido.
Consulte AcceptSecurityContext: pfContextAttr para obtener descripciones de los atributos.
ptsExpiry
Puntero a una estructura TimeStamp que recibe la hora de expiración del contexto.
Vea AcceptSecurityContext: ptsExpiry.
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 cliente, 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_E_INCOMPLETE_MESSAGE 0x80090318L |
La función se realizó correctamente. Los datos del búfer de entrada están incompletos. La aplicación debe leer datos adicionales del cliente y llamar a SspiAcceptSecurityContextAsync de nuevo. |
SEC_I_COMPLETE_AND_CONTINUE 0x00090314L |
La función se realizó correctamente. El servidor debe llamar a CompleteAuthToken y pasar el token de salida al cliente. A continuación, el servidor debe esperar un token de retorno del cliente antes de realizar otra llamada a SspiAcceptSecurityContextAsync. |
SEC_I_COMPLETE_NEEDED 0x00090313L |
La función se realizó correctamente. El servidor debe terminar de compilar el mensaje desde el cliente antes de llamar a CompleteAuthToken. |
SEC_I_CONTINUE_NEEDED 0x00090312L |
La función se realizó correctamente. El servidor debe enviar el token de salida al cliente y esperar un token devuelto. El token devuelto debe pasarse en pInput para otra llamada a SspiAcceptSecurityContextAsync. |
Códigos de error irrecuperables
Código devuelto |
Descripción |
---|---|
SEC_E_INSUFFICIENT_MEMORY 0x80090300L |
Error en la función. No hay suficiente memoria disponible para completar la acción solicitada. |
SEC_E_INTERNAL_ERROR 0x80090304L |
Error en la función. Error que no se ha asignado a un código de error SSPI. |
SEC_E_INVALID_HANDLE 0x80100003L |
Error en la función. El identificador pasado a la función no es válido. |
SEC_E_INVALID_TOKEN 0x80090308L |
Error en la función. El token pasado a la función no es válido. |
SEC_E_LOGON_DENIED 0x8009030CL |
Error en el inicio de sesión. |
SEC_E_NO_AUTHENTICATING_AUTHORITY 0x80090311L |
Error en la función. No se pudo establecer contacto con ninguna autoridad para la autenticación. Esto puede deberse a las siguientes condiciones:
|
SEC_E_NO_CREDENTIALS 0x8009030EL |
Error en la función. Las credenciales de |
SEC_E_UNSUPPORTED_FUNCTION 0x80090302L |
Error en la función. El parámetro fContextReq especificó una marca de atributo de contexto (ASC_REQ_DELEGATE o ASC_REQ_PROMPT_FOR_CREDS) que no era válida. |
Observaciones
La función
El autor de la llamada es responsable de determinar si los atributos de contexto finales son suficientes. Por ejemplo, si se solicitó la confidencialidad (cifrado), pero no se pudo establecer, algunas aplicaciones pueden optar por apagar la conexión inmediatamente. Si no se puede establecer el contexto de seguridad, el servidor debe liberar el contexto parcialmente creado llamando a la función SspiDeleteSecurityContextAsync
Consulte AcceptSecurityContext para obtener comentarios adicionales.
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 |
Consulte también
de requisitos de contexto de
SspiAcquireCredentialsHandleAsync