You need to enable JavaScript to run this app.
导航

回调签名验证

最近更新时间2023.08.28 19:29:58

首次发布时间2023.04.24 11:11:45

你必须在你的业务服务端部署 HTTP(s) 服务以接收回调。IM 服务端发起回调时,会使用你设置的回调密钥对回调签名,供业务服务端进行签名认证。

你可以参考以下签名算法进行验签:

1、创建参数字符数组

将用户回调密钥SecretKey和接收到回调字段值:EventTypeEventDataEventTimeEventIDVersionAppIDNonceSecretKey 组成数组:

当前 Version 为固定值:2020-12-01

type Event struct {
	EventType string `json:"EventType"`
	EventData string `json:"EventData"`
	EventTime string `json:"EventTime"`
	EventID   string `json:"EventId"`
	AppID     string `json:"AppId"`
	Version   string `json:"Version"`
	Nonce      string `json:"Nonce"`
	Signature string `json:"Signature"`
}

var event Event

data := []string{
	event.EventType,
	event.EventData,
	event.EventTime,
	event.EventID,
	event.AppID,
	event.Version,
	event.Nonce,
	secretKey,
}

示例 : [EventTypeVal EventDataVal EventTimeVal EventIdVal VersionVal AppIDVal NonceVal SecretKeyVal]

2、按字母序排列步骤一字符数组

SortedData = Sort(data)

示例 : [AppIDVal EventDataVal EventIdVal EventTimeVal EventTypeVal NonceVal SecretKeyVal VersionVal]

3、将排序后字符数组元素直接拼接成字符串得到 PayloadData:

PayloadData=Join(SortedData)

示例 : [AppIDValEventDataValEventIdValEventTimeValEventTypeValNonceValSecretKeyValVersionVal]

4、对拼接好的字符串进行 SHA256 哈希算法:

HashData=Hash(PayloadData)

示例 : [20 170 104 20 32 203 70 171 95 29 138 214 172 154 178 31 52 30 169 219 249 213 35 112 89 195 196 192 231 49 48 15]

5、进行十六进制编码,得到回调签名

Signature=HexEncode(HashData)

示例 : 14aa681420cb46ab5f1d8ad6ac9ab21f341ea9dbf9d5237059c3c4c0e731300f

备注:SecretKey 是你在控制台上配置的回调密钥。`