当回调方式为HTTP请求时,您可以通过在HTTP头部增加鉴权参数,供回调消息接收服务端进行签名认证,防止非法或无效请求。通过阅读本文,您可以了解鉴权参数、签名计算、接收端校验规则和切换鉴权密钥的详情。
使用说明
您可以自行决定是否开启回调鉴权(建议开启),开启或关闭回调鉴权不会影响原有功能。如果开启回调鉴权,回调时会携带所有鉴权相关内容供消息接收服务端进行鉴权使用,这样可以有效过滤非法请求,增强系统安全性。
鉴权参数
在进行HTTP请求回调时,HTTP头部增加以下鉴权参数:
参数 | 描述 |
X-ICE-TIMESTAMP | HTTP请求发起时间,用UNIX时间戳表示。 |
X-ICE-SIGNATURE | 签名字符串,用32位MD5值表示,算法请参见下文。 |
计算签名字符串
计算X-ICE-SIGNATURE时,需要依赖以下字段:
字段 | 描述 | 示例 |
回调URL | HTTP请求回调地址。 | https://www.example.com/your/callback |
X-ICE-TIMESTAMP | HTTP请求发起时间,使用UNIX时间戳表示。 | 1519375990 |
鉴权密钥 | 用户预设的签名Key,最长32位,必须同时包含大小写字母和数字。 | Test123 |
将上述三个字段以竖线(|)拼接,再计算MD5值:
MD5Content = 回调URL|X-ICE-TIMESTAMP|鉴权密钥
X-ICE-SIGNATURE = md5sum(MD5Content)
X-ICE-SIGNATURE计算示例如下:
X-ICE-SIGNATURE = md5sum(https://www.example.com/your/callback|1519375990|Test123) = c72b60894140fa98920f1279219b****
回调消息接收端校验规则
回调消息接收端将设置的回调URL、X-ICE-TIMESTAMP和鉴权密钥字符串进行拼接,然后进行MD5值计算并得到加密串,再将加密串与X-ICE-SIGNATURE字段进行对比,如果不一致,则表示非法请求。
回调消息接收端获取当前时间,与回调请求所带的X-ICE-TIMESTAMP字段时间相减,如果值超过服务端所设定的指定时间(例如5分钟,由服务端自定义),则表示该请求无效。
切换鉴权密钥
如果您需要切换鉴权密钥,为了保证回调功能不受影响,消息接收服务端需要在一段时间内兼容新旧鉴权密钥进行平滑切换,此操作由服务方完成。建议操作顺序如下:
定义新鉴权密钥。
升级回调消息接收服务端,从而兼容新旧鉴权密钥的鉴权。
在控制台回调鉴权区域更新鉴权密钥。
观察一段时间后,回调消息接收服务端删除对原来旧鉴权密钥的兼容,完成切换。