回调鉴权

当回调方式为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分钟,由服务端自定义),则表示该请求无效。

切换鉴权密钥

如果您需要切换鉴权密钥,为了保证回调功能不受影响,消息接收服务端需要在一段时间内兼容新旧鉴权密钥进行平滑切换,此操作由服务方完成。建议操作顺序如下:

  1. 定义新鉴权密钥。

  2. 升级回调消息接收服务端,从而兼容新旧鉴权密钥的鉴权。

  3. 控制台回调鉴权区域更新鉴权密钥

  4. 观察一段时间后,回调消息接收服务端删除对原来旧鉴权密钥的兼容,完成切换。