Función SaslAcceptSecurityContext (sspi.h)

La función SaslAcceptSecurityContext ajusta una llamada estándar a la función AcceptSecurityContext (General) de interfaz del proveedor de compatibilidad de seguridad e incluye la creación de cookies de servidor SASL.

Sintaxis

SECURITY_STATUS SEC_ENTRY SaslAcceptSecurityContext(
  [in]            PCredHandle    phCredential,
  [in, optional]  PCtxtHandle    phContext,
  [in]            PSecBufferDesc pInput,
  [in]            unsigned long  fContextReq,
  [in]            unsigned long  TargetDataRep,
  [out]           PCtxtHandle    phNewContext,
  [in, out]       PSecBufferDesc pOutput,
  [out]           unsigned long  *pfContextAttr,
  [out, optional] PTimeStamp     ptsExpiry
);

Parámetros

[in] phCredential

Identificador de las credenciales del servidor. El servidor llama a la función AcquireCredentialsHandle con la marca INBOUND establecida para recuperar este identificador.

[in, optional] phContext

Puntero a una estructura CtxtHandle . En la primera llamada a AcceptSecurityContext (General), este puntero es NULL. En las llamadas posteriores, phContext es el identificador del contexto parcialmente formado que se devolvió en el parámetro phNewContext por la primera llamada.

[in] pInput

Puntero a una estructura SecBufferDesc generada por una llamada de cliente a la función InitializeSecurityContext (General) que contiene el descriptor de búfer de entrada.

SASL requiere un único búfer de tipo SECBUFFER_TOKEN. El búfer está vacío para la primera llamada a la función AcceptSecurityContext (General) y contiene la respuesta de desafío recibida del cliente para la segunda llamada.

[in] fContextReq

Marcas de bits que especifican los atributos requeridos por el servidor para establecer el contexto. Las marcas de bits se pueden combinar mediante operaciones OR bit a bit. En la siguiente tabla se muestran los valores posibles.

Valor Significado
ASC_REQ_CONFIDENTIALITY
Cifrar y descifrar mensajes.

Válido solo con el SSP de resumen para SASL.

ASC_REQ_HTTP
Use Digest para HTTP. Omita esta marca para usar Digest como mecanismo SASL.

[in] TargetDataRep

Indica la representación de datos, como el orden de bytes, en el destino. Este valor puede ser SECURITY_NATIVE_DREP o SECURITY_NETWORK_DREP.

[out] phNewContext

Puntero a una estructura CtxtHandle . En la primera llamada a AcceptSecurityContext (General), 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 .

[in, out] pOutput

Puntero a una estructura SecBufferDesc que contiene el descriptor del búfer de salida. Este búfer se envía al cliente para la entrada en llamadas adicionales a InitializeSecurityContext (General). Se puede generar un búfer de salida incluso si la función devuelve SEC_E_OK. Cualquier búfer generado se debe devolver a la aplicación cliente.

[out] pfContextAttr

Puntero a una variable que recibe un conjunto de marcas de bits que indican los atributos del contexto establecido. Para obtener una descripción de los distintos atributos, consulte Requisitos de contexto. Las marcas usadas para este parámetro tienen el prefijo ASC_RET, como ASC_RET_DELEGATE.

No compruebe los atributos relacionados con la seguridad hasta que la llamada de función final se devuelva correctamente. Las marcas de atributo no relacionadas con la seguridad, como la marca de ASC_RET_ALLOCATED_MEMORY, se pueden comprobar antes de la devolución final.

[out, optional] ptsExpiry

Puntero a una estructura TimeStamp que recibe la hora de expiración del contexto. Se recomienda que el paquete de seguridad devuelva siempre este valor en la hora local.

Nota Hasta la última llamada del proceso de autenticación, la hora de expiración del contexto puede ser incorrecta porque se proporcionará más información durante las fases posteriores de la negociación. Por lo tanto, ptsTimeStamp debe ser NULL hasta la última llamada a la función.
 

Valor devuelto

Si la llamada se completa correctamente, esta función devuelve SEC_E_OK. En la tabla siguiente se muestran algunos valores devueltos de errores posibles.

Código devuelto Descripción
SEC_E_ALGORITHM_MISMATCH
No se permite el procesamiento de authz.
SEC_E_INSUFFICIENT_MEMORY
No hay suficiente memoria disponible para completar la solicitud.
SEC_E_INVALID_TOKEN
No se encuentra ningún búfer de token en el parámetro pOutput o el mensaje no pudo descifrarse.

Comentarios

Se identifica la llamada final de la función AcceptSecurityContext (General) que devuelve SEC_E_OK. Si se genera un token de devolución, el procesamiento de SASL se suspende para un recorrido de ida y vuelta al cliente para permitir que se procese el token final. Una vez completado el intercambio, SEC_E_CONTINUE_NEEDED se devuelve a la aplicación con una cookie de servidor SASL adicional cifrada con funciones de mensaje SSPI. La cookie inicial del servidor indica si se admite INTEGRIDAD y PRIVACIDAD. El cliente procesa esta cookie de servidor inicial y el cliente devuelve una cookie de cliente para indicar qué servicios solicita el cliente. A continuación, el servidor descifra la cookie de cliente y los servicios finales se determinan para el siguiente tráfico de mensajes.

Requisitos

   
Cliente mínimo compatible No se admite ninguno
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado sspi.h (include Security.h)
Library Secur32.lib
Archivo DLL Secur32.dll