Função LsaCallAuthenticationPackage (ntsecapi.h)
A função LsaCallAuthenticationPackage é usada por um aplicativo de logon para se comunicar com um pacote de autenticação.
Normalmente, essa função é usada para acessar os serviços fornecidos pelo pacote de autenticação.
Sintaxe
NTSTATUS LsaCallAuthenticationPackage(
[in] HANDLE LsaHandle,
[in] ULONG AuthenticationPackage,
[in] PVOID ProtocolSubmitBuffer,
[in] ULONG SubmitBufferLength,
[out] PVOID *ProtocolReturnBuffer,
[out] PULONG ReturnBufferLength,
[out] PNTSTATUS ProtocolStatus
);
Parâmetros
[in] LsaHandle
Um identificador obtido de uma chamada anterior para LsaRegisterLogonProcess ou LsaConnectUntrusted.
[in] AuthenticationPackage
Fornece o identificador do pacote de autenticação. Esse valor é obtido chamando LsaLookupAuthenticationPackage.
[in] ProtocolSubmitBuffer
Um buffer de mensagem específico do pacote de autenticação passado para o pacote de autenticação.
Para obter informações sobre o formato e o conteúdo desse buffer, consulte a documentação do pacote de autenticação individual.
[in] SubmitBufferLength
Indica o comprimento, em bytes, do buffer ProtocolSubmitBuffer .
[out] ProtocolReturnBuffer
Um ponteiro que recebe o endereço do buffer retornado pelo pacote de autenticação.
Para obter informações sobre o formato e o conteúdo desse buffer, consulte a documentação do pacote de autenticação individual.
Esse buffer é alocado por essa função. Quando terminar de usar esse buffer, libere a memória chamando a função LsaFreeReturnBuffer .
[out] ReturnBufferLength
Um ponteiro para um ULONG que recebe o comprimento do buffer retornado, em bytes.
[out] ProtocolStatus
Se a função for bem-sucedida, esse parâmetro receberá um código NTSTATUS que indica o status de conclusão do pacote de autenticação.
Retornar valor
Se a função for bem-sucedida, o valor retornado será STATUS_SUCCESS. Verifique o parâmetro ProtocolStatus para obter o status retornado pelo pacote de autenticação.
Se a função falhar, o valor retornado será um código NTSTATUS . Veja a seguir possíveis códigos de erro.
Código de retorno | Descrição |
---|---|
|
Não foi possível concluir a chamada porque a cota de memória do cliente não é suficiente para alocar o buffer de retorno. |
|
O pacote de autenticação especificado não é reconhecido pela LSA. |
|
O cliente Kerberos recebeu um certificado KDC que não é válido. Para o logon do dispositivo, a validação estrita do KDC é necessária, portanto, o KDC deve ter certificados que usem o modelo "Autenticação Kerberos" ou equivalente. Além disso, o certificado KDC pode ter expirado, revogado ou o cliente está sob ataque ativo de enviar solicitações para o servidor errado. |
|
O cliente Kerberos está usando um certificado do sistema que não é válido. Para o logon do dispositivo, deve haver um nome DNS. Além disso, o certificado do sistema pode ter expirado ou o errado pode ser selecionado. |
Para obter mais informações, consulte Valores retornados da função de política LSA.
A função LsaNtStatusToWinError converte um código NTSTATUS em um código de erro do Windows.
Comentários
Os aplicativos de logon podem chamar LsaCallAuthenticationPackage para se comunicar com um pacote de autenticação. Há vários motivos pelos quais um aplicativo pode fazer isso:
- Para implementar protocolos de autenticação de várias mensagens, como o protocolo NTLM Challenge-Response.
- Para passar informações de alteração de estado para o pacote de autenticação. Por exemplo, o NTLM pode notificar o pacote MSV1_0 de que um controlador de domínio anteriormente inacessível agora está acessível. Em seguida, o pacote de autenticação logonia novamente todos os usuários conectados a esse controlador de domínio.
Você deve chamar LsaCallAuthenticationPackage para limpo as credenciais do dispositivo PKINIT para LOCAL_SYSTEM e NETWORK_SERVICE. Quando não há nenhuma credencial de dispositivo PKINIT, uma chamada bem-sucedida não faz nenhuma operação. Quando há uma credencial de dispositivo PKINIT, uma chamada bem-sucedida limpa a credencial do dispositivo PKINIT para que apenas a credencial de senha permaneça.
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 | ntsecapi.h |
Biblioteca | Secur32.lib |
DLL | Secur32.dll |