Compartir a través de


Función SspiAcceptSecurityContextAsync (sspi.h)

La función SspiAcceptSecurityContextAsync permite al componente de servidor de una aplicación de transporte establecer de forma asincrónica un contexto de seguridad entre el servidor y un cliente remoto. El cliente remoto llama a la función SspiInitializeSecurityContextAsync para iniciar de forma asincrónica el proceso de establecimiento de un contexto de seguridad.

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 generada por una llamada de cliente a SspiInitializeSecurityContextAsync. La estructura contiene el descriptor de búfer de entrada.

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, phNewContext puede ser el mismo que el identificador especificado en el parámetro phContext de .

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:
  • El nombre de dominio de la entidad de autenticación es incorrecto.
  • El dominio no está disponible.
  • Error en la relación de confianza.
SEC_E_NO_CREDENTIALS
0x8009030EL
Error en la función. Las credenciales de identificador especificados en el parámetro phCredential no son válidos.
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 SspiAcceptSecurityContextAsync es el homólogo del servidor de la función SspiInitializeSecurityContextAsync.

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

AcceptSecurityContext

de requisitos de contexto de

impersonateSecurityContext

SspiAcquireCredentialsHandleAsync

SspiDeleteSecurityContextAsync

SspiGetAsyncCallStatus