API Key 和 Bearer Token 是什么,有啥区别?
API Key 和 Bearer Token 是什么,有啥区别? 在调用 Web API 时,最常见的认证方式之一就是 API Key 和 Bearer Token。很多初学者会把它们当成一回事:反正都是“一个字符串,放到请求里”。但实际上,它们的用途、设计目标、安全性和适用场景都有明显区别。 这篇文章会用通俗方式讲清楚: API Key 是什么 Bearer Token 是什么 两者的核心区别
API Key 和 Bearer Token 是什么,有啥区别?
Bearer Token
Bearer 到底是啥意思?
Bearer 这个词本意是“持有者、携带者”。
在 Bearer Token 里,它的核心意思是:
谁持有这个 token,谁就被当作有权限访问。
也就是说,服务端通常不关心你“是不是原始拥有者”,而是关心:
- 你有没有把这个 token 带来
- 这个 token 是否有效
- 它有没有过期
- 它是否有访问当前资源的权限
所以 Bearer Token 经常被翻译成:
- 持有者令牌
- 持票即有效的令牌
这也是为什么你看到请求头里常写:
意思就是:
“我现在用的是一种 Bearer 类型 的授权凭证,这个凭证就是后面的 token。”
为啥叫 Bearer?它强调了什么?
它强调的是一种认证/授权模型,不是 token 长什么样。
很多人误以为 Bearer Token = JWT,其实不是。
- Bearer:表示“使用方式”
- Token:表示“令牌”
- JWT:只是 token 的一种格式
也就是说,下面两种都可能是 Bearer Token:
前者可能是数据库里查得到的随机串,后者可能是 JWT。
它强调的关键点
Bearer 机制强调:
- 凭证在手即可用
- 不一定需要额外证明“你就是你”
- 因此保密性特别重要
你可以把它想成现实中的几种东西:
- 门禁卡:谁拿着卡,谁就能刷门
- 电影票:谁拿着票,谁就能进场
- 酒店房卡:前台默认“拿着房卡的人”有权限开这个房间
这些东西都符合 Bearer 思想:
系统认“票/卡”,不一定认“人”。
为啥要用 Bearer,而不是直接用户名密码?
因为 Bearer Token 有几个非常重要的好处。
1. 不用每次都传用户名密码
如果每个请求都带用户名密码,风险很大:
- 密码暴露一次,影响长期账户安全
- 服务端要频繁处理敏感凭证
- 客户端也更难安全保存密码
而 Bearer Token 的方式是:
- 用户先登录一次
- 服务端验证用户名密码
- 发一个临时 token
- 后续请求只带 token
这样做的好处是:
- 密码不用到处传
- token 可以设置短期有效
- token 泄露后的损害通常比密码泄露更可控
2. 它天然适合“授权”而不只是“认证”
Bearer Token 不只是表示“我是谁”,更常表示:
- 我已经登录过
- 我被授予了某些权限
- 我可以访问哪些 API
比如一个 token 可以只允许:
- 读取用户资料
- 不能删除账户
- 只能访问某个应用范围的数据
这就是常说的 scope(作用范围)。
3. 可以设置过期时间,风险更可控
API Key 往往比较长期;
Bearer Token 通常是短期的 access token。
例如:
- 1 小时后过期
- 15 分钟后过期
- 过期后要用 refresh token 刷新
这样即使 token 泄露,攻击者可利用的窗口也更短。
Bearer 的安全特点:优点和风险同时存在
Bearer 好用,但它有一个非常鲜明的安全特征:
它不证明“持有者是谁”,只证明“持有者手里有票”。
所以它的优点和风险其实来自同一个设计。
优点
- 简单,HTTP Header 就能传
- 很适合前后端分离、移动端、OAuth 2.0
- 可以做短期授权
- 可以细粒度控制权限
风险
- 一旦泄露,别人拿去就能用
- 不像“签名请求”那样能证明请求一定来自原客户端
- 必须依赖 HTTPS 和安全存储
一个最直观的例子
登录阶段
服务端验证成功后返回:
访问资源阶段
服务端看到这个 token,就会判断:
- token 是否存在
- 是否没过期
- 是否有
profile:read权限
如果都通过,就返回用户资料。
它和 API Key 的本质区别
你可以这样抓核心:
- API Key 更像“应用身份证”
- Bearer Token 更像“登录后的临时通行证”
API Key 常用于:
- 识别哪个应用在调用
- 统计配额
- 简单鉴权
Bearer Token 常用于:
- 表示某个用户已经登录
- 表示用户/客户端已被授权
- 控制访问范围和有效期
你还可以继续往下学的子概念
如果你想彻底吃透 Bearer Token,建议继续看这些相关概念:
- Access Token:真正拿来访问 API 的令牌
- Refresh Token:用来换新的 access token
- OAuth 2.0:Bearer Token 最常见的标准体系
- JWT:一种常见 token 格式
- Scope:令牌可访问的权限范围
- Token Revocation:令牌撤销
- Proof-of-Possession Token:比 Bearer 更强,要求证明“你不仅拿着 token,还真是合法持有者”
一句话总结
Bearer 的意思就是“持有者”。之所以要用 Bearer,是因为它提供了一种简单、标准、适合登录授权场景的访问凭证机制:谁带着有效 token 来,谁就能以该 token 代表的身份和权限访问资源。
如果你愿意,我下一步可以继续给你讲:
- Bearer Token 和 JWT 到底啥关系
- 为什么说 Bearer “泄露即失守”
- API Key / Session / Bearer Token 三者怎么区分