Token di accesso

Un token di accesso è un oggetto che descrive il contesto di sicurezza di un processo o di un thread. Le informazioni in un token includono l'identità e i privilegi dell'account utente associato al processo o al thread. Quando un utente accede, il sistema verifica la password dell'utente confrontandolo con le informazioni archiviate in un database di sicurezza. Se la password viene autenticata, il sistema produce un token di accesso. Ogni processo eseguito per conto di questo utente ha una copia di questo token di accesso.

Il sistema usa un token di accesso per identificare l'utente quando un thread interagisce con un oggetto a protezione diretta o tenta di eseguire un'attività di sistema che richiede privilegi. I token di accesso contengono le informazioni seguenti:

Ogni processo ha un token primario che descrive il contesto di sicurezza dell'account utente associato al processo. Per impostazione predefinita, il sistema usa il token primario quando un thread del processo interagisce con un oggetto a protezione diretta. Inoltre, un thread può rappresentare un account client. La rappresentazione consente al thread di interagire con oggetti a protezione diretta usando il contesto di sicurezza del client. Un thread che rappresenta un client ha sia un token primario che un token di rappresentazione.

Usare la funzione OpenProcessToken per recuperare un handle al token primario di un processo. Usare la funzione OpenThreadToken per recuperare un handle per il token di rappresentazione di un thread. Per altre informazioni, vedere Rappresentazione.

È possibile usare le funzioni seguenti per modificare i token di accesso.

Funzione Descrizione
AdjustTokenGroups Modifica le informazioni sul gruppo in un token di accesso.
AdjustTokenPrivileges Abilita o disabilita i privilegi in un token di accesso. Non concede nuovi privilegi o revoca quelli esistenti.
CheckTokenMembership Determina se un SID specificato è abilitato in un token di accesso specificato.
CreateRestrictedToken Crea un nuovo token che rappresenta una versione con restrizioni di un token esistente. Il token con restrizioni può avere SID disabilitati, privilegi eliminati e un elenco di SID con restrizioni.
DuplicateToken Crea un nuovo token di rappresentazione che duplica un token esistente.
DuplicateTokenEx Crea un nuovo token primario o un token di rappresentazione che duplica un token esistente.
GetTokenInformation Recupera informazioni su un token.
IsTokenRestricted Determina se un token ha un elenco di SID limitati.
OpenProcessToken Recupera un handle per il token di accesso primario per un processo.
OpenThreadToken Recupera un handle per il token di accesso di rappresentazione per un thread.
SetThreadToken Assegna o rimuove un token di rappresentazione per un thread.
SetTokenInformation Modifica il proprietario, il gruppo primario o l'elenco DACL predefinito di un token.

 

Le funzioni del token di accesso usano le strutture seguenti per descrivere le parti di un token di accesso.

Struttura Descrizione
TOKEN_CONTROL Informazioni che identificano un token di accesso.
TOKEN_DEFAULT_DACL DaCL predefinito usato dal sistema nei descrittori di sicurezza dei nuovi oggetti creati da un thread.
TOKEN_GROUPS Specifica i SID e gli attributi dei SID del gruppo in un token di accesso.
TOKEN_OWNER SID proprietario predefinito per i descrittori di sicurezza dei nuovi oggetti.
TOKEN_PRIMARY_GROUP SID del gruppo primario predefinito per i descrittori di sicurezza dei nuovi oggetti.
TOKEN_PRIVILEGES Privilegi associati a un token di accesso. Determina anche se i privilegi sono abilitati.
TOKEN_SOURCE Origine di un token di accesso.
TOKEN_STATISTICS Statistiche associate a un token di accesso.
TOKEN_USER SID dell'utente associato a un token di accesso.

 

Le funzioni del token di accesso usano i tipi di enumerazione seguenti.

Tipo di enumerazione Specifica
TOKEN_INFORMATION_CLASS Identifica il tipo di informazioni impostate o recuperate da un token di accesso.
TOKEN_TYPE Identifica un token di accesso come token primario o di rappresentazione.