Função de retorno de chamada SpInitLsaModeContextFn (ntsecpkg.h)
A função SpInitLsaModeContext é a função de expedição do cliente usada para estabelecer um contexto de segurança entre um servidor e um cliente.
A função SpInitLsaModeContext é chamada quando o cliente chama a função InitializeSecurityContext (Geral) da Interface do Provedor de Suporte de Segurança.
Sintaxe
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. Manipule para as credenciais a serem usadas para o contexto. CredentialHandle poderá ser NULL se o parâmetro ContextHandle não for NULL.
[in] ContextHandle
Opcional. Manipule para o contexto a ser usado como base para esse contexto. ContextHandle poderá ser NULL se o parâmetro CredentialHandle não for NULL.
[in] TargetName
Opcional. Ponteiro para um UNICODE_STRING que contém o nome do destino do contexto. O conteúdo de TargetName é específico do pacote e não é interpretado pela LSA.
[in] ContextRequirements
Sinalizadores que indicam os atributos de contexto exigidos pelo cliente. Os atributos de contexto reais são retornados no parâmetro ContextAttributes .
A tabela a seguir lista os valores válidos.
Valor | Significado |
---|---|
|
O servidor tem permissão para representar o cliente. |
|
O cliente e o servidor são necessários para provar sua identidade. |
|
O contexto de segurança dará suporte à detecção de pacotes reproduzidos. |
|
O contexto de segurança dará suporte à detecção de mensagens fora de ordem. |
|
Uma nova chave de sessão deve ser negociada. |
|
Se o cliente for um usuário interativo, o pacote deverá, se possível, solicitar ao usuário as credenciais apropriadas. |
|
O buffer de entrada contém informações de credencial específicas do pacote que devem ser usadas para autenticar a conexão. |
|
O pacote deve alocar memória. O chamador deve eventualmente chamar a função FreeContextBuffer para liberar a memória alocada pelo pacote. |
|
O chamador espera uma transação de autenticação mútua de três etapas. |
|
Um canal de comunicação do tipo datagram deve ser usado. Para obter mais informações, consulte Contextos de datagrama. |
|
Um canal de comunicação do tipo conexão deve ser usado. Para obter mais informações, consulte Contextos orientados à conexão. |
|
Se o contexto falhar, gere uma mensagem de resposta de erro para enviar de volta ao cliente. |
|
Um canal de comunicação do tipo fluxo deve ser usado. Para obter mais informações, consulte Contextos de Stream. |
|
A integridade do buffer é verificada; no entanto, mensagens reproduzidas e fora de sequência não serão detectadas. |
[in] TargetDataRep
Sinalizador que indica a representação de dados, como ordenação de bytes, no destino. Contém SECURITY_NATIVE_DREP ou SECURITY_NETWORK_DREP.
[in] InputBuffers
Ponteiro para uma estrutura SecBufferDesc que contém a mensagem de resposta anterior do servidor. A primeira vez que essa função é chamada de parâmetro InputBuffers é NULL.
[out] NewContextHandle
Ponteiro que recebe um identificador para o novo contexto de segurança. Quando terminar de usar o contexto de segurança, libere o identificador chamando a função SpDeleteContext .
[out] OutputBuffers
Ponteiro para uma estrutura SecBufferDesc que contém o token de segurança a ser passado de volta para o servidor.
[out] ContextAttributes
Ponteiro para sinalizadores que especificam os atributos do novo contexto. O cliente solicita um conjunto de atributos usando o parâmetro ContextRequirements . Se os sinalizadores ContextRequirements não corresponderem aos sinalizadores ContextAttributes , o cliente deverá decidir se deseja continuar ou encerrar. Para obter uma lista completa dos sinalizadores válidos, consulte Requisitos de contexto.
[out] ExpirationTime
Ponteiro para um TimeStamp que recebe o tempo de expiração para o novo contexto.
[out] MappedContext
Ponteiro para um valor booliano. Defina MappedContext como TRUE se o pacote de segurança implementar as funções SSP/AP no modo de usuário.
[out] ContextData
Ponteiro para uma estrutura SecBuffer que recebe os dados a serem copiados ao criar um contexto de segurança no modo de usuário. Aloque memória para ContextData usando a função AllocateLsaHeap . A LSA liberará a memória.
Retornar valor
Se a função for bem-sucedida e não for necessário mais processamento, retorne STATUS_SUCCESS. Se o processamento não estiver concluído, a função deverá retornar SEC_I_CONTINUE_NEEDED. Quando esse valor é retornado, o chamador deve chamar a função InitializeSecurityContext (Geral) novamente.
Se a função não criar o contexto de segurança por qualquer outro motivo, ela deverá retornar um código NTSTATUS indicando o motivo pelo qual falhou.
Comentários
A função SpAcceptLsaModeContext é a função do lado do servidor para criar um contexto.
SSP/APs devem implementar a função SpInitLsaModeContext ; no entanto, o nome real fornecido à implementação cabe ao desenvolvedor.
Um ponteiro para a função SpInitLsaModeContext está disponível na estrutura SECPKG_FUNCTION_TABLE recebida da função SpLsaModeInitialize .
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | ntsecpkg.h |