Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A função AcceptSecurityContext (Digest) permite que o componente de servidor de um aplicativo de transporte estabeleça um de contexto de segurança entre o servidor e um cliente remoto. O cliente remoto usa a função InitializeSecurityContext (Digest) 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
SECURITY_STATUS SEC_Entry AcceptSecurityContext(
_In_opt_ PCredHandle phCredential,
_Inout_opt_ PCtxtHandle phContext,
_In_opt_ PSecBufferDesc pInput,
_In_ ULONG fContextReq,
_In_ ULONG TargetDataRep,
_Inout_opt_ PCtxtHandle phNewContext,
_Inout_opt_ PSecBufferDesc pOutput,
_Out_ PULONG pfContextAttr,
_Out_opt_ PTimeStamp ptsExpiry
);
Parâmetros
phCredencial[in, optional]
Um identificador para as credenciais do servidor. O servidor chama a função AcquireCredentialsHandle (Digest) com o sinalizador SECPKG_CRED_INBOUND ou SECPKG_CRED_BOTH definido para recuperar esse identificador.
phContexto[in, out, optional]
Um ponteiro para um CtxtHandle estrutura. Na primeira chamada para AcceptSecurityContext (Digest), esse ponteiro é NULL. Em chamadas subsequentes, phContext é o identificador para o contexto parcialmente formado que foi retornado no parâmetro phNewContext pela primeira chamada.
Advertência
Não use o mesmo identificador de contexto em chamadas simultâneas para AcceptSecurityContext (Digest). A implementação da API nos provedores de serviços de segurança não é thread-safe.
pEntrada[in, optional]
Um ponteiro para uma estrutura de SecBufferDesc gerada por uma chamada de cliente para InitializeSecurityContext (Digest) que contém o descritor de buffer de entrada.
A tabela a seguir mostra a configuração do buffer para Digest HTTP. O primeiro buffer deve ser do tipo SECBUFFER_TOKENe o restante deve ser do tipo SECBUFFER_PKG_PARAMS. SASL requer apenas buffer zero.
| Buffer #/tipo de buffer | Significado |
|---|---|
|
0 SECBUFFER_TOKEN |
Vazio para a primeira chamada e a resposta de desafio recebida do cliente para a segunda chamada. |
|
1 SECBUFFER_PKG_PARAMS |
Método. Os caracteres são em formato wireline da linha de solicitação. Caracteres de byte único ASCII dos EUA. |
|
2 SECBUFFER_PKG_PARAMS |
Reservado. |
|
3 SECBUFFER_PKG_PARAMS |
HEntity. Representação hexadecimal de H(entidade-corpo). Caracteres de byte único ASCII dos EUA. |
|
4 SECBUFFER_PKG_PARAMS |
Reino. Cadeia de domínio para o desafio. Cadeia de caracteres Unicode que deve ser representável em US ASCII. |
|
5 | SECBUFFER_CHANNEL_BINDINGSSECBUFFER_READONLY |
Contém o valor do token de vinculação de canal. Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Este valor não é suportado. |
fContextReq[in]
Sinalizadores de bits que especificam os atributos exigidos pelo servidor para estabelecer o contexto. Os sinalizadores de bits podem ser combinados usando operações bitwise-OU. Este parâmetro pode ser um ou mais dos seguintes valores.
| Valor | Significado |
|---|---|
| ASC_REQ_ALLOCATE_MEMORY | O Digest aloca buffers de saída para você. Quando terminar de usar os buffers de saída, libere-os chamando a função FreeContextBuffer. |
| ASC_REQ_ALLOW_MISSING_BINDINGS | Indica que Digest não requer ligações de canal para canais internos e externos. Esse valor é usado para compatibilidade com versões anteriores quando o suporte para vinculação de canal de ponto de extremidade não é conhecido. Este valor é mutuamente exclusivo com ASC_REQ_PROXY_BINDINGS. Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Este valor não é suportado. |
| ASC_REQ_CONFIDENTIALITY | Criptografe e descriptografe mensagens. O SSP Digest suporta este sinalizador apenas para SASL. |
| ASC_REQ_PROXY_BINDINGS | Indica que Digest requer ligação de canal. Este valor é mutuamente exclusivo com ASC_REQ_ALLOW_MISSING_BINDINGS. Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Este valor não é suportado. |
| ASC_REQ_CONNECTION | Ode contexto de segurançanão manipulará mensagens de formatação. |
| ASC_REQ_EXTENDED_ERROR | Quando ocorrerem erros, a parte remota será notificada. |
| ASC_REQ_HTTP (0x10000000) | Use o Digest para HTTP. Omita esse sinalizador para usar Digest como um mecanismo SASL. |
| ASC_REQ_INTEGRITY | Assine mensagens e verifique assinaturas. |
| ASC_REQ_REPLAY_DETECT | Detetar pacotes reproduzidos. |
| ASC_REQ_SEQUENCE_DETECT | Detetar mensagens recebidas fora de sequência. |
Para possíveis sinalizadores de atributos e seus significados, consulte Requisitos de contexto. Os sinalizadores usados para este parâmetro são prefixados com ASC_REQ, por exemplo, ASC_REQ_DELEGATE.
Os atributos solicitados podem não ser suportados pelo cliente. Para obter mais informações, consulte o parâmetro pfContextAttr.
[in] TargetDataRep
A representação de dados, como ordem de bytes, no destino. Este parâmetro pode ser SECURITY_NATIVE_DREP ou SECURITY_NETWORK_DREP.
Este parâmetro não é usado com o Digest SSP. Ao usar o SSP Digest, especifique zero para esse parâmetro.
phNewContexto[in, out, optional]
Um ponteiro para um CtxtHandle estrutura. Na primeira chamada para AcceptSecurityContext (Digest), esse ponteiro recebe o novo identificador de contexto. Em chamadas subsequentes, phNewContext pode ser o mesmo que o identificador especificado no parâmetro phContext.
phNewContext nunca deve ser NULL.
pSaída[in, out, optional]
Um ponteiro para um SecBufferDesc estrutura que contém o descritor de buffer de saída. Esse buffer é enviado ao cliente para entrada em chamadas adicionais para InitializeSecurityContext (Digest). 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.
pfContextAttr[out]
Um ponteiro para uma variável que recebe um conjunto de sinalizadores de bit que indicam os atributos do contexto estabelecido. Para obter uma descrição dos vários atributos, consulte Requisitos de contexto. Os sinalizadores usados para este parâmetro são prefixados com ASC_RET, por exemplo, ASC_RET_DELEGATE.
Não verifique se há atributos relacionados à segurança até que a chamada de função final retorne com êxito. Os sinalizadores de atributos não relacionados à segurança, como o sinalizador ASC_RET_ALLOCATED_MEMORY, podem ser verificados antes do retorno final.
ptsTimeStamp[out, optional]
Um ponteiro para um TimeStamp estrutura que recebe o tempo de expiração do contexto. Recomendamos que o pacote de segurança sempre retornar esse valor no horário local.
Este parâmetro é definido como um tempo máximo constante. Não há tempo de expiração para ou credenciais de contexto de segurança Digestou ao usar o SSP Digest.
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 as etapas posteriores da negociação. Portanto, ptsTimeStamp deve ser NULL até a última chamada para a função.
Valor de retorno
Esta função devolve um dos seguintes valores:
Comentários
A função AcceptSecurityContext (Digest) é a contraparte do servidor para a função InitializeSecurityContext (Digest).
Quando o servidor recebe uma solicitação de um cliente, o servidor usa o parâmetro fContextReq para especificar o que requer da sessão. Dessa forma, um servidor pode especificar que os clientes devem ser capazes de usar uma integridade confidencial ou sessão verificada e pode rejeitar clientes que não podem atender a essa demanda. Como alternativa, um servidor não pode exigir nada, e tudo o que o cliente pode fornecer ou requer é retornado no pfContextAttr parâmetro.
Para um pacote que oferece suporte à autenticação de várias pernas, como a autenticação mútua, a sequência de chamada é a seguinte:
- O cliente transmite um token para o servidor.
- O servidor chama AcceptSecurityContext (Digest) primeira vez, que gera um token de resposta que é enviado para o cliente.
- O cliente recebe o token e o passa para InitializeSecurityContext (Digest). Se InitializeSecurityContext (Digest) retornar SEC_E_OK, a autenticação mútua foi concluída e uma sessão segura pode começar. Se InitializeSecurityContext (Digest) retornar um código de erro, a negociação de autenticação mútua será encerrada. Caso contrário, o token de segurança retornado por InitializeSecurityContext (Digest) será enviado ao cliente e as etapas 2 e 3 serão repetidas.
- Não use o valor phContext em chamadas simultâneas para AcceptSecurityContext (Digest). A implementação nos provedores de segurança não é thread-safe.
Os parâmetros fContextReq e pfContextAttr são máscaras de bits que representam vários atributos de contexto. Para obter uma descrição dos vários atributos, consulte Requisitos de contexto.
Observação
O parâmetro pfContextAttr é válido em qualquer retorno bem-sucedido, mas somente no retorno bem-sucedido final você deve examinar os sinalizadores referentes aos aspetos de segurança do contexto. Os retornos intermediários podem definir, por exemplo, o sinalizador ISC_RET_ALLOCATED_MEMORY.
O chamador é responsável por determinar se os atributos de contexto finais são suficientes. Se, por exemplo, a confidencialidade (encriptação) foi solicitada, mas não pôde ser estabelecida, algumas aplicações podem optar por desligar a ligação imediatamente. Se o contexto de segurança não puder ser estabelecido, o servidor deverá liberar o contexto parcialmente criado chamando a função DeleteSecurityContext. Para obter informações sobre quando chamar o função de DeleteSecurityContext, consulte DeleteSecurityContext.
Depois que o de contexto de segurança tiver sido 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.
Requerimentos
| Exigência | Valor |
|---|---|
| Cliente mínimo suportado | Windows XP [apenas aplicações de ambiente de trabalho] |
| Servidor mínimo suportado | Windows Server 2003 [apenas aplicações de ambiente de trabalho] |
| Cabeçalho | Sspi.h (inclui Security.h) |
| Biblioteca | Secur32.lib |
| DLL | Secur32.dll |