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 exige 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 de cliente. A representação permite que o thread interaja com objetos protegíveis usando o contexto de segurança do cliente. Um thread que está representando 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, consulte Impersonation.

Você pode usar as seguintes funções 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 novo 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 de 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 de um token, o grupo primário ou a DACL padrão.

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

Estrutura Descrição
controle de TOKEN _ Informações que identificam um token de acesso.
_DACL padrão do token _ A DACL padrão que o sistema usa nos descritores de segurança de novos objetos criados por um thread.
grupos de TOKENs _ Especifica os SIDs e atributos dos SIDs de grupo em um token de acesso.
proprietário do TOKEN _ O SID do proprietário padrão para os descritores de segurança dos novos objetos.
_grupo primário de tokens _ O SID do grupo primário padrão para os descritores de segurança dos novos objetos.
privilégios de TOKEN _ Os privilégios associados a um token de acesso. Também determina se os privilégios estão habilitados.
origem do TOKEN _ A origem de um token de acesso.
Estatísticas de TOKEN _ Estatísticas associadas a um token de acesso.
usuário do TOKEN _ 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
_classe de informações de token _ Identifica o tipo de informações que estão sendo definidas ou recuperadas de um token de acesso.
tipo de TOKEN _ Identifica um token de acesso como um token primário ou de representação.