Função AcceptSecurityContext (sspi.h)
A função AcceptSecurityContext (CredSSP) permite que o componente de servidor de um aplicativo de transporte estabeleça um contexto de segurança entre o servidor e um cliente remoto. O cliente remoto chama a função InitializeSecurityContext (CredSSP) para iniciar o processo de estabelecimento de um contexto de segurança. O servidor pode exigir um ou mais tokens de resposta do cliente remoto para concluir o estabelecimento do contexto de segurança.
Sintaxe
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY AcceptSecurityContext(
[in, optional] PCredHandle phCredential,
[in, optional] PCtxtHandle phContext,
[in, optional] PSecBufferDesc pInput,
[in] unsigned long fContextReq,
[in] unsigned long TargetDataRep,
[in, out, optional] PCtxtHandle phNewContext,
[in, out, optional] PSecBufferDesc pOutput,
[out] unsigned long *pfContextAttr,
[out, optional] PTimeStamp ptsExpiry
);
Parâmetros
[in, optional] phCredential
Um identificador para as credenciais do servidor. Para recuperar esse identificador, o servidor chama a função AcquireCredentialsHandle (CredSSP) com o sinalizador SECPKG_CRED_INBOUND ou SECPKG_CRED_BOTH definido.
[in, optional] phContext
Um ponteiro para uma estrutura CtxtHandle . Na primeira chamada para AcceptSecurityContext (CredSSP), esse ponteiro é NULL. Em chamadas subsequentes, phContext especifica o contexto parcialmente formado retornado no parâmetro phNewContext pela primeira chamada.
[in, optional] pInput
Um ponteiro para uma estrutura SecBufferDesc gerada por uma chamada de cliente para InitializeSecurityContext (CredSSP). A estrutura contém o descritor de buffer de entrada.
O primeiro buffer deve ser do tipo SECBUFFER_TOKEN e conter o token de segurança recebido do cliente. O segundo buffer deve ser do tipo SECBUFFER_EMPTY.
[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. Esse parâmetro pode usar um dos valores a seguir.
Valor | Significado |
---|---|
|
O CredSSP (Provedor de Suporte à Segurança de Credencial) alocará buffers de saída. Quando terminar de usar os buffers de saída, libere-os chamando a função FreeContextBuffer . |
|
O contexto de segurança não manipulará mensagens de formatação. |
|
O servidor tem permissão para representar o cliente. Ignore esse sinalizador para delegação restrita. |
|
Quando ocorrerem erros, a parte remota será notificada. |
|
Detectar pacotes reproduzidos. |
|
Detectar mensagens recebidas fora da sequência. |
|
Suporte a uma conexão orientada a fluxo. |
Para possíveis sinalizadores de atributo e seus significados, consulte Requisitos de contexto. Os sinalizadores usados para esse parâmetro são prefixados com ASC_REQ, por exemplo, ASC_REQ_DELEGATE.
Os atributos solicitados podem não ter suporte do cliente. Para obter mais informações, consulte o parâmetro pfContextAttr .
[in] TargetDataRep
A representação de dados, como ordenação de bytes, no destino. Esse parâmetro pode ser SECURITY_NATIVE_DREP ou SECURITY_NETWORK_DREP.
[in, out, optional] phNewContext
Um ponteiro para uma estrutura CtxtHandle . Na primeira chamada para AcceptSecurityContext (CredSSP), 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, optional] pOutput
Um 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 (CredSSP). Um buffer de saída pode ser gerado mesmo que a função retorne SEC_E_OK. Qualquer buffer gerado deve ser enviado de volta para o aplicativo cliente.
Na saída, esse buffer recebe um token para o contexto de segurança. O token deve ser enviado ao cliente. A função também pode retornar um buffer do tipo SECBUFFER_EXTRA.
[out] pfContextAttr
Um ponteiro para um conjunto de sinalizadores de bits que indicam 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, por exemplo, 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
Um ponteiro para uma estrutura TimeStamp que recebe o tempo de expiração do contexto. Recomendamos que o pacote de segurança sempre retorne esse valor no horário local.
Valor retornado
Essa função retorna um dos valores a seguir.
Valor/código retornado | Descrição |
---|---|
|
A função foi bem-sucedida. Os dados no buffer de entrada estão incompletos. O aplicativo deve ler dados adicionais do cliente e chamar AcceptSecurityContext (CredSSP) novamente. |
|
A função falhou. Não há memória suficiente disponível para concluir a ação solicitada. |
|
A função falhou. Ocorreu um erro que não foi mapeado para um código de erro SSPI. |
|
A função falhou. O identificador passado para a função não é válido. |
|
A função falhou. O token passado para a função não é válido. |
|
Falha no logon. |
|
A função falhou. Nenhuma autoridade pode ser contatada para autenticação. Isso pode ocorrer devido às seguintes condições:
|
|
A função falhou. O identificador de credenciais especificado no parâmetro phCredential não é válido. |
|
A função foi bem-sucedida. O contexto de segurança recebido do cliente foi aceito. Se a função gerou um token de saída, o token deve ser enviado para o processo do cliente. |
|
A função falhou. O parâmetro fContextReq especificou um sinalizador de atributo de contexto (ASC_REQ_DELEGATE ou ASC_REQ_PROMPT_FOR_CREDS) que não era válido. |
|
A função foi bem-sucedida. O servidor deve chamar CompleteAuthToken e passar o token de saída para o cliente. Em seguida, o servidor deve aguardar um token de retorno do cliente antes de fazer outra chamada para AcceptSecurityContext (CredSSP). |
|
A função foi bem-sucedida. O servidor deve concluir a compilação da mensagem do cliente antes de chamar CompleteAuthToken. |
|
A função foi bem-sucedida. O servidor deve enviar o token de saída para o cliente e aguardar um token retornado. O token retornado deve ser passado em pInput para outra chamada para AcceptSecurityContext (CredSSP). |
Comentários
A função AcceptSecurityContext (CredSSP) é a equivalente do servidor à função InitializeSecurityContext (CredSSP).
Quando o servidor recebe uma solicitação de um cliente, ele usa o parâmetro fContextReq para especificar o que ele requer da sessão. Dessa forma, um servidor pode exigir que os clientes possam usar uma sessão confidencial ou de verificação de integridade; ele pode rejeitar clientes que não podem atender a essa demanda. Como alternativa, um servidor não pode exigir nada; tudo o que o cliente requer ou pode fornecer é retornado no parâmetro pfContextAttr .
Os parâmetros fContextReq e pfContextAttr são bitmasks que representam vários atributos de contexto. Para obter uma descrição dos vários atributos, consulte Requisitos de contexto.
Depois que o contexto de segurança for estabelecido, o aplicativo de servidor poderá usar a função QuerySecurityContextToken para recuperar um identificador para a conta de usuário para a qual o certificado do cliente foi mapeado. Além disso, o servidor pode usar a função ImpersonateSecurityContext para representar o usuário.
Requisitos
Cliente mínimo com suporte | Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | sspi.h (inclua Security.h) |
Biblioteca | Secur32.lib |
DLL | Secur32.dll |