当前位置: 首页 > news >正文

支付鉴权方案介绍

前后端交互中的鉴权是确保请求来源合法、身份可信、权限合适的关键手段。不同系统架构和业务类型下,使用的鉴权方式略有不同,但主要可分为以下几类:


✅ 一、前后端交互常见的鉴权方式概览

鉴权方式优点缺点适用场景
Cookie + Session简单、成熟,服务端易控制不适合跨域,状态保存在服务端单体应用、同源系统
Token(如 JWT)前后端分离,支持跨域、无状态Token泄露风险高,无法主动注销前后端分离、移动端、小程序等
OAuth2.0第三方授权、通用性强实现复杂,需要依赖认证中心登录中心、SSO、平台类系统
HMAC 签名校验防止参数被篡改、请求可验签实现复杂,需要密钥管理支付接口、开放 API、回调接口
mTLS 双向证书认证安全等级高,基于证书机制成本高、接入难度大高安全场景:银行、政府 API 等

🔐 二、主流 Token 鉴权方案(JWT 为例)

🧩 步骤流程:

  1. 前端用户登录,提交账号密码。

  2. 后端校验成功后,生成一个签名的 JWT,返回给前端。

  3. 前端将 JWT 存储在 localStoragecookie 中。

  4. 每次请求时,前端将 JWT 放入 Authorization 请求头中:

    Authorization: Bearer <token>
    
  5. 后端中间件解析 JWT,验证签名、过期时间、权限等。

✅ JWT结构:

Header.Payload.Signature
  • Header:令牌类型 & 签名算法
  • Payload:用户信息、权限、过期时间
  • Signature:基于密钥和算法签名,用于防篡改

JWT示例:

{"alg": "HS256","typ": "JWT"
}
.
{"userId": "123456","role": "admin","exp": 1722659999
}
.
[签名]

🛡️ 三、签名鉴权(HMAC,常用于开放接口)

适用于防止接口被非法调用(如支付网关、Webhook 回调、对接三方系统)。

签名参数设计(推荐):

timestamp=1722640000
nonce=abc123
appKey=xxxxxx
sign=SHA256(appKey + timestamp + nonce + secret)
  • timestamp:防止重放攻击
  • nonce:随机字符串
  • sign:前后用相同规则生成并比对,确保请求未被篡改

验签流程:

  1. 后端校验时间戳是否超时(如 ±5分钟)
  2. 校验签名是否匹配
  3. 校验 appKey 是否合法

🔒 四、会话 Session 鉴权(适用于同源系统)

传统服务端鉴权方式,用户登录后后端创建一个 session:

  1. 后端创建 session 并保存在内存/Redis 中;
  2. sessionId 写入 cookie;
  3. 浏览器后续请求自动携带 cookie;
  4. 服务端根据 sessionId 取出用户信息。

缺点:不适合多服务、前后端分离或跨域请求。


🧠 五、OAuth 2.0 鉴权(适用于登录中心)

适用于多个子系统共享登录状态、或者通过微信/支付宝/Google 登录等场景。

核心角色:

角色描述
Resource Owner资源拥有者(用户)
Client第三方应用(前端系统)
Authorization Server鉴权服务器,发放 access_token
Resource Server接口服务器(API网关、后端)

流程简要:

  1. Client 请求授权码(code)
  2. Server 校验并返回 code
  3. Client 使用 code 换取 access_token
  4. 后续请求带上 access_token 调用资源服务器

🚨 六、安全建议

  • Token 设置有效期(如 30分钟),支持刷新机制(Refresh Token)
  • Https 全站启用,防止中间人劫持
  • 前端避免将 Token 存 localStorage(防 XSS),可考虑 httpOnly Cookie
  • 签名请求加入防重放机制(timestamp + nonce)
  • 实现统一中间件处理鉴权逻辑,避免每个接口都重复

🏁 总结:推荐鉴权方式选型

场景推荐鉴权方式
前后端分离 + 多端支持JWT + Bearer Token
开放平台接口 + 安全要求高HMAC签名或OAuth2.0
单体系统,部署在同一域名下Session + Cookie
银行/支付类接口mTLS + 签名校验
小程序/移动端 + 登录态JWT + Refresh机制
http://www.dtcms.com/a/293113.html

相关文章:

  • langchain4j之RAG 检索增强生成
  • 电子基石:硬件工程师的器件手册 (六) - MOSFET:电压控制的效率王者
  • 无人机AI制导模块技术分析
  • 最短路练习
  • Scrapyd与ScrapydAPI深度解析:企业级爬虫部署与管理解决方案
  • 面向对象分析与设计40讲(6)设计原则之开闭原则
  • Go语言初识--标识符 可见性
  • 数据库表介绍
  • ArcGIS地形起伏度计算
  • javaweb小案例1
  • Linux打开、读写一个文件内核做了啥?
  • python安装package和pycharm更改环境变量
  • MySQL:内置函数
  • 基于模拟的流程为灵巧机器人定制训练数据
  • 钢铁逆行者:Deepoc具身智能如何重塑消防机器人的“火场直觉”
  • CY3-NH2/amine 使用注意事项
  • 【nginx】隐藏服务器指纹:Nginx隐藏版本号配置修改与重启全攻略
  • Adaptive Graph Convolutional Network for Knowledge Graph Entity Alignment
  • 基于LangGraph的Open Deep Research架构全解析:从多Agent协作到企业级落地
  • 数据库设计mysql篇
  • 什么是检索增强生成(RAG)?
  • java调用周立功USBCAN SDK读取汽车总线数据
  • [3-02-02].第04节:开发应用 - RequestMapping注解的属性2
  • TCP头部
  • Kotlin伴生对象
  • Go后端配置文件教程
  • LeetCode|Day22|231. 2 的幂|Python刷题笔记
  • AI一周事件(2025年7月15日-7月21日)
  • 开发避坑短篇(4):跨域请求中Session数据丢失的排查与修复方案
  • Qt资源系统:如何有效管理图片和文件