Compartilhar via


Função SaslAcceptSecurityContext (sspi.h)

A função SaslAcceptSecurityContext encapsula uma chamada padrão para a função Interface do Provedor de Suporte de Segurançafunção acceptSecurityContext (Geral) 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 de CtxtHandle. Na primeira chamada para AcceptSecurityContext (Geral), esse ponteiro é NULL. Nas 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 de SecBufferDesc gerada por uma chamada de cliente para a função InitializeSecurityContext (Geral) que contém o descritor de 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 de ORbit 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 o 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 de CtxtHandle. Na primeira chamada para AcceptSecurityContext (Geral), esse ponteiro recebe o novo identificador de contexto. Em chamadas subsequentes, phNewContext pode ser igual ao 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 que indica os atributos do contexto estabelecido. Para obter uma descrição dos vários atributos, consulte Requisitos de Contexto. Sinalizadores usados para esse parâmetro são prefixados com ASC_RET, como ASC_RET_DELEGATE.

Não verifique se há 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.

Observação 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 os estágios posteriores da negociação. Portanto, ptsTimeStamp deve ser NULL até a última chamada para a função.
 

Valor de retorno

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 do 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 não foi descriptografada.

Observações

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. Depois que a troca for concluída, SEC_E_CONTINUE_NEEDED será 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 mensagens a seguir.

Requisitos

Requisito Valor
de cliente com suporte mínimo Nenhum com suporte
servidor com suporte mínimo Windows Server 2003 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho sspi.h (inclua Security.h)
biblioteca Secur32.lib
de DLL Secur32.dll