阅读752 返回首页    go iPhone_iPad_Mac_手机_平板_苹果apple


消息通知功能公测说明__操作指南_产品使用问题_媒体转码-阿里云


,媒体转码服务集成的消息服务-通知功能已正式商业化。提供转码作业及模版分析作业结束的消息通知已切换至相同服务区域消息服务提供的通知功能上。, 

Update:

,华东1区的通知功能已迁移至消息服务-通知(华东1)区。

 

,,一、启用媒体转码消息通知功能步

,

  • 1. 激活媒体转码消息通知功能

    ,,媒体转码通过 MNS实现转码作业及模版分析作业结束时的消息通知功能,因此激活此功能请先开通MNS服务。您可以访问媒体转码,控制台 - ,云资源授权管理 - MNS,按照向导开通MNS服务及完成相关授权。

  • ,,2. 创建 MNS 通知主题

    ,,,请访问 ,MNS,控制台(选择与媒体转码服务同区域) -发布订阅 - 创建主题 以创建消息主题;然后在主题的订阅详情中设定订阅消息的HTTP地址;

    ,,,详细指导见: 消息服务-控制台使用帮助-主题使用帮助

    ,订阅消息的HTTP地址

    ,HTTP地址仅指定域名或IP地址(可设定自定义Web服务端口),实际消息推送至 Web服务的 ,/notifications 。

    ,取消,接收消息的HTTP地址强制为 “,Web服务的 ,/notifications路径”的限制,,支持用户自行设定接收消息的Web服务的路径;

  • ,,3. 在转码管道上绑定消息主题

    ,,请访问媒体转码,控制台 - 资源,管理  - 管道 ,在管道上关联消息通知主题。

    ,,二、消息通知功能接收消息服务搭建

    ,,MNS通过发送POST请求将消息推送到指定接收消息的HTTP地址。

    ,,1. 消息推送请求格式

    ,,Request的构造主要由以下几个部分组成:

    ,,· 请求行

    ,,POST /notifications HTTP/1.1

    ,,· URI参数

    ,,无

    ,,· Request Header

    ,,参数名称

    ,,说明

    ,,备注

    ,,,Authorization

    ,,验证字符串,可由此判断跟请求是否是由MNS发出

     

    ,,,Content-Length

    ,,HTTP消息体的长度

     

    ,,Content-Type

    ,,请求内容的MIME类型,目前请求仅支持text/xml;charset=utf-8格式

     

    ,,,Content-MD5

    ,,HTTP消息体的MD5值

     

    ,,,Date

    ,,请求的构造时间,目前只支持GMT格式,如果和MNS的服务器时间前后差异超过15分钟将返回本次请求非法。

     

    ,,,Host

    ,,接受消息的Http服务端的域名

    ,,HTTP/1.1

    ,,x-mns-request-id

    ,,此次推送的Request编号

     

    ,,x-mns-version

    ,,调用MNS接口的版本号,当前版本为“2015-06-06”

     

    ,,x-mns-signing-cert-url

    ,签名证书的地址(Base64编码过)

    ,签名证书的地址Request Body 中的,SigningCertURL字段在2016年6月30日后将不再提供。

    ,,· Request Body

    ,,Request Body为XML格式,包括创建消息正文和属性。

    ,,参数名称

    ,,说明

    ,,TopicOwner

    ,,被订阅主题的拥有者

    ,,TopicName

    ,,被订阅主题的名字

    ,,Subscriber

    ,,订阅者

    ,,SubscriptionName

    ,,订阅名称

    ,,MessageId

    ,,消息编号

    ,,Message

    ,,消息正文

    ,,MessageMD5

    ,,消息的MD5

    ,,MessagePublishTime

    ,,消息发布的时间

    ,,,SigningCertURL

    ,,,签名证书的地址,2016年6月30日后将仅在Request Header中通过,x-mns-signing-cert-url,提供。

    ,,· Response

    ,,返回消息由返回状态行,HTTP头和消息体三部分组成

    ,,· HTTP Status Code

    ,,,HTTP/1.1 204 NoContent

    ,,若确认成功,返回204。

    ,,若请求签名认证不过,返回403。

    ,,若任何其他错误,返回500。

    ,,· Response Header

    ,, 无

    ,,· Response Body

    ,, 无

    ,,· Special Error:

    ,,无

    ,,请求示例:

    ,,POST /notifications HTTP/1.1

    ,,Host: example.com

    ,,Date: Wed, 08 Mar 2012 12:00:00 GMT

    ,,Content-Length: 300

    ,,Content-Type: text/xml;charset=utf-8

    ,,Content-MD5: YjJjYzgxYzkxODU4NDI0ODJiYTVlNjQ4MmM0MjZiYjY=

    ,,Authorization:MNS 44CF9590006BF252F707:jZNOcbfWmD/A/f3hSvVzXZjM2HU=

    ,,User-Agent: Aliyun Notification Service Agent

    ,,x-mns-request-id:512B2A634403E52B1956133K

    ,,x-mns-version:2015-06-06

    ,, , 

    ,,$TopicOwner

    ,,$TopicName

    ,,$Subscriber

    ,,$SubscriptionName

    ,,$MessageId

    ,,$Message

    ,,$MessageMD5

    ,,$MessagePublishTime

    ,,https://ns.aliyun-inc.com/NS-f3ecfb7296de52f.pem

    ,,媒体转码消息通知消息体-Message 结构说明:

    ,参数名称

    ,说明

    jobId

    作业ID

    type

    ,作业类型,值为Transcode、Analysis、Snapshot

    state

    作业状态,值为Success、Fail

    ,,消息示例:

    ,,,POST /notifications HTTP/1.1

    ,,Authorization: dOcgxcXsDU3m6SUHCW/5Ft4yRbzVjrMbhbcQiHeXIg5iLRnI//YhPVvzUY3wTnXikafxnn+UrEC+/vX0FwKnLg==

    ,,Content-Length: 643

    ,,Content-md5: NjJhMzY0MGM2Y2YxY2RkOTdhZDdlMjUwMjc4MzBiOTY=

    ,,Content-Type: text/xml;charset=utf-8

    ,,Date: Tue, 22 Sep 2015 03:25:32 GMT

    ,,Host: internal.mns.cn-hangzhou.aliyuncs.com:8068

    ,,User-Agent: Aliyun Notification Service Agent

    ,,x-mns-request-id: 5600CA2B3728290806000010

    ,,x-mns-version: 2015-06-06

     

    ,, 

    ,,  40000

    ,,  ,,mts-test

    ,,  ,,44404

    ,,  ,,mts-user-notify

    ,,  ,,52DD3925C2AA589F-1-14FF315BB69-200000003

    ,,  ,,928EC0A38F2D6BAA0767C0917C1C1C89

    ,,{“jobId”:”8a8753a54e6a4a0f9128ccecbefe9948”,”state”:”Success”,”type”:”Transcode”}

    ,,  ,,1442892331881

    ,,https://mnstest.oss-cn-hangzhou.aliyuncs.com/x509_public_certificate.pem

    ,,返回头示例:

    ,,HTTP/1.1 204 NoContent

    ,,2. 接收消息服务端对消息推送请求的签名认证

    ,H,,TTP,,的消息接收地址,用户可以通过SigningCerURL获取签名证书(推送消息的请求中都会携带),并根据相应的方法来验证该请求是否由MNS系统发出,防止恶意请求对用户造成负面影响。

    ,, SigningCerURL:描述了用户提取验证请求是否来自MNS的签名证书的地址。

    ,,HTTP的消息接收地址对应的HTTP Server对请求的合法性进行验证的方法如下:在请求的Header中,Authorization字段的值是MNS根据待签名字符串,用SHA1-RSA签名算法生成签名。用户可以使用公钥对签名进行验证。具体的验证方法为:

    ,,第一步:

    ,,· 获取X509证书

    ,,在MNS发送给消息接收地址对应的HTTP Server的XML格式的Request Body中,SigningCertURL指定了签名证书的地址。用户需要获取该签名文件,从中提取出签名的公钥。

    ,,第二步:

    ,,· 计算待签名字符串:

    ,,VERB + “n”

    ,,             + CONTENT-MD5 + “n”

    ,,             + CONTENT-TYPE + “n”

    ,,             + DATE + “n”

    ,,             + CanonicalizedMNSHeaders

    ,,             + CanonicalizedResource

    ,· VERB,表示HTTP的Method

    ,· Content-Md5,表示请求内容数据的MD5值

    ,· CONTENT-TYPE,表示请求内容的类型

    ,· DATE,表示此次操作的时间,不能为空,目前只支持GMT格式,如果请求时间和MNS服务器时间相差超过15分钟,MNS会判定此请求不合法,返回400。

    ,· CanonicalizedMNSHeaders,表示 http中的x-mns-开始的字段组合

    ,· CanonicalizedResource,表示http请求的相对地址,不能为空

    ,· ,采用SHA1算法对待签名字符串进行哈希。请按照RFC3447中的SHA1算法对待签名字符串做哈希运算。

    ,第三步:

    ,· ,对Authorization签名字段Base64解码。Authorization签名字段采用Base64编码方式进行编码,在对比签名前,需要对其进行Base64解码。

    ,· ,用公钥对Authorization签名进行解码。Authorization签名经过Base64 Decode后,再用从X509证书中提取的公钥对其进行解密。

    ,第四步:

    ,· ,比较第二、三两步的结果是否一致。如果一致,则表明请求来自  MNS,访问合法。

    ,其他:

    ,1.      ,用来签名的字符串为utf-8格式。

    ,2.      ,签名的方法用 RFC 3447 中定义的 sha1WithRSAEncryption, 方法。

    ,3.      base64,是指使用base64算法转码文本。

    附:

    ,HTTP,的消息接收服务 Java 实现示例

  • 最后更新:2016-10-10 15:59:16

      上一篇:go 通过OSS控制台概览了解Bucket相关属性__数据操作常见问题_产品使用问题_对象存储 OSS-阿里云
      下一篇:go 媒体转码 Demo Project__操作指南_产品使用问题_媒体转码-阿里云