本文为您介绍HTTP回调事件通知的回调机制、使用流程及鉴权原理。
HTTP回调机制
您需要自行部署一个HTTP服务来接收回调消息,并在点播中配置回调URL。
当事件产生时,点播服务端会向该URL发起HTTP POST请求,事件通知内容将通过HTTP Body送达。
您的HTTP服务对HTTP POST请求进行签名认证鉴权,鉴权成功则响应状态码200即视为回调成功,若响应其他状态码或响应超时则视为回调失败。鉴权原理请参见HTTP回调鉴权原理。
回调成功后,您配置的回调URL中将接收到相应的事件通知内容。回调失败后,点播服务会继续重试回调2次,即总共最多回调3次;超过3次后则会丢弃本次回调事件通知。详细的回调判断与重试逻辑请参见回调判断与重试。
如何使用
前提条件
您已部署用于接收回调消息的HTTP/HTTPS服务。
您已经注册了阿里云账号并完成账号实名认证。注册地址请参见阿里云官网。注册指引请参见注册阿里云账号。实名认证指引请参见个人实名认证或企业实名认证。
您已经开通了视频点播服务。开通步骤请参见开通视频点播服务。
使用说明
视频点播服务支持多个服务地域,各服务地域之间的事件通知配置是相互独立的,即每个地域可以单独配置事件通知的回调方式和回调地址。
HTTP方式回调支持多地址回调,可满足多环境的开发需求。详情请参见设置多地址回调。
使用流程
在视频点播服务中配置HTTP回调方式的事件通知。
说明通过点播控制台方式设置的回调为针对视频点播服务全局的回调配置;通过OpenAPI方式支持对视频点播服务进行全局配置回调或单次请求覆盖回调。
通过控制台设置HTTP回调
登录视频点播控制台。
在左侧导航栏选择配置管理 > 媒体处理配置 > 回调设置,进入到回调设置页面。
单击页面顶部工作台右侧的服务地域,切换到目标服务地域下。
配置回调设置。
单击回调设置旁的修改设置。
配置回调参数。
参数名称
参数说明
回调方式
选择HTTP请求。
回调URL
设置接收消息回调的URL,当产生回调事件时,点播服务端会向该URL发起HTTP POST请求。
URL长度不超过256字节,不支持设置多个URL。
回调事件
按需勾选相应类型的事件通知,视频点播支持的事件通知类型及各事件通知含义请参见事件列表。
说明勾选视频AI处理完成后,所有的AI事件,包括AIMediaAuditComplete、AIMediaDNAComplete、AIVideoTagComplete,无论哪个AI事件完成后都会触发通知。
单击确定,完成回调设置的配置。
可选:配置回调鉴权。
当回调方式为HTTP请求时,您可以通过在HTTP(含HTTPS)头部增加鉴权参数,供回调消息接收服务端进行签名认证,防止非法或无效请求。
打开回调鉴权开关,或单击回调鉴权右侧的修改设置。
设置鉴权密钥。
该鉴权密钥即为签名算法中的
AuthKey
字段,详情参见签名算法。该密钥由您自定义,最长32位,必须同时包含大写字母、小写字母和数字。单击确定,完成配置。
开启回调鉴权后,您部署的用于接收回调消息的HTTP/HTTPS服务端需自行配置相应的鉴权逻辑进行鉴权,具体请参见HTTP回调鉴权原理。
通过OpenAPI设置HTTP回调
通过调用不同的接口,支持对视频点播服务进行全局配置回调或单次请求覆盖回调。
全局配置:调用SetMessageCallback - 设置事件通知配置接口,请求参数
CallbackType
指定为HTTP
,并配置CallbackURL
(回调地址)、EventTypeList
(回调事件类型)等其他参数。单次请求覆盖:调用接口上传媒资文件或发起媒体处理任务时,通过指定请求参数
UserData
中的MessageCallback字段来设置单次请求的回调地址。涉及的API如下:
说明通过指定
UserData
中的MessageCallback
字段来设置回调时,必须先开启视频点播的全局事件通知,并配置相应的回调事件类型后,此处的回调配置才能生效。触发回调事件。
完成事件通知配置后,您可以在视频点播服务中执行上传媒资文件(音/视频或图片),发起媒体处理(转码、截图等)等操作来触发相应的回调事件产生。
接收回调事件。
当回调事件产生后,若回调成功,您可以在您部署的回调接收服务中查看回调事件通知。
HTTP回调鉴权原理
当回调方式为HTTP请求时,您可以通过在HTTP(含HTTPS)头部增加鉴权参数,供回调消息接收服务端进行签名认证,以防止非法或无效请求。
使用说明
HTTP回调鉴权是否开启由您自行决定(建议开启)。一旦设置了AuthKey(鉴权密钥),则回调时会携带所有鉴权相关内容,供回调消息接收服务端进行鉴权使用,即设置AuthKey不会影响原有功能,具体是否校验由您自行决定。
如果未设置AuthKey,HTTP回调功能也不会受任何影响。
鉴权参数
在回调HTTP头部增加的具体鉴权参数如下:
字段 | 描述 |
X-VOD-TIMESTAMP | UNIX时间戳,整型正数,固定长度10,1970年1月1日以来的秒数,表示回调请求发起时间。 |
X-VOD-SIGNATURE | 签名字符串,为32位MD5值,详细说明请参见下文签名算法。 |
签名算法
X-VOD-SIGNATURE的计算依赖如下字段:
字段 | 示例 | 描述 |
回调URL | https://www.example.com/your/callback | 用户设置的回调地址。 |
X-VOD-TIMESTAMP | 1519375990 | UNIX时间戳,整型正数,固定长度10,1970年1月1日以来的秒数,表示回调请求发起时间。 |
AuthKey | Test123 | 用户预设的鉴权密钥,最长32位,必须同时包含大写字母、小写字母和数字。 |
将上述三个字段进行拼接,字段中间以竖线(|)分割,后计算MD5值,即:
MD5Content = 回调URL|X-VOD-TIMESTAMP|AuthKey
X-VOD-SIGNATURE = md5sum(MD5Content)
X-VOD-SIGNATURE字段计算方法示例如下:
X-VOD-SIGNATURE = md5sum(https://www.example.com/your/callback|1519375990|Test123) = c72b60894140fa98920f1279219b****
回调消息接收服务端校验规则
回调消息接收端将回调所设置的回调URL、X-VOD-TIMESTAMP取值、AuthKey字符串拼接后,进行MD5值计算,得到加密串,再将加密串与X-VOD-SIGNATURE字段进行对比,如果不一致,则请求非法。
回调消息接收端获取当前时间,与回调请求所带的X-VOD-TIMESTAMP字段时间相减,如果超过回调消息接收服务端所设定的指定时间(如5分钟,由回调消息接收服务端自行定义),则认为该请求无效。
说明由于时间设置等问题,时间差值可能会有误差,回调消息接收服务端可自行决定是否进行该校验。
AuthKey切换
用户在切换AuthKey时,为保证回调功能不受影响,回调消息接收服务端需要兼容新旧两个AuthKey的平滑切换,即在一段时间内兼容新旧两个AuthKey的鉴权,由回调消息接收服务端完成。
建议操作顺序如下:
用户定义新的AuthKey。
用户升级回调消息接收服务端,兼容新、旧两个AuthKey的鉴权。
在点播控制台将AuthKey更新成最新。
观察一段时间后,回调消息接收服务端去掉对原来旧AuthKey的兼容。
切换完成。
相关文档
有关HTTP回调与MNS回调的对比,请参见HTTP回调与MNS回调对比。
使用过程中遇到问题时,请参见事件通知常见问题。