基于 HTTP Header 传输签名参数

概述

调用方 向 接口提供方,申请调用 KeySecret,用于生成签名。

  • Key 为调用方身份标识

  • Secret 为加密盐值

加密盐值可以使用 1Password 在线生成,如下图。

签名参数传递

不建议在 URL 或 FORM 中新增参数,建议使用 HTTP Header 中的两个参数 AuthorizationDate 存储签名信息,其中 Authorization 存储签名,Date 存储签名信息。

Authorization 参数用来对传输的数据进行验证,防止篡改,由 3 部分组成:

  • Prefix 为前缀,用来识别调用方身份;

  • Space 为空格分隔符;

  • Digest 为摘要,一段加密串,加密方法建议使用 HMAC 算法。

Date 参数用来验证请求的时效性。

参数示例

Authorization: blog /Rg4zjqqWUpVfLh3uGRwkfEEV5o=
Date: Sat, 22 Aug 2020 09:15:41 GMT

Digest 参考示例

secret := "U1joiH8yDr8rzj28CMYT"
rfc1123Date := time.Now().Format(http.TimeFormat)


buffer := bytes.NewBuffer(nil)
buffer.WriteString("?id=1")
buffer.WriteString(rfc1123Date)


hash := hmac.New(sha1.New, []byte(secret))
hash.Write(buffer.Bytes())
digest := base64.StdEncoding.EncodeToString(hash.Sum(nil))
fmt.Println(digest)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值