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
ISC_REQ_DELEGATE
O servidor tem permissão para representar o cliente.
ISC_REQ_MUTUAL_AUTH
O cliente e o servidor são necessários para provar sua identidade.
ISC_REQ_REPLAY_DETECT
O contexto de segurança dará suporte à detecção de pacotes reproduzidos.
ISC_REQ_SEQUENCE_DETECT
O contexto de segurança dará suporte à detecção de mensagens fora de ordem.
ISC_REQ_USE_SESSION_KEY
Uma nova chave de sessão deve ser negociada.
ISC_REQ_PROMPT_FOR_CREDS
Se o cliente for um usuário interativo, o pacote deverá, se possível, solicitar ao usuário as credenciais apropriadas.
ISC_REQ_USE_SUPPLIED_CREDS
O buffer de entrada contém informações de credencial específicas do pacote que devem ser usadas para autenticar a conexão.
ISC_REQ_ALLOCATE_MEMORY
O pacote deve alocar memória. O chamador deve eventualmente chamar a função FreeContextBuffer para liberar a memória alocada pelo pacote.
ISC_REQ_USE_DCE_STYLE
O chamador espera uma transação de autenticação mútua de três etapas.
ISC_REQ_DATAGRAM
Um canal de comunicação do tipo datagram deve ser usado. Para obter mais informações, consulte Contextos de datagrama.
ISC_REQ_CONNECTION
Um canal de comunicação do tipo conexão deve ser usado. Para obter mais informações, consulte Contextos orientados à conexão.
ISC_REQ_EXTENDED_ERROR
Se o contexto falhar, gere uma mensagem de resposta de erro para enviar de volta ao cliente.
ISC_REQ_STREAM
Um canal de comunicação do tipo fluxo deve ser usado. Para obter mais informações, consulte Contextos de Stream.
ISC_REQ_INTEGRITY
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

Confira também

AllocateLsaHeap

InitializeSecurityContext (Geral)

SECPKG_FUNCTION_TABLE

SpAcceptLsaModeContext

SpLsaModeInitialize

TimeStamp