Compartir a través de


Función SaslInitializeSecurityContextA (sspi.h)

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

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 de devueltas por
función de AcquireCredentialsHandle que se usa para compilar el contexto de seguridad de . El uso de la función de SaslInitializeSecurityContext requiere al menos credenciales OUTBOUND.

[in] phContext

Puntero a una estructura CtxtHandle. En la primera llamada a la función de 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
Detectar 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
El cliente y el servidor se autenticarán.
ISC_REQ_INTEGRITY
Firmar mensajes y comprobar firmas.
 

Para obtener más descripciones de los distintos atributos, vea Context Requirements.

[in] Reserved1

Valor reservado; debe ser cero.

[in] TargetDataRep

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

[in] pInput

Puntero a una estructura secBufferDesc de que contiene punteros a los búferes proporcionados como entrada al 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 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 de , 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 de .

[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 de 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 de establecido. Para obtener una descripción de los distintos atributos, vea Context Requirements.

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 si hay 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 Atributos de contexto concretos pueden cambiar durante una negociación con un 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 devolver siempre este valor en la hora local. Este parámetro es opcional y NULL deben pasarse para 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 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 se pudo descifrar.

Observaciones

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 Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido No se admite ninguna
servidor mínimo admitido Windows Server 2003 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de sspi.h (include Security.h)
biblioteca de Secur32.lib
DLL de Secur32.dll