Tokens de acceso
Un token de acceso es un objeto que describe el contexto de seguridad de un proceso o subproceso. La información de un token incluye la identidad y los privilegios de la cuenta de usuario asociada al proceso o subproceso. Cuando un usuario inicia sesión, el sistema comprueba la contraseña del usuario comparándolo con la información almacenada en una base de datos de seguridad. Si la contraseña se autentica, el sistema genera un token de acceso. Cada proceso ejecutado en nombre de este usuario tiene una copia de este token de acceso.
El sistema usa un token de acceso para identificar al usuario cuando un subproceso interactúa con un objeto protegible o intenta realizar una tarea del sistema que requiere privilegios. Los tokens de acceso contienen la siguiente información:
- Identificador de seguridad (SID) de la cuenta del usuario
- SID para los grupos de los que el usuario es miembro
- SiD de inicio de sesión que identifica la sesión de inicio de sesión actual
- Una lista de los privilegios mantenidos por el usuario o los grupos del usuario
- Un SID de propietario
- SiD para el grupo principal
- DACL predeterminada que usa el sistema cuando el usuario crea un objeto protegible sin especificar un descriptor de seguridad.
- Origen del token de acceso
- Si el token es un token principal o de suplantación
- Una lista opcional de restricción de SID
- Niveles de suplantación actuales
- Otras estadísticas
Cada proceso tiene un token principal que describe el contexto de seguridad de la cuenta de usuario asociada al proceso. De forma predeterminada, el sistema usa el token principal cuando un subproceso del proceso interactúa con un objeto protegible. Además, un subproceso puede suplantar una cuenta de cliente. La suplantación permite al subproceso interactuar con objetos protegibles mediante el contexto de seguridad del cliente. Un subproceso que suplanta a un cliente tiene un token principal y un token de suplantación.
Use la función OpenProcessToken para recuperar un identificador al token principal de un proceso. Use la función OpenThreadToken para recuperar un identificador del token de suplantación de un subproceso. Para obtener más información, consulte Suplantación.
Puede usar las siguientes funciones para manipular tokens de acceso.
Función | Descripción |
---|---|
AdjustTokenGroups | Cambia la información del grupo en un token de acceso. |
AdjustTokenPrivileges | Habilita o deshabilita los privilegios en un token de acceso. No concede privilegios nuevos ni revoca los existentes. |
CheckTokenMembership | Determina si un SID especificado está habilitado en un token de acceso especificado. |
CreateRestrictedToken | Crea un nuevo token que es una versión restringida de un token existente. El token restringido puede tener SID deshabilitados, privilegios eliminados y una lista de SID restringidos. |
DuplicateToken | Crea un nuevo token de suplantación que duplica un token existente. |
DuplicateTokenEx | Crea un nuevo token principal o token de suplantación que duplica un token existente. |
GetTokenInformation | Recupera información sobre un token. |
IsTokenRestricted | Determina si un token tiene una lista de restricciones de SID. |
OpenProcessToken | Recupera un identificador para el token de acceso principal de un proceso. |
OpenThreadToken | Recupera un identificador del token de acceso de suplantación para un subproceso. |
SetThreadToken | Asigna o quita un token de suplantación para un subproceso. |
SetTokenInformation | Cambia el propietario, el grupo principal o la DACL predeterminada de un token. |
Las funciones de token de acceso usan las siguientes estructuras para describir las partes de un token de acceso.
Estructura | Descripción |
---|---|
TOKEN_CONTROL | Información que identifica un token de acceso. |
TOKEN_DEFAULT_DACL | DACL predeterminada que el sistema usa en los descriptores de seguridad de los nuevos objetos creados por un subproceso. |
TOKEN_GROUPS | Especifica los SID y los atributos de los SID de grupo en un token de acceso. |
TOKEN_OWNER | SiD de propietario predeterminado para los descriptores de seguridad de los nuevos objetos. |
TOKEN_PRIMARY_GROUP | El SID de grupo principal predeterminado para los descriptores de seguridad de los nuevos objetos. |
TOKEN_PRIVILEGES | Privilegios asociados a un token de acceso. También determina si los privilegios están habilitados. |
TOKEN_SOURCE | Origen de un token de acceso. |
TOKEN_STATISTICS | Estadísticas asociadas a un token de acceso. |
TOKEN_USER | SiD del usuario asociado a un token de acceso. |
Las funciones de token de acceso usan los siguientes tipos de enumeración.
Tipo de enumeración | Especifica |
---|---|
TOKEN_INFORMATION_CLASS | Identifica el tipo de información que se va a establecer o recuperar de un token de acceso. |
TOKEN_TYPE | Identifica un token de acceso como un token de suplantación o principal. |