内测之家-安全机制-署名(一)

铁佛  论坛元老 | 2025-2-13 17:51:24 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1005|帖子 1005|积分 3015

API 加签的意义


  • 身份验证:在网络交互中,服务器需要确定哀求的来源是否可靠。通过对哀求进行加签,服务器可以验证哀求是否来自合法的客户端。客户端使用独特的密钥进行署名操作,服务器能够依据已知的密钥信息对署名进行校验,只有署名验证通过,才气确认哀求源自合法身份,有效阻止冒充合法用户或系统发出恶意哀求的举动。
  • 数据完整性掩护:在网络传输过程中,数据可能会因为网络故障、中央节点篡改等原因而遭到粉碎。加签技能通过对哀求数据生成署名,在哀求到达服务器时,服务器重新对收到的数据进行署名计算并与哀求中携带的署名对比。如果署名不一致,说明数据在传输过程中被修改,服务器可以拒绝处理该哀求,确保接收到的数据和发送端发出的数据一致,保障数据完整性。
  • 防止重放攻击:重放攻击是攻击者捕获合法哀求,然后在后续某个时间再次发送相同哀求来达到非法目的。API 加签通过在署名计算中引入如时间戳、随机数等动态因素,每次哀求生成的署名差别。服务器通过验证时间戳的时效性或者随机数的唯一性,能够识别出重复发送的哀求并将其拒绝,有效抵抗重放攻击,保障系统安全性。
  • 实现不可狡辩性:加签操作是基于客户端私钥完成的,只有持有该私钥的客户端才气生成对应的署名。一旦服务器收到合法署名的哀求并进行记载,客户端将无法否认发起过该哀求。这在涉及责任认定和业务追溯时至关紧张,好比在线交易、电子条约签署等场景,不可狡辩性保证了交易双方的权益和交易过程的可问责性。
署名认证方式

1. 初始化配置

API 拥有者为每个获授权的 APP 分配一对署名密钥,即 APP Key 和 APP Secret ,并明确规定该 APP 可用的署名算法(如 HMAC - SHA256、RSA 等)及署名版本。这些信息会被 API 拥有者记载在系统中,并告知相应的 APP 开发者。
署名算法的配置如下图:


2. 客户端署名生成

在客户端发起 API 哀求时:

  • 明确哀求要素:首先确定待署名的关键哀求数据,包罗哀求参数、哀求方法(如 GET、POST)、哀求路径以及可能的时间戳或随机数等,以确保哀求的唯一性和完整性。
  • 获取署名信息:从本地配置读取分配到的 APP Key 和 APP Secret ,以及当前使用的署名版本号与算法。
  • 实行署名计算:按照指定的署名算法,利用 APP Secret 对选定的哀求关键数据进行加密署名计算,生成署名值。
  • 添加署名信息到哀求头:将 APP Key、署名版本号、署名算法及生成的署名值添加到 HTTP 哀求的 Header 中。比方:
  1. X-Ca-Key: [APP Key的值]
  2. X-Ca-Nonce:[每次签名的唯一值]
  3. X-Ca-Ver: [版本号]
  4. X-Ca-Timestamp: [签名时间戳]
  5. X-Ca-Signature: [生成的签名值]
  6. X-Ca-Signature-Header-In:[参与签名的请求头:如X-Access-Token]
复制代码
3. API 网关认证过程

API 网关收到客户端的哀求后:

  • 提取署名信息:从哀求 Header 中读取 APP Key、署名版本号、署名算法及客户端传来的署名值。
  • 查询密钥:依据读取的 APP Key,在内部存储中查找对应的 APP Secret 。
  • 重新计算署名:根据提取的署名版本号,确定使用的署名规则,利用查找到的 APP Secret 以及与客户端相同的关键哀求数据,依照指定的署名算法重新计算署名值。
  • 对比署名:将重新计算得到的署名值与客户端传来的署名值进行比对。
4. 认证结果处理


  • 认证通过:若重新计算的署名值与客户端传来的署名值一致,表明哀求的署名认证通过。API 网关将哀求转发至后端服务进行正常处理。
认证失败:如果两者不一致,API 网关判定该哀求为非法哀求,不会将其转发给后端服务,并向客户端返回包罗错误信息的应答,如错误码和简要的错误描述,告知客户端署名验证失败及可能原因。

验签的时序图如下


  备注:
    署名算法已配置在后台,在接口传输中,就不需要再指定署名算法了
    如在内测之家,前端站点的到场署名的布局如下(secret仅到场署名、不能传输哦):仅仅是个示例哦
    
  1. method:POST
  2. uri:/ums-api/api/auth/xxxxxxxx
  3. header:x-access-token:bJW8yvKhfzFpALIuRQwTF1nR1w0w9VYL1u-kespeRX5ZKQmE9tLVWxXLHPoFg2Qp
  4. x-ca-key:xxxxxxxxx
  5. x-ca-nonce:7124736198582272
  6. x-ca-timestamp:1739437548482
  7. x-ca-ver:1.0
  8. x-enc-encrypted:true
  9. body:{"content":"kahVs+fBsFONMhM59bQkCBHd8uIEKicSLYUUF+/S5wkLkksZeoL1ol4tlgOsgT2Bla4sAzAHoG+xsG7PpFx0Xy4+hSOg8XIXsuI9myq99NHXlwtuuaAMqrqJqzB1SmUDmT01N9JyxCN5z3IKNbQ1u13Ew26gox8i11fK2rLrJFw1VJrNx5oYtchp9fQpJiq5FzXDpT+7QPgU8ig+plhSwA==","encryptKey":"lM6ERxG4OzBNWtb0ygQXT5IKdaJ4LHYB/RyN8lT3LJmWy3Jw6ecPaYv5Ck51t4QPuBR02Pr0yMYeecM/Skuqva9ubtDDXsIzoOUC2az88m5jpFbt5qUVsSUtqMiTcYTwN/EDJjctI8KFTqGEL9YVz4089EGIjx9yOj1VAnAMUOo="}
  10. secret:xxxxxxxxxx 
复制代码
  传输的哀求头如下
  1. x-access-token:bJW8yvKhfzFpALIuRQwTF1nR1w0w9VYL1u-kespeRX5ZKQmE9tLVWxXLHPoFg2Qp
  2. x-ca-key:xxxxxxxx
  3. x-ca-nonce:7124736198582272
  4. x-ca-signature:bPvxDcJZzQ9l8Si1I2M6lPWpZfhvt7U3p6Ese2YgWWI=
  5. x-ca-signature-header-in:X-Access-Token,
  6. x-ca-timestamp:1739437548482
  7. x-ca-ver:1.0
  8. x-time-zone:Asia/Shanghai
复制代码
  
内测之家--beta.forsoo.com
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表