閱讀752 返回首頁    go 魔獸


消息通知功能公測說明__操作指南_產品使用問題_媒體轉碼-阿裏雲


,媒體轉碼服務集成的消息服務-通知功能已正式商業化。提供轉碼作業及模版分析作業結束的消息通知已切換至相同服務區域消息服務提供的通知功能上。, 

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__操作指南_產品使用問題_媒體轉碼-阿裏雲