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