funzione Msv1_0SubAuthenticationRoutine (subauth.h)

La funzione Msv1_0SubAuthenticationRoutine esegue l'autenticazione specifica del client o del server.

Le credenziali e le informazioni dell'entità di sicurezza del database sam (Security Accounts Manager ) vengono passate a questa funzione per l'autenticazione.

Questa funzione viene implementata dalle DLL personalizzate del pacchetto di autenticazione secondaria da usare con il pacchetto di autenticazione MSV1_0.

La funzione Msv1_0SubAuthenticationRoutine viene chiamata solo per un'autenticazione non interattiva, solo nel server di autenticazione in cui risiede l'account e solo se una DLL di autenticazione secondaria è registrata nella chiave corretta nel Registro di sistema.

Nota Il pacchetto di autenticazione Kerberos non chiama questa routine.
 

Sintassi

NTSTATUS Msv1_0SubAuthenticationRoutine(
  [in]  NETLOGON_LOGON_INFO_CLASS LogonLevel,
  [in]  PVOID                     LogonInformation,
  [in]  ULONG                     Flags,
  [in]  PUSER_ALL_INFORMATION     UserAll,
  [out] PULONG                    WhichFields,
  [out] PULONG                    UserFlags,
  [out] PBOOLEAN                  Authoritative,
  [out] PLARGE_INTEGER            LogoffTime,
  [out] PLARGE_INTEGER            KickoffTime
);

Parametri

[in] LogonLevel

Specifica il livello di informazioni specificate nel parametro LogonInformation . Questo parametro è in genere impostato su NetlogonInteractiveInformation.

[in] LogonInformation

Puntatore a una struttura NETLOGON_LOGON_IDENTITY_INFO . I membri di questa struttura contengono informazioni sull'utente che esegue l'accesso. Il membro LogonDomainName di questa struttura viene ignorato.

[in] Flags

facoltativo. Contiene flag che descrivono le circostanze dell'accesso. Questo parametro può avere uno dei valori seguenti.

Valore Significato
MSV1_0_PASSTHRU
Autenticazione pass-through. L'utente non si connette a questo computer.
MSV1_0_GUEST_LOGON
Si tratta di un nuovo tentativo di accesso usando l'account utente GUEST.

[in] UserAll

Puntatore a una struttura USER_ALL_INFORMATION che contiene la descrizione dell'utente restituito dal database SAM.

[out] WhichFields

Restituisce i membri della struttura USER_ALL_INFORMATION che devono essere riscritto nel database SAM. Questi membri verranno scritti solo se Msv1_0SubAuthenticationRoutine restituisce l'esito positivo al chiamante. Solo il valore seguente è valido.

Valore Significato
USER_ALL_PARAMETERS
Scrivere i dati contenuti nel membro Parameters della struttura UserAll nel database SAM.

Se le dimensioni del buffer UNICODE_STRING del membro Parameters vengono modificate, Msv1_0SubAuthenticationRoutine deve eliminare il buffer usando la funzione MIDL_user_free e riallocarla usando la funzione MIDL_user_allocate .

[out] UserFlags

Valori da restituire dal parametro ProfileBuffer della funzione LsaLogonUser, quando contiene una struttura MSV1_0_LM20_LOGON_PROFILE. I valori seguenti sono attualmente definiti per il membro UserFlags della struttura.

Valore Significato
LOGON_GUEST
Si tratta di un accesso guest.
LOGON_NOENCRYPTION
Il chiamante non ha specificato le credenziali crittografate.
 
Nota Per convenzione, i pacchetti di sottoautenticazione restituiscono bit solo nel byte di ordine elevato di UserFlags; tuttavia, questa convenzione non viene applicata.
 

[out] Authoritative

Puntatore a un valore booleano che indica se lo stato restituito è uno stato autorevole che deve essere restituito al chiamante originale. Se il valore restituito è FALSE, la richiesta di accesso può essere riprovata in un altro controller di dominio. Questo parametro deve restituire informazioni valide indipendentemente dal valore restituito della chiamata di funzione.

[out] LogoffTime

Puntatore a un valore che riceve il momento in cui l'utente deve disconnettersi dal sistema. Questa volta viene usata per controllare la durata dell'accesso e viene specificata come ora di sistema relativa GMT.

[out] KickoffTime

Puntatore a un valore che riceve il momento in cui l'utente deve essere disconnesso dal sistema. Questa volta viene usata per controllare la durata dell'accesso e viene specificata come ora di sistema relativa GMT. Se l'utente non deve essere disconnesso, specificare un valore positivo di grandi dimensioni, ad esempio:

KickoffTime->HighPart = 0x7FFFFFFF;
KickoffTime->LowPart = 0xFFFFFFFF;

Valore restituito

Questa funzione deve restituire uno dei valori seguenti.

Codice restituito Descrizione
STATUS_SUCCESS
Non è stato generato alcun errore.
STATUS_ACCOUNT_DISABLED
L'account è disabilitato.
STATUS_ACCOUNT_EXPIRED
L'account è scaduto.
STATUS_ACCOUNT_LOCKED_OUT
L'account è bloccato.
STATUS_INVALID_INFO_CLASS
LogonLevel non valido.
STATUS_INVALID_LOGON_HOURS
L'utente non è autorizzato ad accedere in questo momento.
STATUS_INVALID_WORKSTATION
L'utente non è autorizzato ad accedere alla workstation specificata.
STATUS_NO_SUCH_USER
L'utente specificato non ha account.
STATUS_PASSWORD_EXPIRED
La password è scaduta.
STATUS_PASSWORD_MUST_CHANGE
L'account è contrassegnato per indicare che la password deve essere modificata nell'accesso successivo.
STATUS_WRONG_PASSWORD
Password non valida.

Commenti

Questa funzione viene chiamata dal pacchetto di autenticazione MSV1_0 se parte del parametro AuthenticationInformation indica che la sottoautenticazione deve essere eseguita e se una DLL di autenticazione secondaria che esporta la funzione Msv1_0SubAuthenticationRoutine viene registrata correttamente nella workstation.

Il pacchetto di autenticazione MSV1_0 non supporta l'autenticazione secondaria per gli accessi interattivi, che richiedono la struttura MSV1_0_INTERACTIVE_LOGON . Gli accessi di rete, che richiedono la struttura MSV1_0_LM20_LOGON , possono usare l'autenticazione secondaria.

La funzione Msv1_0SubAuthenticationRoutine viene chiamata dopo che il controller di dominio corretto è stato individuato e tutte le informazioni sull'entità di sicurezza da autenticare sono state recuperate dal database SAM. Quando viene usata la sottoautenticazione, l'autenticazione è responsabilità della DLL di autenticazione secondaria e deve essere eseguita dalla funzione Msv1_0SubAuthenticationRoutine esportata da tale DLL.

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 subauth.h