LSA_AP_LOGON_USER_EX2 funzione di callback (ntsecpkg.h)
Usato per autenticare un tentativo di accesso utente nell'accesso iniziale dell'utente. Viene stabilita una nuova sessione di accesso per l'utente e vengono restituite le informazioni di convalida per l'utente.
Sintassi
LSA_AP_LOGON_USER_EX2 LsaApLogonUserEx2;
NTSTATUS LsaApLogonUserEx2(
[in] PLSA_CLIENT_REQUEST ClientRequest,
[in] SECURITY_LOGON_TYPE LogonType,
[in] PVOID ProtocolSubmitBuffer,
[in] PVOID ClientBufferBase,
[in] ULONG SubmitBufferSize,
[out] PVOID *ProfileBuffer,
[out] PULONG ProfileBufferSize,
[out] PLUID LogonId,
[out] PNTSTATUS SubStatus,
[out] PLSA_TOKEN_INFORMATION_TYPE TokenInformationType,
[out] PVOID *TokenInformation,
[out] PUNICODE_STRING *AccountName,
[out] PUNICODE_STRING *AuthenticatingAuthority,
[out] PUNICODE_STRING *MachineName,
[out] PSECPKG_PRIMARY_CRED PrimaryCredentials,
[out] PSECPKG_SUPPLEMENTAL_CRED_ARRAY *SupplementalCredentials
)
{...}
Parametri
[in] ClientRequest
Puntatore a un buffer LSA_CLIENT_REQUEST opaco che rappresenta la richiesta del client.
[in] LogonType
SECURITY_LOGON_TYPE valore che identifica il tipo di accesso.
[in] ProtocolSubmitBuffer
Buffer che fornisce le informazioni di autenticazione specifiche per il pacchetto di autenticazione.
[in] ClientBufferBase
Buffer che fornisce l'indirizzo all'interno del processo client in cui risiedevano le informazioni di autenticazione. Potrebbe essere necessario correggere eventuali puntatori all'interno del buffer delle informazioni di autenticazione.
[in] SubmitBufferSize
Valore ULONG che indica le dimensioni, in byte, del buffer delle informazioni di autenticazione.
[out] ProfileBuffer
Puntatore che riceve l'indirizzo del buffer del profilo nel processo client. Il pacchetto di autenticazione è responsabile dell'allocazione di ProfileBuffer all'interno del processo client chiamando la funzione AllocateClientBuffer . Tuttavia, se l'LSA rileva successivamente un errore che impedisce un accesso riuscito, l'LSA si occuperà di liberare questo buffer.
Il contenuto di questo buffer è determinato dal pacchetto di autenticazione. L'LSA non modifica questo buffer; restituisce semplicemente il valore alla funzione LsaLogonUser .
[out] ProfileBufferSize
Puntatore a un ULONG che riceve le dimensioni del buffer ProfileBuffer .
[out] LogonId
Puntatore a una variabile LUID che riceve il nuovo ID di accesso che identifica in modo univoco questa sessione di accesso. Il pacchetto di autenticazione è responsabile dell'allocazione di questo LUID e della creazione della sessione di accesso LSA per questo accesso.
[out] SubStatus
Puntatore a un NTSTATUS che riceve il motivo degli errori dovuti alle restrizioni dell'account. I valori restituiti in SubStatus sono determinati dal pacchetto di autenticazione.
Nella tabella seguente sono elencati i valori SubStatus per i pacchetti di autenticazione MSV1_0 e Kerberos.
Altre informazioni sui codici NTSTATUS sono disponibili nel file di intestazione Subauth.h fornito con Platform SDK.
La funzione LsaNtStatusToWinError converte un codice NTSTATUS in un codice di errore di Windows.
[out] TokenInformationType
Puntatore che riceve l'indirizzo di un valore di LSA_TOKEN_INFORMATION_TYPE che indica il tipo di informazioni restituite per l'inclusione nel token da creare. Le informazioni vengono restituite tramite il parametro TokenInformation .
[out] TokenInformation
Puntatore che riceve l'indirizzo delle informazioni da includere nel token. Il formato e il contenuto di TokenInformation sono indicati dal parametro TokenInformationType . Il pacchetto di autenticazione è responsabile dell'allocazione della memoria usata da TokenInformation; tuttavia, questa memoria verrà liberata dall'LSA.
[out] AccountName
Puntatore a una struttura LSA_UNICODE_STRING che riceve il nome dell'account utente. AccountName deve sempre essere restituito indipendentemente dall'esito positivo o negativo della chiamata; la relativa stringa è inclusa nel record di controllo per un tentativo di autenticazione. Il pacchetto di autenticazione è responsabile dell'allocazione della memoria usata da AccountName; tuttavia, questa memoria verrà liberata dall'LSA.
[out] AuthenticatingAuthority
Facoltativa. Puntatore a una struttura LSA_UNICODE_STRING che riceve la descrizione dell'autorità di autenticazione per l'accesso. Questo parametro può essere NULL. Questa stringa è inclusa nel record di controllo per un tentativo di autenticazione. Il pacchetto di autenticazione è responsabile dell'allocazione della memoria usata da AuthenticatingAuthority; tuttavia, questa memoria verrà liberata dall'LSA.
Il pacchetto di autenticazione MSV1_0 restituisce il nome di dominio del dominio che convalida l'account. Il pacchetto di autenticazione Kerberos restituisce il nome di dominio NetBIOS.
[out] MachineName
Facoltativa. Puntatore che riceve l'indirizzo di una struttura UNICODE_STRING contenente il nome del computer del client. Questa stringa può essere omessa facoltativamente. Questa stringa è inclusa nel record di controllo per questo tentativo di autenticazione. Il pacchetto di autenticazione è responsabile dell'allocazione della memoria usata da MachineName; tuttavia, questa memoria verrà liberata dall'LSA.
Il pacchetto di autenticazione MSV1_0 restituisce il nome NetBIOS della workstation del client.
[out] PrimaryCredentials
Puntatore a una struttura SECPKG_PRIMARY_CRED che restituisce le credenziali primarie per la consegna ad altri pacchetti.
[out] SupplementalCredentials
Puntatore a una matrice di SECPKG_SUPPLEMENTAL_CRED_ARRAY di credenziali supplementari per altri pacchetti.
Valore restituito
Se la funzione ha esito positivo, deve restituire STATUS_SUCCESS.
In caso contrario, deve restituire un codice di errore NTSTATUS, che può essere uno dei valori seguenti o uno dei valori restituiti della funzione criteri LSA.
Codice restituito | Descrizione |
---|---|
|
Impossibile completare l'accesso perché la quota di memoria del client non è sufficiente per allocare il buffer restituito. |
|
Nessun controller di dominio è disponibile per gestire la richiesta di autenticazione. |
|
Il tentativo di accesso ha avuto esito negativo. Il motivo dell'errore non è specificato; i motivi tipici includono nomi utente e password con errori di ortografia. |
|
L'account utente e la password sono stati legittimi, ma le restrizioni dell'account utente impediscono l'accesso riuscito in questo momento. Per altre informazioni, vedere il parametro SubStatus . |
|
Le informazioni di autenticazione fornite non vengono riconosciute dal pacchetto di autenticazione. |
|
LogonType non valido. |
|
L'ID di accesso selezionato per questa sessione di accesso (nel parametro LogonId ) esiste già. |
|
Il database SAM o il servizio Netlogon è obbligatorio, ma non è disponibile. |
|
Le quote di memoria virtuale o file di paging del client non sono sufficienti per allocare il buffer restituito. |
Le applicazioni chiamanti possono usare la funzione LsaNtStatusToWinError per convertire il codice NTSTATUS in un codice di errore di Windows.
Commenti
I pacchetti di autenticazione devono implementare una delle funzioni seguenti: LsaApLogonUser, LsaApLogonUserEx o LsaApLogonUserEx2.
Requisiti
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | ntsecpkg.h |