Compartir a través de


Clase CAccessToken

Esta clase es un contenedor para un token de acceso.

Importante

Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Sintaxis

class CAccessToken

Miembros

Constructores públicos

Nombre Descripción
CAccessToken::~CAccessToken El destructor .

Métodos públicos

Nombre Descripción
CAccessToken::Attach Llame a este método para tomar control del manipulador del token de acceso especificado.
CAccessToken::CheckTokenMembership Llame a este método para determinar si un SID especificado está habilitado en el objeto CAccessToken.
CAccessToken::CreateImpersonationToken Llame a este método para crear un nuevo token de acceso de suplantación.
CAccessToken::CreatePrimaryToken Llame a este método para crear un token primario nuevo.
CAccessToken::CreateProcessAsUser Llame a este método para crear un proceso nuevo que se ejecute en el contexto de seguridad del usuario representado por el objeto CAccessToken.
CAccessToken::CreateRestrictedToken Llame a este método para crear un objeto CAccessToken restringido nuevo.
CAccessToken::Detach Llame a este método para revocar el control del token de acceso.
CAccessToken::DisablePrivilege Llame a este método para deshabilitar un privilegio en el objeto CAccessToken.
CAccessToken::DisablePrivileges Llame a este método para deshabilitar uno o varios privilegios en el objeto CAccessToken.
CAccessToken::EnablePrivilege Llame a este método para habilitar un privilegio en el objeto CAccessToken.
CAccessToken::EnablePrivileges Llame a este método para habilitar uno o varios privilegios en el objeto CAccessToken.
CAccessToken::GetDefaultDacl Llame a este método para devolver la DACL predeterminada del objeto CAccessToken.
CAccessToken::GetEffectiveToken Llame a este método para conseguir que el objeto CAccessToken sea igual al token de acceso en vigor para el subproceso actual.
CAccessToken::GetGroups Llame a este método para devolver los grupos de token del objeto CAccessToken.
CAccessToken::GetHandle Llame a este método para recuperar un manipulador del token de acceso.
CAccessToken::GetImpersonationLevel Llame a este método para obtener el nivel de suplantación del token de acceso.
CAccessToken::GetLogonSessionId Llame a este método para obtener el id. de sesión de inicio de sesión asociado al objeto CAccessToken.
CAccessToken::GetLogonSid Llame a este método para obtener el SID de inicio de sesión asociado al objeto CAccessToken.
CAccessToken::GetOwner Llame a este método para obtener el propietario asociado al objeto CAccessToken.
CAccessToken::GetPrimaryGroup Llame a este método para obtener el grupo primario asociado al objeto CAccessToken.
CAccessToken::GetPrivileges Llame a este método para obtener los privilegios asociados al objeto CAccessToken.
CAccessToken::GetProcessToken Llame a este método para inicializar CAccessToken con el token de acceso del proceso especificado.
CAccessToken::GetProfile Llame a este método para obtener el manipulador que apunta al perfil de usuario asociado al objeto CAccessToken.
CAccessToken::GetSource Llame a este método para obtener el origen del objeto CAccessToken.
CAccessToken::GetStatistics Llame a este método para obtener la información asociada al objeto CAccessToken.
CAccessToken::GetTerminalServicesSessionId Llame a este método para obtener el id. de sesión de Terminal Services asociado al objeto CAccessToken.
CAccessToken::GetThreadToken Llame a este método para inicializar CAccessToken con el token del subproceso especificado.
CAccessToken::GetTokenId Llame a este método para obtener el id. del token asociado al objeto CAccessToken.
CAccessToken::GetType Llame a este método para obtener el tipo de token del objeto CAccessToken.
CAccessToken::GetUser Llame a este método para identificar al usuario asociado al objeto CAccessToken.
CAccessToken::HKeyCurrentUser Llame a este método para obtener el manipulador que apunta al perfil de usuario asociado al objeto CAccessToken.
CAccessToken::Impersonate Llame a este método para asignar una suplantación CAccessToken a un subproceso.
CAccessToken::ImpersonateLoggedOnUser Llame a este método para permitir que el subproceso que realiza la llamada suplante el contexto de seguridad de un usuario que ha iniciado sesión.
CAccessToken::IsTokenRestricted Llame a este método para probar si el objeto CAccessToken contiene una lista de SID restringidos.
CAccessToken::LoadUserProfile Llame a este método para cargar el perfil de usuario asociado al objeto CAccessToken.
CAccessToken::LogonUser Llame a este método para crear una sesión de inicio de sesión para el usuario asociado a las credenciales especificadas.
CAccessToken::OpenCOMClientToken Llame a este método desde un servidor COM que controle una llamada desde un cliente para inicializar CAccessToken con el token de acceso del cliente COM.
CAccessToken::OpenNamedPipeClientToken Llame a este método desde dentro de un servidor que toma solicitudes sobre una canalización con nombre para inicializar CAccessToken con el token de acceso del cliente.
CAccessToken::OpenRPCClientToken Llame a este método desde un servidor que controle una llamada desde un cliente RPC para inicializar CAccessToken con el token de acceso del cliente.
CAccessToken::OpenThreadToken Llame a este método para establecer el nivel de suplantación y, después, inicialice CAccessToken con el token del subproceso especificado.
CAccessToken::PrivilegeCheck Llame a este método para determinar si un conjunto de privilegios especificado está habilitado en el objeto CAccessToken.
CAccessToken::Revert Llame a este método para detener un subproceso que usa un token de suplantación.
CAccessToken::SetDefaultDacl Llame a este método para establecer la DACL predeterminada del objeto CAccessToken.
CAccessToken::SetOwner Llame a este método para establecer el propietario del objeto CAccessToken.
CAccessToken::SetPrimaryGroup Llame a este método para establecer el grupo principal del objeto CAccessToken.

Comentarios

Un token de acceso es un objeto que describe el contexto de seguridad de un proceso o subproceso y que se asigna a cada usuario que ha iniciado sesión en un sistema Windows.

Para una introducción al modelo de control de acceso en Windows, consulte Control de acceso en Windows SDK.

Requisitos

Encabezado: atlsecurity.h

CAccessToken::Attach

Llame a este método para tomar control del manipulador del token de acceso especificado.

void Attach(HANDLE hToken) throw();

Parámetros

hToken
Manipulador del token de acceso.

Comentarios

En las compilaciones de depuración, se producirá un error de aserción si el objeto CAccessToken ya controla un token de acceso.

CAccessToken::~CAccessToken

El destructor .

virtual ~CAccessToken() throw();

Comentarios

Libera todos los recursos asignados.

CAccessToken::CheckTokenMembership

Llame a este método para determinar si un SID especificado está habilitado en el objeto CAccessToken.

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

Parámetros

rSid
Referencia a un objeto de Clase CSid.

pbIsMember
Puntero a una variable que recibe los resultados de la comprobación.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

El método CheckTokenMembership comprueba la presencia del SID en los SID de usuario y grupo del token de acceso. Si el SID está presente y tiene el atributo SE_GROUP_ENABLED, pbIsMember se establece en TRUE; de lo contrario, se establece en FALSE.

En las compilaciones de depuración, se producirá un error de aserción si pbIsMember no es un puntero válido.

Nota:

El objeto CAccessToken debe ser un token de suplantación y no un token principal.

CAccessToken::CreateImpersonationToken

Llame a este método para crear un token de acceso de suplantación.

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

Parámetros

pImp
Puntero en el objeto CAccessToken nuevo.

sil
Especifica un tipo de enumeración SECURITY_IMPERSONATION_LEVEL que proporciona el nivel de suplantación del nuevo token.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

CreateImpersonationToken llama a DuplicateToken para crear un nuevo token de suplantación.

CAccessToken::CreatePrimaryToken

Llame a este método para crear un token primario nuevo.

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

Parámetros

pPri
Puntero en el objeto CAccessToken nuevo.

dwDesiredAccess
Especifica los derechos de acceso solicitados para el nuevo token. El valor predeterminado, MAXIMUM_ALLOWED, solicita todos los derechos de acceso válidos para el autor de la llamada. Consulte Derechos de acceso y máscaras de acceso para más información sobre los derechos de acceso.

pTokenAttributes
Puntero a una estructura SECURITY_ATTRIBUTES que especifica un descriptor de seguridad para el nuevo token y determina si los procesos secundarios pueden heredar el token. Si pTokenAttributes es NULL, el token obtiene un descriptor de seguridad predeterminado y el manipulador no se puede heredar.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

CreatePrimaryToken llama a DuplicateTokenEx para crear un nuevo token principal.

CAccessToken::CreateProcessAsUser

Llame a este método para crear un proceso nuevo que se ejecute en el contexto de seguridad del usuario representado por el 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
Puntero a una cadena terminada en null que especifica el módulo que se va a ejecutar. Es posible que este parámetro no sea NULL.

pCommandLine
Puntero a una cadena terminada en null que especifica la línea de comandos que se va a ejecutar.

pProcessInformation
Puntero a una estructura PROCESS_INFORMATION que recibe información de identificación sobre el nuevo proceso.

pStartupInfo
Puntero a una estructura STARTUPINFO que especifica cómo debe aparecer la ventana principal del nuevo proceso.

dwCreationFlags
Especifica marcas adicionales que controlan la clase de prioridad y la creación del proceso. Consulte la función de Win32 CreateProcessAsUser para obtener una lista de marcas.

bLoadProfile
Si es TRUE, el perfil del usuario se carga con LoadUserProfile.

pProcessAttributes
Puntero a una estructura SECURITY_ATTRIBUTES que especifica un descriptor de seguridad para el nuevo proceso y determina si los procesos secundarios pueden heredar el manipulador devuelto. Si pProcessAttributes es NULL, el proceso obtiene un descriptor de seguridad predeterminado y el manipulador no se puede heredar.

pThreadAttributes
Puntero a una estructura SECURITY_ATTRIBUTES que especifica un descriptor de seguridad para el nuevo subproceso y determina si los procesos secundarios pueden heredar el manipulador devuelto. Si pThreadAttributes es NULL, el subproceso obtiene un descriptor de seguridad predeterminado y el manipulador no se puede heredar.

bInherit
Indica si el nuevo proceso hereda manipuladores del proceso de llamada. Si es TRUE, el nuevo proceso hereda cada manipulador abierto que se pueda heredar en el proceso de llamada. Los manipuladores heredados tienen el mismo valor y privilegios de acceso que los identificadores originales.

pCurrentDirectory
Puntero a una cadena terminada en null que especifica la unidad y el directorio actuales para el nuevo proceso. La cadena debe ser una ruta de acceso completa que incluya una letra de unidad. Si este parámetro es NULL, el nuevo proceso tendrá la misma unidad y directorio actuales que el proceso de llamada.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

CreateProcessAsUser usa la función CreateProcessAsUser de Win32 para crear un nuevo proceso que se ejecuta en el contexto de seguridad del usuario representado por el objeto CAccessToken. Consulte la descripción de la función CreateProcessAsUser para una explicación completa de los parámetros necesarios.

Para que este método se realice correctamente, el objeto CAccessToken debe contener AssignPrimaryToken (a menos que sea un token restringido) y privilegios IncreaseQuota.

CAccessToken::CreateRestrictedToken

Llame a este método para crear un objeto CAccessToken restringido nuevo.

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

Parámetros

pRestrictedToken
Nuevo objeto restringido CAccessToken.

SidsToDisable
Objeto CTokenGroups que especifica los SID de solo denegación.

SidsToRestrict
Objeto CTokenGroups que especifica los SID de restricción.

PrivilegesToDelete
Objeto CTokenPrivileges que especifica los privilegios que se van a eliminar en el token restringido. El valor predeterminado crea un objeto vacío.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

CreateRestrictedToken usa la función CreateRestrictedToken de Win32 para crear un nuevo objeto CAccessToken, con restricciones.

Importante

Al usar CreateRestrictedToken, asegúrese de lo siguiente: el token existente es válido (y no especificado por el usuario) y SidsToDisable y PrivilegesToDelete son válidos (y no especificados por el usuario). Si el método devuelve FALSE, deniegue la funcionalidad.

CAccessToken::Detach

Llame a este método para revocar el control del token de acceso.

HANDLE Detach() throw();

Valor devuelto

Devuelve el manipulador a la clase CAccessToken que se ha desasociado.

Comentarios

Este método revoca el control del token de acceso de CAccessToken.

CAccessToken::DisablePrivilege

Llame a este método para deshabilitar un privilegio en el objeto CAccessToken.

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

Parámetros

pszPrivilege
Puntero a una cadena que contiene el privilegio que se va a deshabilitar en el objeto CAccessToken.

pPreviousState
Puntero a un objeto CTokenPrivileges que contendrá el estado anterior de los privilegios.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::DisablePrivileges

Llame a este método para deshabilitar uno o varios privilegios en el objeto CAccessToken.

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

Parámetros

rPrivileges
Puntero a una matriz de cadenas que contiene los privilegios que se van a deshabilitar en el objeto CAccessToken.

pPreviousState
Puntero a un objeto CTokenPrivileges que contendrá el estado anterior de los privilegios.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::EnablePrivilege

Llame a este método para habilitar un privilegio en el objeto CAccessToken.

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

Parámetros

pszPrivilege
Puntero a una cadena que contiene el privilegio que se va a habilitar en el objeto CAccessToken.

pPreviousState
Puntero a un objeto CTokenPrivileges que contendrá el estado anterior de los privilegios.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::EnablePrivileges

Llame a este método para habilitar uno o varios privilegios en el objeto CAccessToken.

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

Parámetros

rPrivileges
Puntero a una matriz de cadenas que contiene los privilegios que se van a habilitar en el objeto CAccessToken.

pPreviousState
Puntero a un objeto CTokenPrivileges que contendrá el estado anterior de los privilegios.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::GetDefaultDacl

Llame a este método para devolver la DACL predeterminada del objeto CAccessToken.

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

Parámetros

pDacl
Puntero al objeto CDacl Class que recibirá la DACL predeterminada del objeto CAccessToken.

Valor devuelto

Devuelve TRUE si se ha recuperado la DACL predeterminada; de lo contrario, FALSE.

CAccessToken::GetEffectiveToken

Llame a este método para conseguir que el objeto CAccessToken sea igual al token de acceso en vigor para el subproceso actual.

bool GetEffectiveToken(DWORD dwDesiredAccess) throw();

Parámetros

dwDesiredAccess
Establece una máscara de acceso que especifica los tipos de acceso solicitados para el token de acceso. Estos tipos de acceso solicitados se comparan con una DACL del token para determinar los accesos que se conceden o se deniegan.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::GetGroups

Llame a este método para devolver los grupos de token del objeto CAccessToken.

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

Parámetros

pGroups
Puntero al objeto CTokenGroups Class que recibirá la información del grupo.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::GetHandle

Llame a este método para recuperar un manipulador del token de acceso.

HANDLE GetHandle() const throw();

Valor devuelto

Devuelve un identificador al token de acceso del objeto CAccessToken.

CAccessToken::GetImpersonationLevel

Llame a este método para obtener el nivel de suplantación del token de acceso.

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

Parámetros

pImpersonationLevel
Puntero a un tipo de enumeración SECURITY_IMPERSONATION_LEVEL que recibirá la información de nivel de suplantación.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::GetLogonSessionId

Llame a este método para obtener el id. de sesión de inicio de sesión asociado al objeto CAccessToken.

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

Parámetros

pluid
Puntero a un LUID que recibirá el id. de sesión de inicio de sesión.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

En las compilaciones de depuración, se producirá un error de aserción si pluid es un valor no válido.

CAccessToken::GetLogonSid

Llame a este método para obtener el SID de inicio de sesión asociado al objeto CAccessToken.

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

Parámetros

pSid
Puntero a un objeto de Clase CSid.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

En las compilaciones de depuración, se producirá un error de aserción si pSid es un valor no válido.

CAccessToken::GetOwner

Llame a este método para obtener el propietario asociado al objeto CAccessToken.

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

Parámetros

pSid
Puntero a un objeto de Clase CSid.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

El propietario se establece de forma predeterminada en los objetos creados mientras este token de acceso está en vigor.

CAccessToken::GetPrimaryGroup

Llame a este método para obtener el grupo primario asociado al objeto CAccessToken.

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

Parámetros

pSid
Puntero a un objeto de Clase CSid.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

El grupo se establece de forma predeterminada en los objetos creados mientras este token de acceso está en vigor.

CAccessToken::GetPrivileges

Llame a este método para obtener los privilegios asociados al objeto CAccessToken.

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

Parámetros

pPrivileges
Puntero a un objeto de Clase CTokenPrivileges que recibirá los privilegios.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::GetProcessToken

Llame a este método para inicializar CAccessToken con el token de acceso del proceso especificado.

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

Parámetros

dwDesiredAccess
Establece una máscara de acceso que especifica los tipos de acceso solicitados para el token de acceso. Estos tipos de acceso solicitados se comparan con una DACL del token para determinar los accesos que se conceden o se deniegan.

hProcess
Identificador del proceso cuyo token de acceso se abre. Si se usa el valor predeterminado NULL, se usa el proceso actual.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

Llama a la función OpenProcessToken de Win32.

CAccessToken::GetProfile

Llame a este método para obtener el manipulador que apunta al perfil de usuario asociado al objeto CAccessToken.

HANDLE GetProfile() const throw();

Valor devuelto

Devuelve un manipulador que apunta al perfil de usuario, o NULL si no existe ningún perfil.

CAccessToken::GetSource

Llame a este método para obtener el origen del objeto CAccessToken.

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

Parámetros

pSource
Puntero a una estructura TOKEN_SOURCE.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::GetStatistics

Llame a este método para obtener la información asociada al objeto CAccessToken.

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

Parámetros

pStatistics
Puntero a una estructura TOKEN_STATISTICS.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::GetTerminalServicesSessionId

Llame a este método para obtener el id. de sesión de Terminal Services asociado al objeto CAccessToken.

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

Parámetros

pdwSessionId
Id. de sesión de Terminal Services.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::GetThreadToken

Llame a este método para inicializar CAccessToken con el token del subproceso especificado.

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

Parámetros

dwDesiredAccess
Establece una máscara de acceso que especifica los tipos de acceso solicitados para el token de acceso. Estos tipos de acceso solicitados se comparan con una DACL del token para determinar los accesos que se conceden o se deniegan.

hThread
Manipulador del subproceso cuyo token de acceso se abre.

bOpenAsSelf
Indica si se va a realizar la comprobación de acceso en el contexto de seguridad del subproceso que llama al método GetThreadToken o en el contexto de seguridad del proceso para el subproceso que realiza la llamada.

Si este parámetro es FALSE, la comprobación de acceso se realiza mediante el contexto de seguridad del subproceso que realiza la llamada. Si el subproceso suplanta a un cliente, este contexto de seguridad puede ser el de un proceso de cliente. Si este parámetro es TRUE, la comprobación de acceso se realiza mediante el contexto de seguridad del proceso para el subproceso que realiza la llamada.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::GetTokenId

Llame a este método para obtener el id. del token asociado al objeto CAccessToken.

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

Parámetros

pluid
Puntero a un LUID que recibirá el id. de token.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::GetType

Llame a este método para obtener el tipo de token del objeto CAccessToken.

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

Parámetros

pType
Dirección de la variable TOKEN_TYPE que, si se ejecuta correctamente, recibe el tipo del token.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

El tipo de enumeración TOKEN_TYPE contiene valores que diferencian entre un token principal y un token de suplantación.

CAccessToken::GetUser

Llame a este método para identificar al usuario asociado al objeto CAccessToken.

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

Parámetros

pSid
Puntero a un objeto de Clase CSid.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

CAccessToken::HKeyCurrentUser

Llame a este método para obtener el manipulador que apunta al perfil de usuario asociado al objeto CAccessToken.

HKEY HKeyCurrentUser() const throw();

Valor devuelto

Devuelve un manipulador que apunta al perfil de usuario, o NULL si no existe ningún perfil.

CAccessToken::Impersonate

Llame a este método para asignar una suplantación CAccessToken a un subproceso.

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

Parámetros

hThread
Manipulador para el subproceso para asignar el token de suplantación. Este manipulador debe haberse abierto con los derechos de acceso de TOKEN_IMPERSONATE. Si hThread es NULL, el método hace que el subproceso deje de usar un token de suplantación.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

En las compilaciones de depuración, se producirá un error de aserción si CAccessToken no tiene un puntero válido a un token.

La Clase CAutoRevertImpersonation se puede usar para revertir de forma automática los tokens de acceso suplantados.

CAccessToken::ImpersonateLoggedOnUser

Llame a este método para permitir que el subproceso que realiza la llamada suplante el contexto de seguridad de un usuario que ha iniciado sesión.

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

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

Importante

Si se produce un error en una llamada a una función de suplantación por cualquier motivo, el cliente no se suplanta y la solicitud de cliente se realiza en el contexto de seguridad del proceso desde el que se realizó la llamada. Si el proceso se ejecuta como una cuenta con privilegios elevados o como miembro de un grupo administrativo, es posible que el usuario pueda realizar acciones que, de otro modo, no se le permitirían. Por lo tanto, el valor devuelto de esta función siempre debe confirmarse.

CAccessToken::IsTokenRestricted

Llame a este método para probar si el objeto CAccessToken contiene una lista de SID restringidos.

bool IsTokenRestricted() const throw();

Valor devuelto

Devuelve TRUE si el objeto contiene una lista de SID de restricción, FALSE si no hay ningún SID de restricción o si se produce un error en el método.

CAccessToken::LoadUserProfile

Llame a este método para cargar el perfil de usuario asociado al objeto CAccessToken.

bool LoadUserProfile() throw(...);

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

En las compilaciones de depuración, se producirá un error de aserción si CAccessToken no contiene un token válido o si ya existe un perfil de usuario.

CAccessToken::LogonUser

Llame a este método para crear una sesión de inicio de sesión para el usuario asociado a las credenciales especificadas.

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

Parámetros

pszUserName
Puntero a una cadena terminada en null que especifica el nombre de usuario. Este es el nombre de la cuenta de usuario en la que iniciar sesión.

pszDomain
Puntero a una cadena terminada en null que especifica el nombre del dominio o servidor cuya base de datos de cuenta contiene la cuenta pszUserName.

pszPassword
Puntero a una cadena terminada en null que especifica la contraseña de texto no cifrado de la cuenta de usuario especificada por pszUserName.

dwLogonType
Especifica el tipo de operación de inicio de sesión que se va a realizar. Consulte LogonUser para más información.

dwLogonProvider
Especifica el proveedor de inicio de sesión. Consulte LogonUser para más información.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

El token de acceso resultante del inicio de sesión se asociará a CAccessToken. Para que este método se realice correctamente, el objeto CAccessToken debe contener privilegios SE_TCB_NAME, identificando al titular como parte de la base de equipo de confianza. Consulte LogonUser para más información sobre los privilegios necesarios.

CAccessToken::OpenCOMClientToken

Llame a este método desde un servidor COM que controle una llamada desde un cliente para inicializar CAccessToken con el token de acceso del cliente COM.

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

Parámetros

dwDesiredAccess
Establece una máscara de acceso que especifica los tipos de acceso solicitados para el token de acceso. Estos tipos de acceso solicitados se comparan con una DACL del token para determinar los accesos que se conceden o se deniegan.

bImpersonate
Si es TRUE, el subproceso actual suplantará al cliente COM que realiza la llamada si esta llamada se completa de forma correcta. Si es FALSE, se abrirá el token de acceso, pero el subproceso no tendrá un token de suplantación cuando se complete esta llamada.

bOpenAsSelf
Indica si se va a realizar la comprobación de acceso en el contexto de seguridad del subproceso que llama al método GetThreadToken o en el contexto de seguridad del proceso para el subproceso que realiza la llamada.

Si este parámetro es FALSE, la comprobación de acceso se realiza mediante el contexto de seguridad del subproceso que realiza la llamada. Si el subproceso suplanta a un cliente, este contexto de seguridad puede ser el de un proceso de cliente. Si este parámetro es TRUE, la comprobación de acceso se realiza mediante el contexto de seguridad del proceso para el subproceso que realiza la llamada.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

La Clase CAutoRevertImpersonation se puede usar para revertir de forma automática los tokens de acceso suplantados creados estableciendo la marca bImpersonate en TRUE.

CAccessToken::OpenNamedPipeClientToken

Llame a este método desde dentro de un servidor que toma solicitudes sobre una canalización con nombre para inicializar CAccessToken con el token de acceso del cliente.

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

Parámetros

hPipe
Manipulador de una canalización con nombre.

dwDesiredAccess
Establece una máscara de acceso que especifica los tipos de acceso solicitados para el token de acceso. Estos tipos de acceso solicitados se comparan con una DACL del token para determinar los accesos que se conceden o se deniegan.

bImpersonate
Si es TRUE, el subproceso actual suplantará al cliente de canalización de llamada si esta llamada se completa de forma correcta. Si es FALSE, se abrirá el token de acceso, pero el subproceso no tendrá un token de suplantación cuando se complete esta llamada.

bOpenAsSelf
Indica si se va a realizar la comprobación de acceso en el contexto de seguridad del subproceso que llama al método GetThreadToken o en el contexto de seguridad del proceso para el subproceso que realiza la llamada.

Si este parámetro es FALSE, la comprobación de acceso se realiza mediante el contexto de seguridad del subproceso que realiza la llamada. Si el subproceso suplanta a un cliente, este contexto de seguridad puede ser el de un proceso de cliente. Si este parámetro es TRUE, la comprobación de acceso se realiza mediante el contexto de seguridad del proceso para el subproceso que realiza la llamada.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

La Clase CAutoRevertImpersonation se puede usar para revertir de forma automática los tokens de acceso suplantados creados estableciendo la marca bImpersonate en TRUE.

CAccessToken::OpenRPCClientToken

Llame a este método desde un servidor que controle una llamada desde un cliente RPC para inicializar CAccessToken con el token de acceso del cliente.

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

Parámetros

BindingHandle
Manipulador de enlace en el servidor que representa un enlace a un cliente.

dwDesiredAccess
Establece una máscara de acceso que especifica los tipos de acceso solicitados para el token de acceso. Estos tipos de acceso solicitados se comparan con una DACL del token para determinar los accesos que se conceden o se deniegan.

bImpersonate
Si es TRUE, el subproceso actual suplantará al cliente RPC que realiza la llamada si esta llamada se completa correctamente. Si es FALSE, se abrirá el token de acceso, pero el subproceso no tendrá un token de suplantación cuando se complete esta llamada.

bOpenAsSelf
Indica si se va a realizar la comprobación de acceso en el contexto de seguridad del subproceso que llama al método GetThreadToken o en el contexto de seguridad del proceso para el subproceso que realiza la llamada.

Si este parámetro es FALSE, la comprobación de acceso se realiza mediante el contexto de seguridad del subproceso que realiza la llamada. Si el subproceso suplanta a un cliente, este contexto de seguridad puede ser el de un proceso de cliente. Si este parámetro es TRUE, la comprobación de acceso se realiza mediante el contexto de seguridad del proceso para el subproceso que realiza la llamada.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

La Clase CAutoRevertImpersonation se puede usar para revertir de forma automática los tokens de acceso suplantados creados estableciendo la marca bImpersonate en TRUE.

CAccessToken::OpenThreadToken

Llame a este método para establecer el nivel de suplantación y, después, inicialice CAccessToken con el token del subproceso especificado.

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

Parámetros

dwDesiredAccess
Establece una máscara de acceso que especifica los tipos de acceso solicitados para el token de acceso. Estos tipos de acceso solicitados se comparan con una DACL del token para determinar los accesos que se conceden o se deniegan.

bImpersonate
Si es TRUE, el subproceso se dejará en el nivel de suplantación solicitado una vez se complete este método. Si es FALSE, el subproceso volverá a su nivel de suplantación original.

bOpenAsSelf
Indica si se va a realizar la comprobación de acceso en el contexto de seguridad del subproceso que llama al método GetThreadToken o en el contexto de seguridad del proceso para el subproceso que realiza la llamada.

Si este parámetro es FALSE, la comprobación de acceso se realiza mediante el contexto de seguridad del subproceso que realiza la llamada. Si el subproceso suplanta a un cliente, este contexto de seguridad puede ser el de un proceso de cliente. Si este parámetro es TRUE, la comprobación de acceso se realiza mediante el contexto de seguridad del proceso para el subproceso que realiza la llamada.

sil
Especifica un tipo de enumeración SECURITY_IMPERSONATION_LEVEL que proporciona el nivel de suplantación del token.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

OpenThreadToken es similar a CAccessToken::GetThreadToken, pero establece el nivel de suplantación antes de inicializar el token de acceso del subproceso desde CAccessToken.

La Clase CAutoRevertImpersonation se puede usar para revertir de forma automática los tokens de acceso suplantados creados estableciendo la marca bImpersonate en TRUE.

CAccessToken::PrivilegeCheck

Llame a este método para determinar si un conjunto de privilegios especificado está habilitado en el objeto CAccessToken.

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

Parámetros

RequiredPrivileges
Puntero a la estructura PRIVILEGE_SET.

pbResult
Puntero a un valor que establece el método para indicar si alguno o todos los privilegios especificados están habilitados en el objeto CAccessToken.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

Cuando PrivilegeCheck devuelve, el miembro Attributes de cada estructura LUID_AND_ATTRIBUTES se establece en SE_PRIVILEGE_USED_FOR_ACCESS si el privilegio correspondiente está habilitado. Este método llama a la función PrivilegeCheck de Win32.

CAccessToken::Revert

Llame a este método para evitar que un subproceso use un token de suplantación.

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

Parámetros

hThread
Manipulador del subproceso que se va a revertir de la suplantación. Si hThread es NULL, se asume el subproceso actual.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

La reversión de los tokens de suplantación se puede realizar de forma automática con la Clase CAutoRevertImpersonation.

CAccessToken::SetDefaultDacl

Llame a este método para establecer la DACL predeterminada del objeto CAccessToken.

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

Parámetros

rDacl
La nueva información predeterminada de la Clase CDacl.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

La DACL predeterminada es la DACL que se usa de forma predeterminada cuando se crean objetos nuevos con este token de acceso en vigor.

CAccessToken::SetOwner

Llame a este método para establecer el propietario del objeto CAccessToken.

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

Parámetros

rSid
Objeto de Clase CSid que contiene la información del propietario.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

El propietario es el propietario predeterminado que se usa para los objetos nuevos creados mientras este token de acceso está en vigor.

CAccessToken::SetPrimaryGroup

Llame a este método para establecer el grupo principal del objeto CAccessToken.

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

Parámetros

rSid
Objeto de Clase CSid que contiene la información del grupo principal.

Valor devuelto

Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.

Comentarios

El grupo principal es el grupo predeterminado para los objetos nuevos creados mientras este token de acceso está en vigor.

Consulte también

Ejemplo de ATLSecurity
Tokens de acceso
Información general sobre la clase