Función de devolución de llamada SpInitLsaModeContextFn (ntsecpkg.h)

La función SpInitLsaModeContext es la función de distribución de cliente que se usa para establecer un contexto de seguridad entre un servidor y un cliente.

Se llama a la función SpInitLsaModeContext cuando el cliente llama a la función InitializeSecurityContext (General) de la interfaz del proveedor de soporte técnico de seguridad.

Sintaxis

SpInitLsaModeContextFn Spinitlsamodecontextfn;

NTSTATUS Spinitlsamodecontextfn(
  [in]  LSA_SEC_HANDLE CredentialHandle,
  [in]  LSA_SEC_HANDLE ContextHandle,
  [in]  PUNICODE_STRING TargetName,
  [in]  ULONG ContextRequirements,
  [in]  ULONG TargetDataRep,
  [in]  PSecBufferDesc InputBuffers,
  [out] PLSA_SEC_HANDLE NewContextHandle,
  [out] PSecBufferDesc OutputBuffers,
  [out] PULONG ContextAttributes,
  [out] PTimeStamp ExpirationTime,
  [out] PBOOLEAN MappedContext,
  [out] PSecBuffer ContextData
)
{...}

Parámetros

[in] CredentialHandle

Opcional. Controle las credenciales que se van a usar para el contexto. CredentialHandle puede ser NULL si el parámetro ContextHandle no es NULL.

[in] ContextHandle

Opcional. Controle el contexto que se va a usar como base para este contexto. ContextHandle puede ser NULL si el parámetro CredentialHandle no es NULL.

[in] TargetName

Opcional. Puntero a un UNICODE_STRING que contiene el nombre del destino del contexto. El contenido de TargetName es específico del paquete y el LSA no lo interpreta.

[in] ContextRequirements

Marcas que indican los atributos de contexto requeridos por el cliente. Los atributos de contexto reales se devuelven en el parámetro ContextAttributes .

En la tabla siguiente, se enumeran los valores válidos.

Valor Significado
ISC_REQ_DELEGATE
El servidor puede suplantar al cliente.
ISC_REQ_MUTUAL_AUTH
Tanto el cliente como el servidor son necesarios para demostrar su identidad.
ISC_REQ_REPLAY_DETECT
El contexto de seguridad admitirá la detección de paquetes reproducidos.
ISC_REQ_SEQUENCE_DETECT
El contexto de seguridad admitirá la detección de mensajes desordenados.
ISC_REQ_USE_SESSION_KEY
Se debe negociar una nueva clave de sesión .
ISC_REQ_PROMPT_FOR_CREDS
Si el cliente es un usuario interactivo, el paquete debe, si es posible, solicitar al usuario las credenciales adecuadas.
ISC_REQ_USE_SUPPLIED_CREDS
El búfer de entrada contiene información de credenciales específicas del paquete que se debe usar para autenticar la conexión.
ISC_REQ_ALLOCATE_MEMORY
El paquete debe asignar memoria. El autor de la llamada debe llamar finalmente a la función FreeContextBuffer para liberar memoria asignada por el paquete.
ISC_REQ_USE_DCE_STYLE
El autor de la llamada espera una transacción de autenticación mutua de tres segmentos.
ISC_REQ_DATAGRAM
Se debe usar un canal de comunicaciones de tipo datagrama. Para obtener más información, vea Contextos de datagrama.
ISC_REQ_CONNECTION
Se debe usar un canal de comunicaciones de tipo de conexión. Para obtener más información, vea Contextos orientados a conexiones.
ISC_REQ_EXTENDED_ERROR
Si se produce un error en el contexto, genere un mensaje de respuesta de error para devolverlo al cliente.
ISC_REQ_STREAM
Se debe usar un canal de comunicaciones de tipo de flujo. Para obtener más información, vea contextos de Stream.
ISC_REQ_INTEGRITY
Se comprueba la integridad del búfer; sin embargo, no se detectarán los mensajes reproducidos y fuera de secuencia.

[in] TargetDataRep

Marca que indica la representación de datos, como el orden de bytes, en el destino. Contiene SECURITY_NATIVE_DREP o SECURITY_NETWORK_DREP.

[in] InputBuffers

Puntero a una estructura SecBufferDesc que contiene el mensaje de respuesta anterior del servidor. La primera vez que esta función se denomina parámetro InputBuffers es NULL.

[out] NewContextHandle

Puntero que recibe un identificador para el nuevo contexto de seguridad. Cuando haya terminado de usar el contexto de seguridad, libere el identificador llamando a la función SpDeleteContext .

[out] OutputBuffers

Puntero a una estructura SecBufferDesc que contiene el token de seguridad que se va a devolver al servidor.

[out] ContextAttributes

Puntero a marcas que especifican los atributos del nuevo contexto. El cliente solicita un conjunto de atributos mediante el parámetro ContextRequirements . Si las marcas ContextRequirements no coinciden con las marcas ContextAttributes , el cliente debe decidir si desea continuar o finalizar. Para obtener una lista completa de las marcas válidas, vea Requisitos de contexto.

[out] ExpirationTime

Puntero a timeStamp que recibe la hora de expiración del nuevo contexto.

[out] MappedContext

Puntero a un valor booleano. Establezca MappedContext en TRUE si el paquete de seguridad implementa las funciones SSP/AP en modo de usuario.

[out] ContextData

Puntero a una estructura SecBuffer que recibe los datos que se van a copiar al crear un contexto de seguridad en modo de usuario. Asigne memoria para ContextData mediante la función AllocateLsaHeap . El LSA liberará la memoria.

Valor devuelto

Si la función se realiza correctamente y no se requiere más procesamiento, devuelva STATUS_SUCCESS. Si el procesamiento no está completo, la función debe devolver SEC_I_CONTINUE_NEEDED. Cuando se devuelve este valor, el autor de la llamada debe llamar de nuevo a la función InitializeSecurityContext (General ).

Si la función no puede crear el contexto de seguridad por cualquier otro motivo, debe devolver un código NTSTATUS que indique el motivo por el que se produjo un error.

Comentarios

La función SpAcceptLsaModeContext es la función del lado servidor para crear un contexto.

Los SSP/AP deben implementar la función SpInitLsaModeContext ; sin embargo, el nombre real proporcionado a la implementación es para el desarrollador.

Hay disponible un puntero a la función SpInitLsaModeContext en la estructura SECPKG_FUNCTION_TABLE recibida de la función SpLsaModeInitialize .

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ntsecpkg.h

Consulte también

AllocateLsaHeap

InitializeSecurityContext (General)

SECPKG_FUNCTION_TABLE

SpAcceptLsaModeContext

SpLsaModeInitialize

TimeStamp