Bearer Token介绍

一、Bearer Token 是什么?

Bearer Token(译为 "持有者令牌")是一种 HTTP 协议下的轻量级鉴权凭证,本质是一串无意义的字符串(通常由字母、数字、特殊符号组成),由服务器在用户首次认证(如输入账号密码、扫码登录)后生成并返回给客户端(如浏览器、App)。

"Bearer"(持有者)的核心含义是:谁持有这串令牌,服务器就认为谁是合法用户,无需再验证令牌持有者的身份细节(如 "你是谁"),只需验证令牌本身的有效性(如 "令牌是否真实、是否过期")。

二、Bearer Token 的核心作用

它的核心目标是 解决 "客户端与服务器之间安全、高效的身份验证" 问题,具体作用可拆解为以下 4 点:

1. 替代传统明文认证,提升安全性

传统的 HTTP 基础认证(Basic Auth)会将 "账号:密码" 用 Base64 编码后直接传输(本质仍是明文,可轻易解码),而 Bearer Token 是服务器生成的 "临时凭证":

  • 令牌本身不包含用户敏感信息(如密码),即使泄露,攻击者也无法反向推导出用户账号密码;
  • 令牌可设置短期有效期,降低泄露后的风险范围。

2. 简化后续请求的鉴权流程,提升效率

用户只需在首次登录时提交真实凭证(如账号密码),后续向服务器发起请求时,无需重复提交敏感信息,只需在 HTTP 请求头中携带 Bearer Token 即可,流程极大简化:

  1. 客户端首次认证:提交 账号+密码 → 服务器验证通过 → 返回 Bearer Token
  2. 客户端后续请求:在请求头中携带 Authorization: Bearer <令牌字符串> → 服务器验证令牌有效 → 允许访问资源。

3. 支持跨域、跨平台场景

Bearer Token 与客户端类型(浏览器、App、小程序)、部署环境(前端、后端服务)无关,只需在请求中正确携带令牌即可鉴权,因此广泛用于:

  • 前后端分离项目(如 Vue/React 前端调用后端 API);
  • 跨域请求(如 A 域名的前端调用 B 域名的 API);
  • 第三方服务调用(如 App 调用微信、支付宝的开放 API)。

4. 灵活控制权限范围(配合令牌内容设计)

虽然 Bearer Token 本身是 "无意义字符串",但服务器可在生成令牌时,将用户的权限信息(如 "只能访问订单列表,不能修改订单")、用户 ID 等数据加密存储在令牌中(如 JWT 格式的 Bearer Token),后续验证令牌时可直接解析出权限,实现 "精细化权限控制"。

三、Bearer Token 的使用规范(关键细节)

  1. 必须通过 HTTPS 传输

    Bearer Token 是 "身份凭证",若通过 HTTP 明文传输,可能被中间人劫持并盗用,因此强制要求在 HTTPS 协议下使用,通过加密传输保护令牌安全。

  2. 请求头格式固定

    客户端携带令牌时,必须遵守 HTTP 规范,在 Authorization 请求头中按以下格式填写:

    http

    makefile 复制代码
    Authorization: Bearer <你的令牌字符串>

    例如:

    http

    makefile 复制代码
    Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...(后续省略)

    注意:Bearer 后必须跟一个空格,再拼接令牌字符串,格式错误会导致鉴权失败。

  3. 令牌的生命周期管理

    • 服务器会为 Bearer Token 设置过期时间(如 2 小时),过期后客户端需重新发起认证获取新令牌;
    • 若用户主动登出,客户端需删除本地存储的令牌,服务器也可在后台 "拉黑" 已失效的令牌(防止被盗用)。

四、常见误区:Bearer Token ≠ JWT

很多人会将 Bearer Token 与 JWT(JSON Web Token)混淆,其实二者是 "凭证类型" 与 "具体实现格式" 的关系:

  • Bearer Token:是一种 "鉴权方案"(定义了 "如何用令牌鉴权" 的规则);

  • JWT :是 Bearer Token 的一种常见数据格式(将用户信息、过期时间等用 JSON 结构存储并加密,便于服务器解析)。

除了 JWT,Bearer Token 也可以是随机生成的字符串(如 UUID),服务器通过查询数据库 / 缓存验证令牌是否存在、是否有效。

五、应用场景举例

  • 手机 App 登录:用户输入手机号 + 验证码后,App 收到服务器返回的 Bearer Token,后续刷首页、查订单时,所有 API 请求都会携带该令牌;
  • 第三方接口调用:开发者在平台申请 API 密钥后,通过密钥换取 Bearer Token,调用接口时携带令牌证明 "我是已授权的开发者";
  • 前后端分离项目:前端登录成功后存储 Token,每次发请求时通过 Axios 拦截器自动在请求头添加 Authorization: Bearer xxx
相关推荐
元亓亓亓8 小时前
SSM--day4--SpringMVC(补充)
java·后端·ssm
黄智勇9 小时前
xlsx-handlebars 一个用于处理 XLSX 文件 Handlebars 模板的 Rust 库,支持多平台使
前端
沐雨橙风ιε9 小时前
Spring Boot整合Apache Shiro权限认证框架(应用篇)
java·spring boot·后端·apache shiro
考虑考虑9 小时前
fastjson调用is方法开头注意
java·后端·java ee
小蒜学长10 小时前
springboot基于javaweb的小零食销售系统的设计与实现(代码+数据库+LW)
java·开发语言·数据库·spring boot·后端
brzhang10 小时前
为什么 OpenAI 不让 LLM 生成 UI?深度解析 OpenAI Apps SDK 背后的新一代交互范式
前端·后端·架构
EnCi Zheng10 小时前
JPA 连接 PostgreSQL 数据库完全指南
java·数据库·spring boot·后端·postgresql
brzhang10 小时前
OpenAI Apps SDK ,一个好的 App,不是让用户知道它该怎么用,而是让用户自然地知道自己在做什么。
前端·后端·架构
LucianaiB10 小时前
从玩具到工业:基于 CodeBuddy code CLI 构建电力变压器绕组短路智能诊断系统
后端
井柏然11 小时前
前端工程化—实战npm包深入理解 external 及实例唯一性
前端·javascript·前端工程化