Função SaslAcceptSecurityContext (sspi.h)

A função SaslAcceptSecurityContext encapsula uma chamada padrão para a função AcceptSecurityContext (Interface do Provedor de Suporte de Segurança AcceptSecurityContext) e inclui a criação de cookies de servidor SASL.

Sintaxe

SECURITY_STATUS SEC_ENTRY SaslAcceptSecurityContext(
  [in]            PCredHandle    phCredential,
  [in, optional]  PCtxtHandle    phContext,
  [in]            PSecBufferDesc pInput,
  [in]            unsigned long  fContextReq,
  [in]            unsigned long  TargetDataRep,
  [out]           PCtxtHandle    phNewContext,
  [in, out]       PSecBufferDesc pOutput,
  [out]           unsigned long  *pfContextAttr,
  [out, optional] PTimeStamp     ptsExpiry
);

Parâmetros

[in] phCredential

Um identificador para as credenciais do servidor. O servidor chama a função AcquireCredentialsHandle com o sinalizador INBOUND definido para recuperar esse identificador.

[in, optional] phContext

Ponteiro para uma estrutura CtxtHandle . Na primeira chamada para AcceptSecurityContext (Geral), esse ponteiro é NULL. Em chamadas subsequentes, phContext é o identificador para o contexto parcialmente formado que foi retornado no parâmetro phNewContext pela primeira chamada.

[in] pInput

Ponteiro para uma estrutura SecBufferDesc gerada por uma chamada de cliente para a função InitializeSecurityContext (Geral) que contém o descritor do buffer de entrada.

A SASL requer um único buffer do tipo SECBUFFER_TOKEN. O buffer está vazio para a primeira chamada para a função AcceptSecurityContext (Geral) e contém a resposta de desafio recebida do cliente para a segunda chamada.

[in] fContextReq

Sinalizadores de bit que especificam os atributos exigidos pelo servidor para estabelecer o contexto. Os sinalizadores de bits podem ser combinados usando operações OR bit a bit. A tabela a seguir mostra os valores possíveis.

Valor Significado
ASC_REQ_CONFIDENTIALITY
Criptografar e descriptografar mensagens.

Válido apenas com o SSP do Digest para SASL.

ASC_REQ_HTTP
Use Digest para HTTP. Omita esse sinalizador para usar o Digest como um mecanismo SASL.

[in] TargetDataRep

Indica a representação de dados, como ordenação de bytes, no destino. Esse valor pode ser SECURITY_NATIVE_DREP ou SECURITY_NETWORK_DREP.

[out] phNewContext

Ponteiro para uma estrutura CtxtHandle . Na primeira chamada para AcceptSecurityContext (Geral), esse ponteiro recebe o novo identificador de contexto. Em chamadas subsequentes, phNewContext pode ser o mesmo que o identificador especificado no parâmetro phContext .

[in, out] pOutput

Ponteiro para uma estrutura SecBufferDesc que contém o descritor de buffer de saída. Esse buffer é enviado ao cliente para entrada em chamadas adicionais para InitializeSecurityContext (Geral). Um buffer de saída pode ser gerado mesmo se a função retornar SEC_E_OK. Qualquer buffer gerado deve ser enviado de volta para o aplicativo cliente.

[out] pfContextAttr

Ponteiro para uma variável que recebe um conjunto de sinalizadores de bits indicando os atributos do contexto estabelecido. Para obter uma descrição dos vários atributos, consulte Requisitos de contexto. Os sinalizadores usados para esse parâmetro são prefixados com ASC_RET, como ASC_RET_DELEGATE.

Não marcar para atributos relacionados à segurança até que a chamada de função final retorne com êxito. Sinalizadores de atributo não relacionados à segurança, como o sinalizador ASC_RET_ALLOCATED_MEMORY, podem ser verificados antes do retorno final.

[out, optional] ptsExpiry

Ponteiro para uma estrutura TimeStamp que recebe o tempo de expiração do contexto. É recomendável que o pacote de segurança sempre retorne esse valor no horário local.

Nota Até a última chamada do processo de autenticação, o tempo de expiração do contexto pode estar incorreto porque mais informações serão fornecidas durante estágios posteriores da negociação. Portanto, ptsTimeStamp deve ser NULL até a última chamada para a função.
 

Valor retornado

Se a chamada for concluída com êxito, essa função retornará SEC_E_OK. A tabela a seguir mostra alguns valores de retorno de falha possíveis.

Código de retorno Descrição
SEC_E_ALGORITHM_MISMATCH
O processamento Authz não é permitido.
SEC_E_INSUFFICIENT_MEMORY
Não há memória suficiente disponível para concluir a solicitação.
SEC_E_INVALID_TOKEN
Nenhum buffer de token está localizado no parâmetro pOutput ou a mensagem falhou ao descriptografar.

Comentários

A chamada final da função AcceptSecurityContext (Geral) que retorna SEC_E_OK é identificada. Se um token de retorno for produzido, o processamento sasl será suspenso por uma viagem de ida e volta ao cliente para permitir que o token final seja processado. Após a conclusão da troca, SEC_E_CONTINUE_NEEDED é retornado ao aplicativo com um cookie de servidor SASL adicional criptografado com funções de mensagem SSPI. O cookie do servidor inicial indica se há suporte para INTEGRIDADE e PRIVACIDADE. Esse cookie de servidor inicial é processado pelo cliente e o cliente retorna um cookie cliente para indicar quais serviços o cliente solicita. O cookie do cliente é descriptografado pelo servidor e os serviços finais são determinados para o tráfego de mensagem a seguir.

Requisitos

   
Cliente mínimo com suporte Nenhum compatível
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho sspi.h (inclua Security.h)
Biblioteca Secur32.lib
DLL Secur32.dll