访问令牌(access token)

安全对象:就是资源,比如目录,文件,管道之类的。

访问令牌是用来描述进程或线程安全上下文的对象,令牌所包含的信息是与该user账户相关的进程或线程的身份和权限信息。当user登录时,系统通过将user输入的密码与储存在安全数据库中的密码进行对比。若密码正确,系统此时会为user生成一个访问令牌。之后,该user执行的每个进程都会拥有一个该访问令牌的拷贝。

当线程和一个安全对象交互时或者线程试图执行一个需要权限的系统任务时,系统使用访问令牌来辨别user。访问令牌包含以下信息:

1.用户账户的安全标识(SID)

2.用户所属组的SID

3.识别当前登录会话的登录SID

4.用户或者用户组所保存的权限列表

5.所有者SID

6.主组SID

7.默认的DACL。当用户在没有指定安全描述符情况下创建一个安全的对象时,系统使用该默认DACL。

8.访问令牌的来源

9.令牌是一个主令牌还是模拟令牌

10.限制的SID可选列表

11.当前模拟级别

12.其他统计

每个进程都有一个主令牌用于描述和进程相关联的用户账户的安全上下文。默认地,当进程的线程和安全对象交互时系统使用主令牌。此外,线程还能够模拟一个客户端账号。该模拟账号让线程和使用客户端的安全上下文的安全对象交互。一个模拟客户端的线程它不仅有主令牌还会有一个模拟令牌。

使用OpenProcessToken函数获取一个句柄,该句柄为进程的主令牌句柄。使用OpenThreadToken获取指向线程的模拟令牌句柄。

可使用下面的函数来操作访问令牌:

函数 描述
AdjustTokenGroups在访问令牌中改变组信息
AdjustTokenPrivileges在访问令牌中使能或禁止权限。它没有做新的授权或撤销已经存在的授权
CheckTokenMembership在指定的访问令牌内判断一个指定的SID是否使能
CreateRestrictedToken创建新的令牌,它是一个已经存在令牌的限制版本。该限制令牌可能已经禁止SID,删除权限以及一系列的限制SID
DuplicateToken创建一个新的模拟令牌,该令牌是复制于一个已经存在的令牌
DuplicateTokenEx创建一个新的主令牌或者模拟令牌,该令牌复制于一个已经存在的令牌
GetTokenInformation获取一个令牌相关的信息
IsTokenRestricted判断一个令牌是否含有一系列限制SID
OpenProcessToken 获取一个指向进程的主令牌的句柄
OpenThreadToken 获取一个指向线程的模拟令牌的句柄
SetThreadToken给一个线程分配或删除一个模拟令牌
SetTokenInformation改变令牌的属主,主组,或默认DACL

访问令牌函数使用以下结构体来描述访问令牌:

结构体描述
TOKEN_CONTROL描述访问令牌的信息
TOKEN_DEFAULT_DACL默认的DACL,系统会在线程创建的新对象的安全描述符中使用该DACL。
TOKEN_GROUPS指定访问令牌的SID和组SID的属性
TOKEN_OWNER默认属主SID,指向新对象的安全描述符。
TOKEN_PRIMARY_GROUP默认主组SID,指向新对象的安全描述符
TOKEN_PRIVILEGES与访问令牌相关联的权限,也决定了权限是否使能
TOKEN_SOURCE 访问令牌来源
TOKEN_STATISTICS和令牌相关的统计
TOKEN_USER和访问令牌相关的用户SID

访问令牌函数使用以下枚举类型:

枚举类型描述
TOKEN_INFORMATION_CLASS表示来自访问令牌设置或获取的信息类型
TOKEN_TYPE标识访问令牌为主令牌还是模拟令牌


参考网址


 


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值