Funzione LsaCallAuthenticationPackage (ntsecapi.h)
La funzione LsaCallAuthenticationPackage viene usata da un'applicazione di accesso per comunicare con un pacchetto di autenticazione.
Questa funzione viene in genere usata per accedere ai servizi forniti dal pacchetto di autenticazione.
Sintassi
NTSTATUS LsaCallAuthenticationPackage(
[in] HANDLE LsaHandle,
[in] ULONG AuthenticationPackage,
[in] PVOID ProtocolSubmitBuffer,
[in] ULONG SubmitBufferLength,
[out] PVOID *ProtocolReturnBuffer,
[out] PULONG ReturnBufferLength,
[out] PNTSTATUS ProtocolStatus
);
Parametri
[in] LsaHandle
Handle ottenuto da una chiamata precedente a LsaRegisterLogonProcess o LsaConnectUntrusted.
[in] AuthenticationPackage
Fornisce l'identificatore del pacchetto di autenticazione. Questo valore viene ottenuto chiamando LsaLookupAuthenticationPackage.
[in] ProtocolSubmitBuffer
Buffer del messaggio specifico del pacchetto di autenticazione passato al pacchetto di autenticazione.
Per informazioni sul formato e sul contenuto di questo buffer, vedere la documentazione per il singolo pacchetto di autenticazione.
[in] SubmitBufferLength
Indica la lunghezza, in byte, del buffer ProtocolSubmitBuffer .
[out] ProtocolReturnBuffer
Puntatore che riceve l'indirizzo del buffer restituito dal pacchetto di autenticazione.
Per informazioni sul formato e sul contenuto di questo buffer, vedere la documentazione per il singolo pacchetto di autenticazione.
Questo buffer viene allocato da questa funzione. Al termine dell'uso di questo buffer, liberare la memoria chiamando la funzione LsaFreeReturnBuffer .
[out] ReturnBufferLength
Puntatore a un ULONG che riceve la lunghezza del buffer restituito, in byte.
[out] ProtocolStatus
Se la funzione ha esito positivo, questo parametro riceve un codice NTSTATUS che indica lo stato di completamento del pacchetto di autenticazione.
Valore restituito
Se la funzione ha esito positivo, il valore restituito viene STATUS_SUCCESS. Controllare il parametro ProtocolStatus per ottenere lo stato restituito dal pacchetto di autenticazione.
Se la funzione ha esito negativo, il valore restituito è un codice NTSTATUS . Di seguito sono riportati i possibili codici di errore.
Codice restituito | Descrizione |
---|---|
|
Impossibile completare la chiamata perché la quota di memoria del client non è sufficiente per allocare il buffer restituito. |
|
Il pacchetto di autenticazione specificato non viene riconosciuto dall'LSA. |
|
Il client Kerberos ha ricevuto un certificato KDC non valido. Per l'accesso del dispositivo, è necessaria una convalida KDC rigorosa, quindi il KDC deve disporre di certificati che usano il modello di autenticazione Kerberos o un equivalente. Il certificato KDC potrebbe anche essere scaduto, revocato o il client è sotto attacco attivo dell'invio di richieste al server errato. |
|
Il client Kerberos usa un certificato di sistema non valido. Per l'accesso del dispositivo, deve essere presente un nome DNS. Inoltre, il certificato di sistema potrebbe essere scaduto o è possibile selezionare quello errato. |
Per altre informazioni, vedere Valori restituiti della funzione criteri LSA.
La funzione LsaNtStatusToWinError converte un codice NTSTATUS in un codice di errore di Windows.
Commenti
Le applicazioni di accesso possono chiamare LsaCallAuthenticationPackage per comunicare con un pacchetto di autenticazione. Esistono diversi motivi per cui un'applicazione può eseguire questa operazione:
- Per implementare protocolli di autenticazione a più messaggi, ad esempio il protocollo NTLM Challenge-Response.
- Per passare le informazioni sulla modifica dello stato al pacchetto di autenticazione. Ad esempio, NTLM potrebbe notificare al pacchetto MSV1_0 che un controller di dominio precedentemente non raggiungibile è ora raggiungibile. Il pacchetto di autenticazione eseguirà quindi di nuovo l'accesso a qualsiasi utente connesso a tale controller di dominio.
È necessario chiamare LsaCallAuthenticationPackage per pulire le credenziali del dispositivo PKINIT per LOCAL_SYSTEM e NETWORK_SERVICE. Quando non è presente alcuna credenziale del dispositivo PKINIT, una chiamata riuscita non esegue alcuna operazione. Quando è presente una credenziale del dispositivo PKINIT, una chiamata riuscita pulisce le credenziali del dispositivo PKINIT in modo che rimangano solo le credenziali della password.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | ntsecapi.h |
Libreria | Secur32.lib |
DLL | Secur32.dll |