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 |
---|---|
|
El servidor puede suplantar al cliente. |
|
Tanto el cliente como el servidor son necesarios para demostrar su identidad. |
|
El contexto de seguridad admitirá la detección de paquetes reproducidos. |
|
El contexto de seguridad admitirá la detección de mensajes desordenados. |
|
Se debe negociar una nueva clave de sesión . |
|
Si el cliente es un usuario interactivo, el paquete debe, si es posible, solicitar al usuario las credenciales adecuadas. |
|
El búfer de entrada contiene información de credenciales específicas del paquete que se debe usar para autenticar la conexión. |
|
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. |
|
El autor de la llamada espera una transacción de autenticación mutua de tres segmentos. |
|
Se debe usar un canal de comunicaciones de tipo datagrama. Para obtener más información, vea Contextos de datagrama. |
|
Se debe usar un canal de comunicaciones de tipo de conexión. Para obtener más información, vea Contextos orientados a conexiones. |
|
Si se produce un error en el contexto, genere un mensaje de respuesta de error para devolverlo al cliente. |
|
Se debe usar un canal de comunicaciones de tipo de flujo. Para obtener más información, vea contextos de Stream. |
|
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 |