Partilhar via


Classe CAccessToken

Essa classe é um wrapper para um token de acesso.

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

class CAccessToken

Membros

Construtores públicos

Nome Descrição
CAccessToken::~CAccessToken O destruidor.

Métodos públicos

Nome Descrição
CAccessToken::Attach Chame esse método para assumir a propriedade do identificador de token de acesso fornecido.
CAccessToken::CheckTokenMembership Chame esse método para determinar se um SID (identificador de segurança) especificado está habilitado no objeto CAccessToken.
CAccessToken::CreateImpersonationToken Chame esse método para criar um novo token de acesso de representação.
CAccessToken::CreatePrimaryToken Chame esse método para criar um novo token primário.
CAccessToken::CreateProcessAsUser Chame esse método para criar um novo processo em execução no contexto de segurança do usuário representado pelo objeto CAccessToken.
CAccessToken::CreateRestrictedToken Chame esse método para criar um objeto CAccessToken novo e restrito.
CAccessToken::Detach Chame esse método para revogar a propriedade do token de acesso.
CAccessToken::DisablePrivilege Chame esse método para desabilitar um privilégio no objeto CAccessToken.
CAccessToken::DisablePrivileges Chame esse método para desabilitar um ou mais privilégios no objeto CAccessToken.
CAccessToken::EnablePrivilege Chame esse método para habilitar um privilégio no objeto CAccessToken.
CAccessToken::EnablePrivileges Chame esse método para habilitar um ou mais privilégios no objeto CAccessToken.
CAccessToken::GetDefaultDacl Chame esse método para retornar a DACL padrão do objeto CAccessToken.
CAccessToken::GetEffectiveToken Chame esse método para obter o objeto CAccessToken igual ao token de acesso em vigor para o thread atual.
CAccessToken::GetGroups Chame esse método para retornar os grupos de tokens do objeto CAccessToken.
CAccessToken::GetHandle Chame esse método para recuperar um identificador para o token de acesso.
CAccessToken::GetImpersonationLevel Chame esse método para obter o nível de representação do token de acesso.
CAccessToken::GetLogonSessionId Chame esse método para obter a ID da sessão de logon associada ao objeto CAccessToken.
CAccessToken::GetLogonSid Chame esse método para obter o SID de logon associado ao objeto CAccessToken.
CAccessToken::GetOwner Chame esse método para obter o proprietário associado ao objeto CAccessToken.
CAccessToken::GetPrimaryGroup Chame esse método para obter o grupo primário associado ao objeto CAccessToken.
CAccessToken::GetPrivileges Chame esse método para obter os privilégios associados ao objeto CAccessToken.
CAccessToken::GetProcessToken Chame esse método para inicializar o CAccessToken com o token de acesso do processo fornecido.
CAccessToken::GetProfile Chame esse método para obter o identificador apontando para o perfil de usuário associado ao objeto CAccessToken.
CAccessToken::GetSource Chame esse método para obter a origem do objeto CAccessToken.
CAccessToken::GetStatistics Chame esse método para obter informações associadas ao objeto CAccessToken.
CAccessToken::GetTerminalServicesSessionId Chame esse método para obter a ID de sessão dos serviços de terminal associada ao objeto CAccessToken.
CAccessToken::GetThreadToken Chame esse método para inicializar o CAccessToken com o token do thread fornecido.
CAccessToken::GetTokenId Chame esse método para obter a ID do token associada ao objeto CAccessToken.
CAccessToken::GetType Chame esse método para obter o tipo de token do objeto CAccessToken.
CAccessToken::GetUser Chame esse método para identificar o usuário associado ao objeto CAccessToken.
CAccessToken::HKeyCurrentUser Chame esse método para obter o identificador apontando para o perfil de usuário associado ao objeto CAccessToken.
CAccessToken::Impersonate Chame esse método para atribuir uma representação CAccessToken a um thread.
CAccessToken::ImpersonateLoggedOnUser Chame esse método para permitir que o thread de chamada represente o contexto de segurança de um usuário conectado.
CAccessToken::IsTokenRestricted Chame esse método para testar se o objeto CAccessToken contém uma lista de SIDs restritos.
CAccessToken::LoadUserProfile Chame esse método para carregar o perfil de usuário associado ao objeto CAccessToken.
CAccessToken::LogonUser Chame esse método para criar uma sessão de logon para o usuário associado às credenciais fornecidas.
CAccessToken::OpenCOMClientToken Chame esse método de dentro de um servidor COM que está tratando uma chamada de um cliente para inicializar o CAccessToken com o token de acesso do cliente COM.
CAccessToken::OpenNamedPipeClientToken Chame esse método de dentro de um servidor que recebe solicitações em um pipe nomeado para inicializar o CAccessToken com o token de acesso do cliente.
CAccessToken::OpenRPCClientToken Chame esse método de dentro de um servidor que está tratando uma chamada de um cliente RPC para inicializar o CAccessToken com o token de acesso do cliente.
CAccessToken::OpenThreadToken Chame esse método para definir o nível de representação e, em seguida, inicialize o CAccessToken com o token do thread fornecido.
CAccessToken::PrivilegeCheck Chame esse método para determinar se um conjunto especificado de privilégios está habilitado no objeto CAccessToken.
CAccessToken::Revert Chame esse método para interromper um thread que esteja usando um token de representação.
CAccessToken::SetDefaultDacl Chame esse método para definir a DACL padrão do objeto CAccessToken.
CAccessToken::SetOwner Chame esse método para definir o proprietário do objeto CAccessToken.
CAccessToken::SetPrimaryGroup Chame esse método para definir o grupo primário do objeto CAccessToken.

Comentários

Um token de acesso é um objeto que descreve o contexto de segurança de um processo ou thread e é alocado para cada usuário conectado a um sistema Windows.

Para ver uma introdução ao modelo de controle de acesso no Windows, confira Controle de Acesso no SDK do Windows.

Requisitos

Cabeçalho: atlsecurity.h

CAccessToken::Attach

Chame esse método para assumir a propriedade do identificador de token de acesso fornecido.

void Attach(HANDLE hToken) throw();

Parâmetros

hToken
Um identificador para o token de acesso.

Comentários

Em builds de depuração, ocorrerá um erro de declaração caso o objeto CAccessToken já tenha a propriedade de um token de acesso.

CAccessToken::~CAccessToken

O destruidor.

virtual ~CAccessToken() throw();

Comentários

Libera todos os recursos alocados.

CAccessToken::CheckTokenMembership

Chame esse método para determinar se um SID (identificador de segurança) especificado está habilitado no objeto CAccessToken.

bool CheckTokenMembership(
    const CSid& rSid,
    bool* pbIsMember) const throw(...);

Parâmetros

rSid
Referência a um objeto Classe CSid.

pbIsMember
Ponteiro para uma variável que recebe os resultados da verificação.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

O método CheckTokenMembership verifica a presença do SID nos SIDs de usuário e de grupo do token de acesso. Se o SID estiver presente e tiver o atributo SE_GROUP_ENABLED, o pbIsMember será definido como TRUE; caso contrário, ele será definido como FALSE.

Em builds de depuração, ocorrerá um erro de declaração caso o pbIsMember não seja um ponteiro válido.

Observação

O objeto CAccessToken deve ser um token de representação e não um token primário.

CAccessToken::CreateImpersonationToken

Chame esse método para criar um token de acesso de representação.

bool CreateImpersonationToken(
    CAccessToken* pImp,
    SECURITY_IMPERSONATION_LEVEL sil = SecurityImpersonation) const throw(...);

Parâmetros

pImp
Ponteiro para o novo objeto CAccessToken.

sil
Especifica um tipo enumerado SECURITY_IMPERSONATION_LEVEL que fornece o nível de representação do novo token.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

CreateImpersonationToken chama o DuplicateToken para criar um novo token de representação.

CAccessToken::CreatePrimaryToken

Chame esse método para criar um novo token primário.

bool CreatePrimaryToken(
    CAccessToken* pPri,
    DWORD dwDesiredAccess = MAXIMUM_ALLOWED,
    const CSecurityAttributes* pTokenAttributes = NULL) const throw(...);

Parâmetros

pPri
Ponteiro para o novo objeto CAccessToken.

dwDesiredAccess
Especifica os direitos de acesso solicitados para o novo token. O padrão MAXIMUM_ALLOWED solicita todos os direitos de acesso válidos para o chamador. Confira Direitos de acesso e máscaras de acesso para obter mais informações sobre direitos de acesso.

pTokenAttributes
Ponteiro para uma estrutura SECURITY_ATTRIBUTES que especifica um descritor de segurança para o novo token e determina se os processos filho podem herdar o token. Se o pTokenAttributes for NULL, o token obterá um descritor de segurança padrão, e o identificador não poderá ser herdado.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

CreatePrimaryToken chama o DuplicateTokenEx para criar um novo token primário.

CAccessToken::CreateProcessAsUser

Chame esse método para criar um novo processo em execução no contexto de segurança do usuário representado pelo objeto CAccessToken.

bool CreateProcessAsUser(
    LPCTSTR pApplicationName,
    LPTSTR pCommandLine,
    LPPROCESS_INFORMATION pProcessInformation,
    LPSTARTUPINFO pStartupInfo,
    DWORD dwCreationFlags = NORMAL_PRIORITY_CLASS,
    bool bLoadProfile = false,
    const CSecurityAttributes* pProcessAttributes = NULL,
    const CSecurityAttributes* pThreadAttributes = NULL,
    bool bInherit = false,
    LPCTSTR pCurrentDirectory = NULL) throw();

Parâmetros

pApplicationName
Ponteiro para uma cadeia de caracteres terminada em nulo que especifica o módulo a ser executado. Esse parâmetro pode não ser NULL.

pCommandLine
Ponteiro para uma cadeia de caracteres terminada em nulo que especifica a linha de comando a ser executada.

pProcessInformation
Ponteiro para uma estrutura PROCESS_INFORMATION que recebe informações de identificação sobre o novo processo.

pStartupInfo
Ponteiro para uma estrutura STARTUPINFO que especifica como a janela principal do novo processo deve aparecer.

dwCreationFlags
Especifica sinalizadores adicionais que controlam a classe de prioridade e a criação do processo. Confira a função CreateProcessAsUser do Win32 para obter uma lista de sinalizadores.

bLoadProfile
Se for TRUE, o perfil do usuário será carregado com LoadUserProfile.

pProcessAttributes
Ponteiro para uma estrutura SECURITY_ATTRIBUTES que especifica um descritor de segurança para o novo processo e determina se os processos filho podem herdar o identificador retornado. Se o pProcessAttributes for NULL, o processo obterá um descritor de segurança padrão, e o identificador não poderá ser herdado.

pThreadAttributes
Ponteiro para uma estrutura SECURITY_ATTRIBUTES que especifica um descritor de segurança para o novo thread e determina se os processos filho podem herdar o identificador retornado. Se o pThreadAttributes for NULL, o thread obterá um descritor de segurança padrão, e o identificador não poderá ser herdado.

bInherit
Indica se o novo processo herda identificadores do processo de chamada. Se for TRUE, cada identificador aberto herdável no processo de chamada será herdado pelo novo processo. Os identificadores herdados têm o mesmo valor e privilégios de acesso que os identificadores originais.

pCurrentDirectory
Ponteiro para uma cadeia de caracteres terminada em nulo que especifica a unidade e o diretório atuais do novo processo. A cadeia de caracteres deve ser um caminho completo que inclui uma letra da unidade. Se este parâmetro for NULL, o novo processo terá a mesma unidade e diretório atual que o processo de chamada.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

CreateProcessAsUser usa a função CreateProcessAsUser do Win32 para criar um novo processo que é executado no contexto de segurança do usuário representado pelo objeto CAccessToken. Confira a descrição da função CreateProcessAsUser para ver uma discussão completa sobre os parâmetros necessários.

Para que esse método tenha êxito, o objeto CAccessToken deve manter o AssignPrimaryToken (a menos que seja um token restrito) e os privilégios IncreaseQuota.

CAccessToken::CreateRestrictedToken

Chame esse método para criar um objeto CAccessToken novo e restrito.

bool CreateRestrictedToken(
    CAccessToken* pRestrictedToken,
    const CTokenGroups& SidsToDisable,
    const CTokenGroups& SidsToRestrict,
    const CTokenPrivileges& PrivilegesToDelete = CTokenPrivileges()) const throw(...);

Parâmetros

pRestrictedToken
O novo objeto restrito CAccessToken.

SidsToDisable
Um objeto CTokenGroups que especifica os SIDs somente negação.

SidsToRestrict
Um objeto CTokenGroups que especifica os SIDs restritivos.

PrivilegesToDelete
Um objeto CTokenPrivileges que especifica os privilégios a serem excluídos no token restrito. O padrão cria um objeto vazio.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

CreateRestrictedToken usa a função CreateRestrictedToken do Win32 para criar um novo objeto CAccessToken, com restrições.

Importante

Ao usar CreateRestrictedToken, garanta o seguinte: o token existente é válido (e não inserido pelo usuário) e tanto o SidsToDisable e quanto o PrivilegesToDelete são válidos (e não inseridos pelo usuário). Se o método retornar FALSE, negue a funcionalidade.

CAccessToken::Detach

Chame esse método para revogar a propriedade do token de acesso.

HANDLE Detach() throw();

Valor de retorno

Retorna o identificador para CAccessToken, o qual foi desanexado.

Comentários

Esse método revoga a propriedade de CAccessToken do token de acesso.

CAccessToken::DisablePrivilege

Chame esse método para desabilitar um privilégio no objeto CAccessToken.

bool DisablePrivilege(
    LPCTSTR pszPrivilege,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parâmetros

pszPrivilege
Ponteiro para uma cadeia de caracteres que contém o privilégio de desabilitar no objeto CAccessToken.

pPreviousState
Ponteiro para um objeto CTokenPrivileges que conterá o estado anterior dos privilégios.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::DisablePrivileges

Chame esse método para desabilitar um ou mais privilégios no objeto CAccessToken.

bool DisablePrivileges(
    const CAtlArray<LPCTSTR>& rPrivileges,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parâmetros

rPrivileges
Ponteiro para uma matriz de cadeias de caracteres que contêm os privilégios a serem desabilitados no objeto CAccessToken.

pPreviousState
Ponteiro para um objeto CTokenPrivileges que conterá o estado anterior dos privilégios.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::EnablePrivilege

Chame esse método para habilitar um privilégio no objeto CAccessToken.

bool EnablePrivilege(
    LPCTSTR pszPrivilege,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parâmetros

pszPrivilege
Ponteiro para uma cadeia de caracteres que contém o privilégio de habilitar no objeto CAccessToken.

pPreviousState
Ponteiro para um objeto CTokenPrivileges que conterá o estado anterior dos privilégios.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::EnablePrivileges

Chame esse método para habilitar um ou mais privilégios no objeto CAccessToken.

bool EnablePrivileges(
    const CAtlArray<LPCTSTR>& rPrivileges,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parâmetros

rPrivileges
Ponteiro para uma matriz de cadeias de caracteres que contêm os privilégios a serem habilitados no objeto CAccessToken.

pPreviousState
Ponteiro para um objeto CTokenPrivileges que conterá o estado anterior dos privilégios.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::GetDefaultDacl

Chame esse método para retornar a DACL padrão do objeto CAccessToken.

bool GetDefaultDacl(CDacl* pDacl) const throw(...);

Parâmetros

pDacl
Ponteiro para o objeto Classe CDacl que receberá a DACL padrão do objeto CAccessToken.

Valor de retorno

Retornará TRUE se a DACL padrão tiver sido recuperada; caso contrário, FALSE.

CAccessToken::GetEffectiveToken

Chame esse método para obter o objeto CAccessToken igual ao token de acesso em vigor para o thread atual.

bool GetEffectiveToken(DWORD dwDesiredAccess) throw();

Parâmetros

dwDesiredAccess
Especifica uma máscara de acesso que define os tipos de acesso solicitados ao token de acesso. Esses tipos de acesso solicitados são comparados com a DACL do token para determinar quais acessos são concedidos ou negados.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::GetGroups

Chame esse método para retornar os grupos de tokens do objeto CAccessToken.

bool GetGroups(CTokenGroups* pGroups) const throw(...);

Parâmetros

pGroups
Ponteiro para o objeto Classe CTokenGroups que receberá as informações do grupo.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::GetHandle

Chame esse método para recuperar um identificador para o token de acesso.

HANDLE GetHandle() const throw();

Valor de retorno

Retorna um identificador para o token de acesso do objeto CAccessToken.

CAccessToken::GetImpersonationLevel

Chame esse método para obter o nível de representação do token de acesso.

bool GetImpersonationLevel(
    SECURITY_IMPERSONATION_LEVEL* pImpersonationLevel) const throw(...);

Parâmetros

pImpersonationLevel
Ponteiro para um tipo de enumeração SECURITY_IMPERSONATION_LEVEL que receberá as informações de nível de representação.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::GetLogonSessionId

Chame esse método para obter a ID da sessão de logon associada ao objeto CAccessToken.

bool GetLogonSessionId(LUID* pluid) const throw(...);

Parâmetros

pluid
Ponteiro para um LUID que receberá a ID da sessão de logon.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

Em builds de depuração, ocorrerá um erro de declaração caso o pluid seja um valor inválido.

CAccessToken::GetLogonSid

Chame esse método para obter o SID de logon associado ao objeto CAccessToken.

bool GetLogonSid(CSid* pSid) const throw(...);

Parâmetros

pSid
Ponteiro para um objeto Classe CSid.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

Em builds de depuração, ocorrerá um erro de declaração caso pSid seja um valor inválido.

CAccessToken::GetOwner

Chame esse método para obter o proprietário associado ao objeto CAccessToken.

bool GetOwner(CSid* pSid) const throw(...);

Parâmetros

pSid
Ponteiro para um objeto Classe CSid.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

O proprietário é definido por padrão em todos os objetos criados enquanto esse token de acesso estiver em vigor.

CAccessToken::GetPrimaryGroup

Chame esse método para obter o grupo primário associado ao objeto CAccessToken.

bool GetPrimaryGroup(CSid* pSid) const throw(...);

Parâmetros

pSid
Ponteiro para um objeto Classe CSid.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

O grupo é definido por padrão em todos os objetos criados enquanto esse token de acesso estiver em vigor.

CAccessToken::GetPrivileges

Chame esse método para obter os privilégios associados ao objeto CAccessToken.

bool GetPrivileges(CTokenPrivileges* pPrivileges) const throw(...);

Parâmetros

pPrivileges
Ponteiro para um objeto Classe CTokenPrivileges que receberá os privilégios.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::GetProcessToken

Chame esse método para inicializar o CAccessToken com o token de acesso do processo fornecido.

bool GetProcessToken(DWORD dwDesiredAccess, HANDLE hProcess = NULL) throw();

Parâmetros

dwDesiredAccess
Especifica uma máscara de acesso que define os tipos de acesso solicitados ao token de acesso. Esses tipos de acesso solicitados são comparados com a DACL do token para determinar quais acessos são concedidos ou negados.

hProcess
Identificador para o processo cujo token de acesso está aberto. Se o valor padrão de NULL for usado, o processo atual será usado.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

Chama a função OpenProcessToken do Win32.

CAccessToken::GetProfile

Chame esse método para obter o identificador apontando para o perfil de usuário associado ao objeto CAccessToken.

HANDLE GetProfile() const throw();

Valor de retorno

Retorna um identificador apontando para o perfil de usuário ou retorna NULL se nenhum perfil existir.

CAccessToken::GetSource

Chame esse método para obter a origem do objeto CAccessToken.

bool GetSource(TOKEN_SOURCE* pSource) const throw(...);

Parâmetros

pSource
Ponteiro para uma estrutura TOKEN_SOURCE.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::GetStatistics

Chame esse método para obter informações associadas ao objeto CAccessToken.

bool GetStatistics(TOKEN_STATISTICS* pStatistics) const throw(...);

Parâmetros

pStatistics
Ponteiro para uma estrutura TOKEN_STATISTICS.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::GetTerminalServicesSessionId

Chame esse método para obter a ID de sessão dos serviços de terminal associada ao objeto CAccessToken.

bool GetTerminalServicesSessionId(DWORD* pdwSessionId) const throw(...);

Parâmetros

pdwSessionId
A ID da sessão dos serviços de terminal.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::GetThreadToken

Chame esse método para inicializar o CAccessToken com o token do thread fornecido.

bool GetThreadToken(
    DWORD dwDesiredAccess,
    HANDLE hThread = NULL,
    bool bOpenAsSelf = true) throw();

Parâmetros

dwDesiredAccess
Especifica uma máscara de acesso que define os tipos de acesso solicitados ao token de acesso. Esses tipos de acesso solicitados são comparados com a DACL do token para determinar quais acessos são concedidos ou negados.

hThread
Identificador para o thread cujo token de acesso está aberto.

bOpenAsSelf
Indica se a verificação de acesso deve ser feita no contexto de segurança do thread que chama o método GetThreadToken ou no contexto de segurança do processo para o thread de chamada.

Se esse parâmetro for FALSE, a verificação de acesso será executada usando o contexto de segurança do thread de chamada. Se o thread estiver representando um cliente, esse contexto de segurança poderá ser o de um processo do cliente. Se esse parâmetro for TRUE, a verificação de acesso será feita usando o contexto de segurança do processo para o thread de chamada.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::GetTokenId

Chame esse método para obter a ID do token associada ao objeto CAccessToken.

bool GetTokenId(LUID* pluid) const throw(...);

Parâmetros

pluid
Ponteiro para um LUID, o qual receberá a ID do token.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::GetType

Chame esse método para obter o tipo de token do objeto CAccessToken.

bool GetType(TOKEN_TYPE* pType) const throw(...);

Parâmetros

pType
Endereço da variável TOKEN_TYPE que, se tiver êxito, recebe o tipo do token.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

O tipo de enumeração TOKEN_TYPE contém valores que diferenciam entre um token primário e um token de representação.

CAccessToken::GetUser

Chame esse método para identificar o usuário associado ao objeto CAccessToken.

bool GetUser(CSid* pSid) const throw(...);

Parâmetros

pSid
Ponteiro para um objeto Classe CSid.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

CAccessToken::HKeyCurrentUser

Chame esse método para obter o identificador apontando para o perfil de usuário associado ao objeto CAccessToken.

HKEY HKeyCurrentUser() const throw();

Valor de retorno

Retorna um identificador apontando para o perfil de usuário ou retorna NULL se nenhum perfil existir.

CAccessToken::Impersonate

Chame esse método para atribuir uma representação CAccessToken a um thread.

bool Impersonate(HANDLE hThread = NULL) const throw(...);

Parâmetros

hThread
Identificador para o thread ao qual atribuir o token de representação. Esse identificador deve ter sido aberto com direitos de acesso TOKEN_IMPERSONATE. Se hThread for NULL, o método fará com que o thread pare de usar um token de representação.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

Em builds de depuração, ocorrerá um erro de declaração caso CAccessToken não tenha um ponteiro válido para um token.

A Classe CAutoRevertImpersonation pode ser usada para reverter automaticamente os tokens de acesso representados.

CAccessToken::ImpersonateLoggedOnUser

Chame esse método para permitir que o thread de chamada represente o contexto de segurança de um usuário conectado.

bool ImpersonateLoggedOnUser() const throw(...);

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

Importante

Se uma chamada para uma função de representação falhar por qualquer motivo, o cliente não será representado, e a solicitação do cliente será feita no contexto de segurança do processo do qual a chamada foi feita. Se o processo estiver em execução como uma conta altamente privilegiada ou como membro de um grupo administrativo, o usuário poderá executar ações que, de outra forma, não seriam permitidas. Portanto, o valor retornado para essa função deverá ser sempre confirmado.

CAccessToken::IsTokenRestricted

Chame esse método para testar se o objeto CAccessToken contém uma lista de SIDs restritos.

bool IsTokenRestricted() const throw();

Valor de retorno

Retornará TRUE se o objeto contiver uma lista de SIDs restritivos e FALSE se não houver SIDs restritivos ou se o método falhar.

CAccessToken::LoadUserProfile

Chame esse método para carregar o perfil de usuário associado ao objeto CAccessToken.

bool LoadUserProfile() throw(...);

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

Em builds de depuração, ocorrerá um erro de declaração caso o token CAccessToken não contenha um token válido ou caso já exista um perfil de usuário.

CAccessToken::LogonUser

Chame esse método para criar uma sessão de logon para o usuário associado às credenciais fornecidas.

bool LogonUser(
    LPCTSTR pszUserName,
    LPCTSTR pszDomain,
    LPCTSTR pszPassword,
    DWORD dwLogonType = LOGON32_LOGON_INTERACTIVE,
    DWORD dwLogonProvider = LOGON32_PROVIDER_DEFAULT) throw();

Parâmetros

pszUserName
Ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome do usuário. Esse é o nome da conta de usuário na qual fazer logon.

pszDomain
Ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome do domínio ou servidor cujo banco de dados da conta contém a conta pszUserName.

pszPassword
Ponteiro para uma cadeia de caracteres terminada em nulo que especifica a senha de texto limpo para a conta de usuário especificada por pszUserName.

dwLogonType
Especifica o tipo de operação de logon a ser executada. Confira LogonUser para obter mais detalhes.

dwLogonProvider
Especifica o provedor de logon. Confira LogonUser para obter mais detalhes.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

O token de acesso resultante do logon será associado ao CAccessToken. Para que esse método tenha êxito, o objeto CAccessToken deve conter privilégios SE_TCB_NAME, identificando o titular como parte da base do computador confiável. Confira LogonUser para obter mais informações sobre os privilégios necessários.

CAccessToken::OpenCOMClientToken

Chame esse método de dentro de um servidor COM que está tratando uma chamada de um cliente para inicializar o CAccessToken com o token de acesso do cliente COM.

bool OpenCOMClientToken(
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true) throw(...);

Parâmetros

dwDesiredAccess
Especifica uma máscara de acesso que define os tipos de acesso solicitados ao token de acesso. Esses tipos de acesso solicitados são comparados com a DACL do token para determinar quais acessos são concedidos ou negados.

bImpersonate
Se for TRUE, o thread atual representará o cliente COM de chamada se essa chamada for concluída com êxito. Se for FALSE, o token de acesso será aberto, mas o thread não terá um token de representação quando essa chamada for concluída.

bOpenAsSelf
Indica se a verificação de acesso deve ser feita no contexto de segurança do thread que chama o método GetThreadToken ou no contexto de segurança do processo para o thread de chamada.

Se esse parâmetro for FALSE, a verificação de acesso será executada usando o contexto de segurança do thread de chamada. Se o thread estiver representando um cliente, esse contexto de segurança poderá ser o de um processo do cliente. Se esse parâmetro for TRUE, a verificação de acesso será feita usando o contexto de segurança do processo para o thread de chamada.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

A Classe CAutoRevertImpersonation pode ser usada para reverter automaticamente tokens de acesso representados criados ao definir o sinalizador bImpersonate como TRUE.

CAccessToken::OpenNamedPipeClientToken

Chame esse método de dentro de um servidor que recebe solicitações em um pipe nomeado para inicializar o CAccessToken com o token de acesso do cliente.

bool OpenNamedPipeClientToken(
    HANDLE hPipe,
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true) throw(...);

Parâmetros

hPipe
Identificador para um pipe nomeado.

dwDesiredAccess
Especifica uma máscara de acesso que define os tipos de acesso solicitados ao token de acesso. Esses tipos de acesso solicitados são comparados com a DACL do token para determinar quais acessos são concedidos ou negados.

bImpersonate
Se for TRUE, o thread atual representará o cliente do pipe de chamada se essa chamada for concluída com êxito. Se for FALSE, o token de acesso será aberto, mas o thread não terá um token de representação quando essa chamada for concluída.

bOpenAsSelf
Indica se a verificação de acesso deve ser feita no contexto de segurança do thread que chama o método GetThreadToken ou no contexto de segurança do processo para o thread de chamada.

Se esse parâmetro for FALSE, a verificação de acesso será executada usando o contexto de segurança do thread de chamada. Se o thread estiver representando um cliente, esse contexto de segurança poderá ser o de um processo do cliente. Se esse parâmetro for TRUE, a verificação de acesso será feita usando o contexto de segurança do processo para o thread de chamada.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

A Classe CAutoRevertImpersonation pode ser usada para reverter automaticamente tokens de acesso representados criados ao definir o sinalizador bImpersonate como TRUE.

CAccessToken::OpenRPCClientToken

Chame esse método de dentro de um servidor que está tratando uma chamada de um cliente RPC para inicializar o CAccessToken com o token de acesso do cliente.

bool OpenRPCClientToken(
    RPC_BINDING_HANDLE BindingHandle,
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true) throw(...);

Parâmetros

BindingHandle
Identificador de associação no servidor que representa uma associação a um cliente.

dwDesiredAccess
Especifica uma máscara de acesso que define os tipos de acesso solicitados ao token de acesso. Esses tipos de acesso solicitados são comparados com a DACL do token para determinar quais acessos são concedidos ou negados.

bImpersonate
Se for TRUE, o thread atual representará o cliente RPC de chamada se essa chamada for concluída com êxito. Se for FALSE, o token de acesso será aberto, mas o thread não terá um token de representação quando essa chamada for concluída.

bOpenAsSelf
Indica se a verificação de acesso deve ser feita no contexto de segurança do thread que chama o método GetThreadToken ou no contexto de segurança do processo para o thread de chamada.

Se esse parâmetro for FALSE, a verificação de acesso será executada usando o contexto de segurança do thread de chamada. Se o thread estiver representando um cliente, esse contexto de segurança poderá ser o de um processo do cliente. Se esse parâmetro for TRUE, a verificação de acesso será feita usando o contexto de segurança do processo para o thread de chamada.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

A Classe CAutoRevertImpersonation pode ser usada para reverter automaticamente tokens de acesso representados criados ao definir o sinalizador bImpersonate como TRUE.

CAccessToken::OpenThreadToken

Chame esse método para definir o nível de representação e, em seguida, inicialize o CAccessToken com o token do thread fornecido.

bool OpenThreadToken(
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true,
    SECURITY_IMPERSONATION_LEVEL sil = SecurityImpersonation) throw(...);

Parâmetros

dwDesiredAccess
Especifica uma máscara de acesso que define os tipos de acesso solicitados ao token de acesso. Esses tipos de acesso solicitados são comparados com a DACL do token para determinar quais acessos são concedidos ou negados.

bImpersonate
Se for TRUE, o thread será deixado no nível de representação solicitado após a conclusão desse método. Se for FALSE, o thread será revertido para seu nível de representação original.

bOpenAsSelf
Indica se a verificação de acesso deve ser feita no contexto de segurança do thread que chama o método GetThreadToken ou no contexto de segurança do processo para o thread de chamada.

Se esse parâmetro for FALSE, a verificação de acesso será executada usando o contexto de segurança do thread de chamada. Se o thread estiver representando um cliente, esse contexto de segurança poderá ser o de um processo do cliente. Se esse parâmetro for TRUE, a verificação de acesso será feita usando o contexto de segurança do processo para o thread de chamada.

sil
Especifica um tipo enumerado SECURITY_IMPERSONATION_LEVEL que fornece o nível de representação do token.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

OpenThreadToken é semelhante a CAccessToken::GetThreadToken, mas define o nível de representação antes de inicializar o CAccessToken do token de acesso do thread.

A Classe CAutoRevertImpersonation pode ser usada para reverter automaticamente tokens de acesso representados criados ao definir o sinalizador bImpersonate como TRUE.

CAccessToken::PrivilegeCheck

Chame esse método para determinar se um conjunto especificado de privilégios está habilitado no objeto CAccessToken.

bool PrivilegeCheck(
    PPRIVILEGE_SET RequiredPrivileges,
    bool* pbResult) const throw();

Parâmetros

RequiredPrivileges
Ponteiro para uma estrutura PRIVILEGE_SET.

pbResult
Ponteiro para um valor que o método define para indicar se qualquer um ou todos os privilégios especificados estão habilitados no objeto CAccessToken.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

Quando PrivilegeCheck é retornado, o membro Attributes de cada estrutura LUID_AND_ATTRIBUTES será definido como SE_PRIVILEGE_USED_FOR_ACCESS se o privilégio correspondente estiver habilitado. Esse método chama a função PrivilegeCheck do Win32.

CAccessToken::Revert

Chame esse método para interromper o uso de um token de representação por um thread.

bool Revert(HANDLE hThread = NULL) const throw();

Parâmetros

hThread
Identificador para o thread para reverter da representação. Se o hThread for NULL, assume-se o thread atual.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

A reversão de tokens de representação pode ser executada automaticamente com a Classe CAutoRevertImpersonation.

CAccessToken::SetDefaultDacl

Chame esse método para definir a DACL padrão do objeto CAccessToken.

bool SetDefaultDacl(const CDacl& rDacl) throw(...);

Parâmetros

rDacl
As novas informações padrão da Classe CDacl.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

A DACL padrão é aquela usada por padrão quando novos objetos são criados com esse token de acesso em vigor.

CAccessToken::SetOwner

Chame esse método para definir o proprietário do objeto CAccessToken.

bool SetOwner(const CSid& rSid) throw(...);

Parâmetros

rSid
O objeto Classe CSid que contém as informações do proprietário.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

O proprietário é o proprietário padrão usado para os novos objetos criados enquanto esse token de acesso estiver em vigor.

CAccessToken::SetPrimaryGroup

Chame esse método para definir o grupo primário do objeto CAccessToken.

bool SetPrimaryGroup(const CSid& rSid) throw(...);

Parâmetros

rSid
O objeto Classe CSid que contém as informações do grupo primário.

Valor de retorno

Retorna TRUE em caso de êxito. FALSE, em caso de falha.

Comentários

O grupo primário é o grupo padrão para novos objetos criados enquanto esse token de acesso estiver em vigor.

Confira também

Exemplo de ATLSecurity
Tokens de acesso
Visão geral da aula