Condividi tramite


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.

Valore Significato
STATUS_INVALID_LOGON_HOURS
L'account utente ha restrizioni temporali; non può essere utilizzato per eseguire l'accesso in questo momento.
STATUS_INVALID_WORKSTATION
L'account utente ha restrizioni per la workstation; non può essere utilizzato per accedere alla workstation corrente.
STATUS_PASSWORD_EXPIRED
La password dell'account utente è scaduta.
STATUS_ACCOUNT_DISABLED
L'account utente è attualmente disabilitato e non può essere usato per accedere.
 

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
STATUS_QUOTA_EXCEEDED
Impossibile completare l'accesso perché la quota di memoria del client non è sufficiente per allocare il buffer restituito.
STATUS_NO_LOGON_SERVERS
Nessun controller di dominio è disponibile per gestire la richiesta di autenticazione.
STATUS_LOGON_FAILURE
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.
STATUS_ACCOUNT_RESTRICTION
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 .
STATUS_BAD_VALIDATION_CLASS
Le informazioni di autenticazione fornite non vengono riconosciute dal pacchetto di autenticazione.
STATUS_INVALID_LOGON_TYPE
LogonType non valido.
STATUS_LOGON_SESSION_COLLISION
L'ID di accesso selezionato per questa sessione di accesso (nel parametro LogonId ) esiste già.
STATUS_NETLOGON_NOT_STARTED
Il database SAM o il servizio Netlogon è obbligatorio, ma non è disponibile.
STATUS_NO_MEMORY
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

Vedi anche

LSA_CLIENT_REQUEST

LSA_TOKEN_INFORMATION_TYPE

LSA_UNICODE_STRING

LsaApLogonUser

LsaApLogonUserEx

LsaCallAuthenticationPackage