Tokens de acesso

Um token de acesso é um objeto que descreve o contexto de segurança de um processo ou thread. As informações em um token incluem a identidade e os privilégios da conta de usuário associada ao processo ou thread. Quando um usuário faz logon, o sistema verifica a senha do usuário comparando-a com as informações armazenadas em um banco de dados de segurança. Se a senha for autenticada, o sistema produzirá um token de acesso. Cada processo executado em nome desse usuário tem uma cópia desse token de acesso.

O sistema usa um token de acesso para identificar o usuário quando um thread interage com um objeto protegível ou tenta executar uma tarefa do sistema que requer privilégios. Os tokens de acesso contêm as seguintes informações:

Cada processo tem um token primário que descreve o contexto de segurança da conta de usuário associada ao processo. Por padrão, o sistema usa o token primário quando um thread do processo interage com um objeto protegível. Além disso, um thread pode representar uma conta cliente. A representação permite que o thread interaja com objetos protegíveis usando o contexto de segurança do cliente. Um thread que representa um cliente tem um token primário e um token de representação.

Use a função OpenProcessToken para recuperar um identificador para o token primário de um processo. Use a função OpenThreadToken para recuperar um identificador para o token de representação de um thread. Para obter mais informações, confira Representação.

Você pode usar as funções a seguir para manipular tokens de acesso.

Função Descrição
AdjustTokenGroups Altera as informações do grupo em um token de acesso.
AdjustTokenPrivileges Habilita ou desabilita os privilégios em um token de acesso. Ele não concede novos privilégios nem revoga os existentes.
CheckTokenMembership Determina se um SID especificado está habilitado em um token de acesso especificado.
Createrestrictedtoken Cria um novo token que é uma versão restrita de um token existente. O token restrito pode ter SIDs desabilitados, privilégios excluídos e uma lista de SIDs restritos.
DuplicateToken Cria um novo token de representação que duplica um token existente.
DuplicateTokenEx Cria um token primário ou token de representação que duplica um token existente.
GetTokenInformation Recupera informações sobre um token.
IsTokenRestricted Determina se um token tem uma lista de SIDs de restrição.
OpenProcessToken Recupera um identificador para o token de acesso primário para um processo.
Openthreadtoken Recupera um identificador para o token de acesso de representação de um thread.
Setthreadtoken Atribui ou remove um token de representação para um thread.
SetTokenInformation Altera o proprietário, o grupo primário ou o DACL padrão de um token.

 

As funções de token de acesso usam as estruturas a seguir para descrever as partes de um token de acesso.

Estrutura Descrição
TOKEN_CONTROL Informações que identificam um token de acesso.
TOKEN_DEFAULT_DACL A DACL padrão que o sistema usa nos descritores de segurança de novos objetos criados por um thread.
TOKEN_GROUPS Especifica os SIDs e atributos dos SIDs de grupo em um token de acesso.
TOKEN_OWNER O SID de proprietário padrão para os descritores de segurança de novos objetos.
TOKEN_PRIMARY_GROUP O SID do grupo primário padrão para os descritores de segurança de novos objetos.
TOKEN_PRIVILEGES Os privilégios associados a um token de acesso. Também determina se os privilégios estão habilitados.
TOKEN_SOURCE A origem de um token de acesso.
TOKEN_STATISTICS Estatísticas associadas a um token de acesso.
TOKEN_USER O SID do usuário associado a um token de acesso.

 

As funções de token de acesso usam os seguintes tipos de enumeração.

Tipo de enumeração Especifica
TOKEN_INFORMATION_CLASS Identifica o tipo de informação que está sendo definida ou recuperada de um token de acesso.
TOKEN_TYPE Identifica um token de acesso como um token primário ou de representação.