操作系统中的访问令牌是什么?2025年4月23日 | 阅读 6 分钟 访问令牌是一个描述进程或线程安全上下文的对象。令牌用于进行安全决策,并存储有关某个系统实体的防篡改信息。虽然令牌通常只用于表示安全信息,但它也可以在令牌创建时附加额外的自由格式数据。 令牌可以无需特殊权限即可复制,例如,创建具有较低访问权限的新令牌以限制已启动应用程序的访问。当进程或线程尝试与具有安全描述符的对象交互时,Windows 会使用访问令牌。在 Windows 中,访问令牌由令牌类型的系统对象表示。 令牌中包含与进程或线程关联的用户帐户的身份和权限信息。访问令牌由用户登录系统时由登录服务生成,并根据身份验证数据库验证用户提供的凭据。身份验证数据库包含构造登录会话的初始令牌所需的凭据信息,包括其用户 ID、主组 ID 以及其他信息。 令牌附加到用户会话中创建的初始进程,并由初始进程创建的后续进程继承。每当进程打开一个具有访问控制启用的资源句柄时,Windows 就会将目标对象的安全描述符中的数据与当前有效访问令牌的内容进行协调。此访问检查评估的结果表明是否允许任何访问,如果允许,则调用应用程序可以执行哪些操作(读取、写入/修改等)。 访问令牌的用途当线程与可保护对象交互或尝试执行需要权限的系统任务时,系统会使用访问令牌来标识用户。 访问令牌是应用程序代表用户发出 API 请求的内容。访问令牌表示特定应用程序访问用户特定数据部分的授权。访问令牌包含以下信息:
访问令牌示例此示例显示了访问令牌的内容。该令牌仅包含有关应用程序在 API 上的操作的授权信息,并且这些权限被称为范围。 { "iss": "https://my-domain.auth0.com/", "sub": "auth0|123456", "aud": [ "https://example.com/health-api", "https://my-domain.auth0.com/userinfo" ], "azp": "my_client_id", "exp": 1311281970, "iat": 1311280970, "scope": "openid profile read:patients read:admin" } 访问令牌的元素一个典型的访问令牌包含三个不同的部分,它们共同作用以验证用户访问资源的权限。大多数访问令牌包含以下三个关键元素。 ![]()
访问令牌的类型操作系统中提供两种类型的访问令牌:主令牌和模拟令牌。每个进程都有一个主令牌,该令牌描述与该进程关联的用户帐户的安全上下文。默认情况下,当进程线程与可保护对象交互时,系统会使用主令牌。此外,线程可以模拟客户端帐户,模拟允许线程使用客户端的安全上下文与可保护对象进行交互。模拟客户端的线程同时拥有主令牌和模拟令牌。 ![]() 1. 主令牌 主令牌只能与进程关联,它们代表进程的安全主体。主令牌的创建以及它们与进程的关联都是特权操作,需要在权限分离的名义下执行两种不同的特权。典型场景是身份验证服务创建令牌,登录服务将其与操作系统 shell 相关联。进程最初会继承父进程主令牌的副本。 2. 模拟令牌 模拟是 Windows NT 中实现的一种安全概念,它允许服务器应用程序在访问安全对象方面暂时充当客户端。模拟有四种可能的级别:
客户端可以在连接参数中选择可供服务器使用的最高模拟级别(如果有)。委派和模拟是特权操作。模拟令牌只能与线程关联,它们代表客户端进程的安全主体。模拟令牌会通过 DCE RPC、DDE 和命名管道等 IPC 机制隐式创建并与当前线程关联。 访问令牌如何工作?用户不需要编写自己的访问代码。服务器与设备通信,所有工作都在短时间内轻松完成。您需要遵循以下一系列步骤,例如:
您还可以使用访问令牌进行单点登录 (SSO)。一个站点的凭据将成为您进入另一个站点的密钥。您只需要遵循以下步骤,例如:
SSO 请求会快速过期。大多数请求会在大约 10 分钟内过期,但有些请求会在 60 秒后停止进程。 访问令牌的安全性访问令牌在互联网上的传输过程中应受到保护。不使用加密或受保护通信渠道的公司可能会允许第三方获取令牌,这意味着未经授权即可访问非常敏感的数据。谨慎是值得的。 大多数访问令牌也会过期。这个简单的步骤允许网站确保用户仍然在线和活跃,这有助于避免大规模复制或删除。过期日期可能因公司而异。 |
我们请求您订阅我们的新闻通讯以获取最新更新。