【接口鉴权】接口鉴权机制(基于对称密钥加密)

✅ 场景:接口调用时校验请求是否合法、防止伪造


🌟 整体流程逻辑图解:

第一阶段:用户注册实名阶段(初始化)

  1. 用户在业务系统注册实名。

  2. 业务系统为用户生成并分配一对凭证(密钥对):

    • id:用户唯一标识(如 userIdappId

    • secret(或称 password):密钥(用户必须保管好)


第二阶段:用户调用接口(鉴权流程)

🔐 前端操作:
  1. 前端获取当前时间戳或生成一个随机数 random(例如 6 位或 16 位字符串)。

  2. 前端使用一个约定的加密算法(如 HMAC-SHA256(secret, id + random)MD5(secret + random))进行加密,得到 sign

  3. 前端调用接口时提交以下参数:

    • id

    • random

    • sign(加密后的签名)

🔍 后端验证流程:
  1. 后端接收到接口请求,提取参数:idrandomsign

  2. 后端通过 id 获取该用户对应的 secret

  3. 后端拼接相同规则的字符串,例如:secret + random

  4. 后端使用相同的加密算法生成 serverSign

  5. 后端对比:

    • 如果 sign.equals(serverSign)

      • 鉴权通过,允许调用接口。

    • 否则:

      • 鉴权失败,返回错误信息(如 401 未授权)。


✅ 示例流程(伪代码)

前端生成签名:

const sign = md5(secret + random);

后端验证签名:

String secret = getSecretById(id);
String serverSign = md5(secret + random);
if (serverSign.equals(signFromRequest)) {
    // 鉴权成功
} else {
    // 鉴权失败
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值