# 签名过期校验

注意事项:

  1. 标注平台服务器系统需要时间同步,否则可能将会导致鉴权出错。
  2. 标注平台的签名过期时间支持通过nacos进行灵活配置。

服务器接收到客户端请求时,首先拿到标注平台的当前时间戳和系统设置的签名时效,与请求参数时间戳进行是否过期比对。
举例:

  1. 客户端请求的时间戳T1:1617181200000;
  2. 标注平台当前的时间戳T2:1617184800000;
  3. 系统配置的签名过期时间:24小时;

T2-T1 = 1617184800-1617181200 = 3600秒 < 86400秒(24小时)
上述情况,签名未过期。否则判断为过期,返回签名过期错误。

# 签名重复校验

服务端到数据库中查询请求带上的 signature 是否存在(Redis TTL)。

  1. 如果不存在,且请求时间有效则为合法请求;
  2. 如果不存在,且请求时间超出规定时限,判断为恶意请求。
  3. 如果已经存在,判断为恶意请求。

# 签名一致性校验

服务端获取到 SceretId 后,查询对应的 SceretKey。

使用相同的规则进行签名计算,计算出的 signature 和传入的 signature 比对,如果签名一致,则具备正常访问权限,进行接口调用,同时将 signature 写入,并记录时间。否则返回签名不一致错误。