{"schemaVersion":"drillso.agent.session.v1","scope":"node","resource":{"type":"shared-session","shareId":"B_Qh5EPwQq0l","title":"API Key 和 Bearer Token 是什么，有啥区别？","canonicalUrl":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/bearer-token-31f278f7","agentUrl":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/agent.json?node=bearer-token-31f278f7","ownerName":"pyth0nb3st","updatedAt":"2026-04-28T10:23:26.413Z"},"currentNode":{"id":"31f278f7-faa0-4740-8564-d3832b8c7d64","slug":"bearer-token-31f278f7","title":"Bearer Token","type":"page","url":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/bearer-token-31f278f7","agentUrl":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/agent.json?node=bearer-token-31f278f7","text":"## Bearer 到底是啥意思？\n\n**Bearer** 这个词本意是“持有者、携带者”。  \n在 **Bearer Token** 里，它的核心意思是：\n\n> **谁持有这个 token，谁就被当作有权限访问。**\n\n也就是说，服务端通常**不关心你“是不是原始拥有者”**，而是关心：\n\n- 你有没有把这个 token 带来\n- 这个 token 是否有效\n- 它有没有过期\n- 它是否有访问当前资源的权限\n\n所以 Bearer Token 经常被翻译成：\n\n- **持有者令牌**\n- **持票即有效的令牌**\n\n这也是为什么你看到请求头里常写：\n\n```http\nAuthorization: Bearer <token>\n```\n\n意思就是：  \n“我现在用的是一种 **Bearer 类型** 的授权凭证，这个凭证就是后面的 token。”\n\n---\n\n## 为啥叫 Bearer？它强调了什么？\n\n它强调的是一种**认证/授权模型**，不是 token 长什么样。\n\n很多人误以为 Bearer Token = JWT，其实**不是**。\n\n- **Bearer**：表示“使用方式”\n- **Token**：表示“令牌”\n- **JWT**：只是 token 的一种格式\n\n也就是说，下面两种都可能是 Bearer Token：\n\n```text\nAuthorization: Bearer abcdef123456\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\n```\n\n前者可能是数据库里查得到的随机串，后者可能是 JWT。\n\n### 它强调的关键点\n\nBearer 机制强调：\n\n- **凭证在手即可用**\n- 不一定需要额外证明“你就是你”\n- 因此**保密性特别重要**\n\n你可以把它想成现实中的几种东西：\n\n- **门禁卡**：谁拿着卡，谁就能刷门\n- **电影票**：谁拿着票，谁就能进场\n- **酒店房卡**：前台默认“拿着房卡的人”有权限开这个房间\n\n这些东西都符合 Bearer 思想：  \n**系统认“票/卡”，不一定认“人”。**\n\n---\n\n## 为啥要用 Bearer，而不是直接用户名密码？\n\n因为 Bearer Token 有几个非常重要的好处。\n\n### 1. 不用每次都传用户名密码\n\n如果每个请求都带用户名密码，风险很大：\n\n- 密码暴露一次，影响长期账户安全\n- 服务端要频繁处理敏感凭证\n- 客户端也更难安全保存密码\n\n而 Bearer Token 的方式是：\n\n1. 用户先登录一次\n2. 服务端验证用户名密码\n3. 发一个临时 token\n4. 后续请求只带 token\n\n这样做的好处是：\n\n- 密码不用到处传\n- token 可以设置短期有效\n- token 泄露后的损害通常比密码泄露更可控\n\n---\n\n### 2. 它天然适合“授权”而不只是“认证”\n\nBearer Token 不只是表示“我是谁”，更常表示：\n\n- 我已经登录过\n- 我被授予了某些权限\n- 我可以访问哪些 API\n\n比如一个 token 可以只允许：\n\n- 读取用户资料\n- 不能删除账户\n- 只能访问某个应用范围的数据\n\n这就是常说的 **scope（作用范围）**。\n\n---\n\n### 3. 可以设置过期时间，风险更可控\n\nAPI Key 往往比较长期；  \nBearer Token 通常是**短期的 access token**。\n\n例如：\n\n- 1 小时后过期\n- 15 分钟后过期\n- 过期后要用 refresh token 刷新\n\n这样即使 token 泄露，攻击者可利用的窗口也更短。\n\n---\n\n## Bearer 的安全特点：优点和风险同时存在\n\nBearer 好用，但它有一个非常鲜明的安全特征：\n\n> **它不证明“持有者是谁”，只证明“持有者手里有票”。**\n\n所以它的优点和风险其实来自同一个设计。\n\n### 优点\n\n- 简单，HTTP Header 就能传\n- 很适合前后端分离、移动端、OAuth 2.0\n- 可以做短期授权\n- 可以细粒度控制权限\n\n### 风险\n\n- **一旦泄露，别人拿去就能用**\n- 不像“签名请求”那样能证明请求一定来自原客户端\n- 必须依赖 HTTPS 和安全存储\n\n---\n\n## 一个最直观的例子\n\n### 登录阶段\n\n```http\nPOST /login HTTP/1.1\nHost: api.example.com\nContent-Type: application/json\n\n{\"username\":\"alice\",\"password\":\"123456\"}\n```\n\n服务端验证成功后返回：\n\n```json\n{\n  \"access_token\": \"abc123token\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600\n}\n```\n\n### 访问资源阶段\n\n```http\nGET /api/profile HTTP/1.1\nHost: api.example.com\nAuthorization: Bearer abc123token\n```\n\n服务端看到这个 token，就会判断：\n\n- token 是否存在\n- 是否没过期\n- 是否有 `profile:read` 权限\n\n如果都通过，就返回用户资料。\n\n---\n\n## 它和 API Key 的本质区别\n\n你可以这样抓核心：\n\n- **API Key** 更像“应用身份证”\n- **Bearer Token** 更像“登录后的临时通行证”\n\nAPI Key 常用于：\n\n- 识别哪个应用在调用\n- 统计配额\n- 简单鉴权\n\nBearer Token 常用于：\n\n- 表示某个用户已经登录\n- 表示用户/客户端已被授权\n- 控制访问范围和有效期\n\n---\n\n## 你还可以继续往下学的子概念\n\n如果你想彻底吃透 Bearer Token，建议继续看这些相关概念：\n\n- **Access Token**：真正拿来访问 API 的令牌\n- **Refresh Token**：用来换新的 access token\n- **OAuth 2.0**：Bearer Token 最常见的标准体系\n- **JWT**：一种常见 token 格式\n- **Scope**：令牌可访问的权限范围\n- **Token Revocation**：令牌撤销\n- **Proof-of-Possession Token**：比 Bearer 更强，要求证明“你不仅拿着 token，还真是合法持有者”\n\n---\n\n## 一句话总结\n\n**Bearer 的意思就是“持有者”。之所以要用 Bearer，是因为它提供了一种简单、标准、适合登录授权场景的访问凭证机制：谁带着有效 token 来，谁就能以该 token 代表的身份和权限访问资源。**\n\n如果你愿意，我下一步可以继续给你讲：\n\n1. **Bearer Token 和 JWT 到底啥关系**  \n2. **为什么说 Bearer “泄露即失守”**  \n3. **API Key / Session / Bearer Token 三者怎么区分**","markdown":"## Bearer 到底是啥意思？\n\n**Bearer** 这个词本意是“持有者、携带者”。  \n在 **Bearer Token** 里，它的核心意思是：\n\n> **谁持有这个 token，谁就被当作有权限访问。**\n\n也就是说，服务端通常**不关心你“是不是原始拥有者”**，而是关心：\n\n- 你有没有把这个 token 带来\n- 这个 token 是否有效\n- 它有没有过期\n- 它是否有访问当前资源的权限\n\n所以 Bearer Token 经常被翻译成：\n\n- **持有者令牌**\n- **持票即有效的令牌**\n\n这也是为什么你看到请求头里常写：\n\n```http\nAuthorization: Bearer <token>\n```\n\n意思就是：  \n“我现在用的是一种 **Bearer 类型** 的授权凭证，这个凭证就是后面的 token。”\n\n---\n\n## 为啥叫 Bearer？它强调了什么？\n\n它强调的是一种**认证/授权模型**，不是 token 长什么样。\n\n很多人误以为 Bearer Token = JWT，其实**不是**。\n\n- **Bearer**：表示“使用方式”\n- **Token**：表示“令牌”\n- **JWT**：只是 token 的一种格式\n\n也就是说，下面两种都可能是 Bearer Token：\n\n```text\nAuthorization: Bearer abcdef123456\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\n```\n\n前者可能是数据库里查得到的随机串，后者可能是 JWT。\n\n### 它强调的关键点\n\nBearer 机制强调：\n\n- **凭证在手即可用**\n- 不一定需要额外证明“你就是你”\n- 因此**保密性特别重要**\n\n你可以把它想成现实中的几种东西：\n\n- **门禁卡**：谁拿着卡，谁就能刷门\n- **电影票**：谁拿着票，谁就能进场\n- **酒店房卡**：前台默认“拿着房卡的人”有权限开这个房间\n\n这些东西都符合 Bearer 思想：  \n**系统认“票/卡”，不一定认“人”。**\n\n---\n\n## 为啥要用 Bearer，而不是直接用户名密码？\n\n因为 Bearer Token 有几个非常重要的好处。\n\n### 1. 不用每次都传用户名密码\n\n如果每个请求都带用户名密码，风险很大：\n\n- 密码暴露一次，影响长期账户安全\n- 服务端要频繁处理敏感凭证\n- 客户端也更难安全保存密码\n\n而 Bearer Token 的方式是：\n\n1. 用户先登录一次\n2. 服务端验证用户名密码\n3. 发一个临时 token\n4. 后续请求只带 token\n\n这样做的好处是：\n\n- 密码不用到处传\n- token 可以设置短期有效\n- token 泄露后的损害通常比密码泄露更可控\n\n---\n\n### 2. 它天然适合“授权”而不只是“认证”\n\nBearer Token 不只是表示“我是谁”，更常表示：\n\n- 我已经登录过\n- 我被授予了某些权限\n- 我可以访问哪些 API\n\n比如一个 token 可以只允许：\n\n- 读取用户资料\n- 不能删除账户\n- 只能访问某个应用范围的数据\n\n这就是常说的 **scope（作用范围）**。\n\n---\n\n### 3. 可以设置过期时间，风险更可控\n\nAPI Key 往往比较长期；  \nBearer Token 通常是**短期的 access token**。\n\n例如：\n\n- 1 小时后过期\n- 15 分钟后过期\n- 过期后要用 refresh token 刷新\n\n这样即使 token 泄露，攻击者可利用的窗口也更短。\n\n---\n\n## Bearer 的安全特点：优点和风险同时存在\n\nBearer 好用，但它有一个非常鲜明的安全特征：\n\n> **它不证明“持有者是谁”，只证明“持有者手里有票”。**\n\n所以它的优点和风险其实来自同一个设计。\n\n### 优点\n\n- 简单，HTTP Header 就能传\n- 很适合前后端分离、移动端、OAuth 2.0\n- 可以做短期授权\n- 可以细粒度控制权限\n\n### 风险\n\n- **一旦泄露，别人拿去就能用**\n- 不像“签名请求”那样能证明请求一定来自原客户端\n- 必须依赖 HTTPS 和安全存储\n\n---\n\n## 一个最直观的例子\n\n### 登录阶段\n\n```http\nPOST /login HTTP/1.1\nHost: api.example.com\nContent-Type: application/json\n\n{\"username\":\"alice\",\"password\":\"123456\"}\n```\n\n服务端验证成功后返回：\n\n```json\n{\n  \"access_token\": \"abc123token\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600\n}\n```\n\n### 访问资源阶段\n\n```http\nGET /api/profile HTTP/1.1\nHost: api.example.com\nAuthorization: Bearer abc123token\n```\n\n服务端看到这个 token，就会判断：\n\n- token 是否存在\n- 是否没过期\n- 是否有 `profile:read` 权限\n\n如果都通过，就返回用户资料。\n\n---\n\n## 它和 API Key 的本质区别\n\n你可以这样抓核心：\n\n- **API Key** 更像“应用身份证”\n- **Bearer Token** 更像“登录后的临时通行证”\n\nAPI Key 常用于：\n\n- 识别哪个应用在调用\n- 统计配额\n- 简单鉴权\n\nBearer Token 常用于：\n\n- 表示某个用户已经登录\n- 表示用户/客户端已被授权\n- 控制访问范围和有效期\n\n---\n\n## 你还可以继续往下学的子概念\n\n如果你想彻底吃透 Bearer Token，建议继续看这些相关概念：\n\n- **Access Token**：真正拿来访问 API 的令牌\n- **Refresh Token**：用来换新的 access token\n- **OAuth 2.0**：Bearer Token 最常见的标准体系\n- **JWT**：一种常见 token 格式\n- **Scope**：令牌可访问的权限范围\n- **Token Revocation**：令牌撤销\n- **Proof-of-Possession Token**：比 Bearer 更强，要求证明“你不仅拿着 token，还真是合法持有者”\n\n---\n\n## 一句话总结\n\n**Bearer 的意思就是“持有者”。之所以要用 Bearer，是因为它提供了一种简单、标准、适合登录授权场景的访问凭证机制：谁带着有效 token 来，谁就能以该 token 代表的身份和权限访问资源。**\n\n如果你愿意，我下一步可以继续给你讲：\n\n1. **Bearer Token 和 JWT 到底啥关系**  \n2. **为什么说 Bearer “泄露即失守”**  \n3. **API Key / Session / Bearer Token 三者怎么区分**","structured":null,"children":[{"id":"4dd39ad5-87ea-42f7-b800-fea1e4b2d892","slug":"api-key-4dd39ad5","title":"API Key","type":"page","url":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/api-key-4dd39ad5","agentUrl":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/agent.json?node=api-key-4dd39ad5"}]},"breadcrumbs":[{"id":"37cc254f-9d7d-4893-a45a-b72b31f0d63c","slug":"api-key-和-bearer-token-是什么，有啥区别？-37cc254f","title":"API Key 和 Bearer Token 是什么，有啥区别？","type":"page","url":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/api-key-%E5%92%8C-bearer-token-%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%8C%E6%9C%89%E5%95%A5%E5%8C%BA%E5%88%AB%EF%BC%9F-37cc254f","agentUrl":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/agent.json?node=api-key-%E5%92%8C-bearer-token-%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%8C%E6%9C%89%E5%95%A5%E5%8C%BA%E5%88%AB%EF%BC%9F-37cc254f"}],"parent":{"id":"37cc254f-9d7d-4893-a45a-b72b31f0d63c","slug":"api-key-和-bearer-token-是什么，有啥区别？-37cc254f","title":"API Key 和 Bearer Token 是什么，有啥区别？","type":"page","url":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/api-key-%E5%92%8C-bearer-token-%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%8C%E6%9C%89%E5%95%A5%E5%8C%BA%E5%88%AB%EF%BC%9F-37cc254f","agentUrl":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/agent.json?node=api-key-%E5%92%8C-bearer-token-%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%8C%E6%9C%89%E5%95%A5%E5%8C%BA%E5%88%AB%EF%BC%9F-37cc254f"},"children":[{"id":"4dd39ad5-87ea-42f7-b800-fea1e4b2d892","slug":"api-key-4dd39ad5","title":"API Key","type":"page","url":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/api-key-4dd39ad5","agentUrl":"https://drillso.com/en/share/sessions/B_Qh5EPwQq0l/agent.json?node=api-key-4dd39ad5"}],"fullTree":null,"warnings":[],"truncated":false}