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:
- Identificatore di sicurezza (SID) per l'account dell'utente
- SID per i gruppi di cui l'utente è membro
- SID di accesso che identifica la sessione di accesso corrente
- Elenco dei privilegi detenuti dall'utente o dai gruppi dell'utente
- SID proprietario
- SID per il gruppo primario
- DaCL predefinito utilizzato dal sistema quando l'utente crea un oggetto a protezione diretta senza specificare un descrittore di sicurezza
- Origine del token di accesso
- Indica se il token è un token primario o di rappresentazione
- Elenco facoltativo di SID di limitazione
- Livelli di rappresentazione correnti
- Altre statistiche
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. |