Función SaslInitializeSecurityContextA (sspi.h)

La función SaslInitializeSecurityContext ajusta una llamada estándar a la función InitializeSecurityContext (General)de la interfaz del proveedor de soporte técnico de seguridad y procesa las cookies del servidor SASL.

Sintaxis

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

Parámetros

[in] phCredential

Identificador de las credenciales devueltas por .
Función AcquireCredentialsHandle que se usa para compilar el contexto de seguridad. El uso de la función SaslInitializeSecurityContext requiere al menos credenciales OUTBOUND.

[in] phContext

Puntero a una estructura CtxtHandle . En la primera llamada a la función SaslInitializeSecurityContext , este puntero es NULL. En la segunda llamada, este parámetro es un puntero al identificador del contexto parcialmente formado devuelto en el parámetro phNewContext por la primera llamada.

[in] pszTargetName

Puntero a una cadena Unicode o ANSI que indica el destino del contexto.

[in] fContextReq

Marcas de bits que indican los requisitos del contexto. Las marcas usadas para este parámetro tienen el prefijo ISC_REQ_; por ejemplo: ISC_REQ_DELEGATE. Especifique combinaciones de las marcas de atributos siguientes.

Valor Significado
ISC_REQ_REPLAY_DETECT
Detecte paquetes reproducidos.
ISC_REQ_SEQUENCE_DETECT
Detectar mensajes recibidos fuera de secuencia.
ISC_REQ_CONFIDENTIALITY
Cifrar mensajes.
ISC_REQ_STREAM
Compatibilidad con una conexión orientada a flujos.
ISC_REQ_EXTENDED_ERROR
Cuando se produzcan errores, se notificará a la entidad remota.
ISC_REQ_CONNECTION
El contexto de seguridad no controlará los mensajes de formato.
ISC_REQ_MUTUAL_AUTH
Se autenticará el cliente y el servidor.
ISC_REQ_INTEGRITY
Firmar mensajes y comprobar firmas.
 

Para obtener más descripciones de los distintos atributos, vea Requisitos de contexto.

[in] Reserved1

Valor reservado; debe ser cero.

[in] TargetDataRep

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

[in] pInput

Puntero a una estructura SecBufferDesc que contiene punteros a los búferes proporcionados como entrada para el paquete. El puntero debe ser NULL en la primera llamada a la función. En las llamadas posteriores a la función, es un puntero a un búfer asignado con suficiente memoria para contener el token devuelto por el elemento del mismo nivel remoto.

SASL requiere un único búfer de tipo SECBUFFER_TOKEN que contenga el desafío recibido del servidor.

[in] Reserved2

Valor reservado; debe ser cero.

[out] phNewContext

Puntero a una estructura CtxtHandle . En la primera llamada a la función SaslInitializeSecurityContext , este puntero recibe el nuevo identificador de contexto. En la segunda llamada, phNewContext puede ser el mismo que el identificador especificado en el parámetro phContext .

[in, out] pOutput

Puntero a una estructura SecBufferDesc que contiene punteros a la estructura SecBuffer que recibe los datos de salida. Si se ha escrito un búfer como SEC_READWRITE en la entrada, estará allí en la salida. El sistema asignará un búfer para el token de seguridad si se solicita (a través de ISC_REQ_ALLOCATE_MEMORY) y rellena la dirección en el descriptor del búfer para el token de seguridad.

[out] 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 Requisitos de contexto.

Las marcas usadas para este parámetro tienen el prefijo ISC_RET_, como ISC_RET_DELEGATE.

Para obtener una lista de valores válidos, consulte el parámetro fContextReq .

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.

Nota Los atributos de contexto concretos pueden cambiar durante una negociación con un elemento del mismo nivel remoto.
 

[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. Este parámetro es opcional y se debe pasar NULL para los clientes de corta duració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 error 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 se pudo descifrar.

Comentarios

Nota

El encabezado sspi.h define SaslInitializeSecurityContext como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
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