首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于 HTTP Header 传输签名参数

基于 HTTP Header 传输签名参数

作者头像
新亮
发布2020-08-28 08:40:49
1.1K0
发布2020-08-28 08:40:49
举报
文章被收录于专栏:新亮笔记新亮笔记

概述

调用方 向 接口提供方,申请调用 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)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新亮笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 签名参数传递
  • 参数示例
  • Digest 参考示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档