JWT令牌类型全解析:Bearer、JWT与Refresh

在 JWT(JSON Web Token)体系中,token_type 字段是一个可选但常见的字段,用于明确 Token 的类型和用途。它通常出现在响应头或 Token 的负载(payload)中。


✅ 常见的 token_type 及其作用

Token Type 作用说明 典型使用场景
bearer 最常见类型,表示"携带者"令牌(Bearer Token),即持有者即可访问资源。 所有基于 OAuth2 / JWT 的 API 认证。例如:Authorization: Bearer eyJhbGciOiJSUzI1Ni...
mac 用于 HMAC(基于密钥的哈希消息认证码)签名的 Token,通常用于 OAuth 1.0a。 OAuth 1.0a 协议(现已较少使用)。
jwt 明确表示这是一个 JWT 格式的 Token(虽然 bearer 也能是 JWT,但 jwt 更明确)。 用于区分 JWT 和非 JWT 的 Bearer Token(如某些自定义 Token)。
refresh 专门用于刷新访问 Token 的 Token。它本身不能访问资源,只能换取新的 access_token 实现"长期登录"或"自动续期"功能(如 Refresh Token 机制)。

🔍 详细说明与最佳实践

1. bearer ------ 最常用,推荐使用

  • 含义:持有者可以使用该 Token 访问资源。

  • 标准支持:HTTP Bearer Token 是 OAuth 2.0 的标准认证方式。

  • 推荐用法

    http 复制代码
    Authorization: Bearer eyJhbGciOiJSUzI1Ni...

绝大多数现代系统(包括 FastAPI + JWT)都使用 bearer


2. jwt ------ 标识 Token 格式

  • 作用:明确该 Token 是一个标准的 JWT(JSON Web Token)。

  • 使用场景 :当你在多个 Token 类型共存的系统中(如同时支持 JWT 和自定义 Token),可以使用 jwt 来区分。

  • 示例

    json 复制代码
    {
      "access_token": "eyJhbGciOiJSUzI1Ni...",
      "token_type": "jwt",
      "expires_in": 1800
    }

建议在返回 Token 的响应中包含 token_type: jwt,以增强清晰度。


3. refresh ------ 用于刷新访问 Token

  • 作用 :用于获取新的 access_token,防止用户频繁登录。
  • 生命周期 :通常比 access_token 长(如 7 天、30 天),但不能用于访问资源。
  • 使用流程
    1. 用户登录,获取 access_tokenrefresh_token
    2. access_token 过期后,用 refresh_token 请求新 Token。
    3. 服务器验证 refresh_token 是否有效,若有效则返回新的 access_token

强烈建议在支持"长期登录"的系统中使用 refresh_token


📌 总结:如何选择 token_type

场景 推荐 token_type
一般 API 认证(FastAPI + JWT) bearer(或 bearer + jwt
明确 Token 是 JWT 格式 jwt
支持"记住我"或自动续期 refresh
使用 OAuth 1.0a(不推荐) mac

✅ 最佳实践建议(FastAPI 项目)

json 复制代码
{
  "access_token": "eyJhbGciOiJSUzI1Ni...",
  "token_type": "bearer",
  "expires_in": 1800,
  "refresh_token": "refresh.eyJhbGciOiJSUzI1Ni...",
  "refresh_token_type": "refresh"
}
相关推荐
曲幽2 天前
FastAPI登录验证:用OAuth2与JWT构筑你的API安全防线
python·fastapi·web·jwt·token·oauth2
清风徐来QCQ4 天前
传统Session和JWT方案的区别
jwt·session
曲幽5 天前
FastAPI + SQLite:从基础CRUD到安全并发的实战指南
python·sqlite·fastapi·web·jwt·form·sqlalchemy·oauth2
Tancenter6 天前
OAuth2.0的Credientials Grant模式(客户端模式)
oauth2.0·客户端模式
利刃大大12 天前
【SpringBoot】validation参数校验 && JWT鉴权实现 && 加密/加盐
java·spring boot·jwt·加密
二进制_博客12 天前
JWT权限认证快速入门
java·开发语言·jwt
heartbeat..14 天前
Web 状态管理核心技术详解 + JWT 双 Token (Access/Refresh Token) 自动登录
java·网络·jwt·token
musk121219 天前
jdk21 + springboot 3.2.X + security + jwt
security·jwt
源代码•宸19 天前
goframe框架签到系统项目开发(用户认证、基于 JWT 实现认证、携带access token获取用户信息)
服务器·开发语言·网络·分布式·后端·golang·jwt