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"
}
相关推荐
Jack_David3 天前
Java如何生成Jwt之使用Hutool实现Jwt
java·开发语言·jwt
云游云记4 天前
php JWT 使用全攻略(firebase/php-jwt 实践笔记)
php·jwt
短剑重铸之日6 天前
《SpringCloud实用版》统一认证授权:Spring Authorization Server + OAuth2 + JWT 生产级方案
java·后端·spring·jwt·oauth2
编程彩机7 天前
互联网大厂Java面试:从Spring Security到微服务架构场景解析
kafka·spring security·微服务架构·jwt·java面试·分布式追踪
kite012111 天前
GIn + Casbin: RBAC 权限控制系统集成
gin·jwt·casbin
小肖爱笑不爱笑11 天前
登录认证-会话技术、JWT令牌、过滤器Filter、拦截器Interceptor
java·开发语言·过滤器·拦截器·登录认证
蜂蜜黄油呀土豆12 天前
深入了解 JWT:无状态认证与集群部署的解决方案
web安全·jwt·token
catoop19 天前
基于 JWT/JWE 的跨系统安全数据透传方案
系统安全·jwt·jwe
勇气要爆发19 天前
AI后端工程化:FastAPI + Pydantic + JWT 鉴权实战,从零构建 AI 接口服务
人工智能·fastapi·jwt·pydantic