BatchCompute 通过使用 Access Key ID/ Access Key Secret 方法来验证某个请求的发送者身份。Access Key ID 用于标示用户,Access Key Secret 是用户用于加密签名字符串和 BatchCompute 用来验证签名字符串的密钥,其中 Access Key Secret 必须保密,只有用户和 BatchCompute 知道。
当用户想以个人身份向 BatchCompute 发送请求时,需要首先将发送的请求按照 BatchCompute 指定的格式生成签名字符串;然后使用 Access Key Secret 对签名字符串进行加密产生验证码。 BatchCompute 收到请求以后,会通过 Access Key ID 找到对应的 Access Key Secret,以同样的方法提取签名字符串和验证码,如果计算出来的验证码和提供的一样即认为该请求是有效的;否则,BatchCompute 将拒绝处理这次请求,并返回 HTTP 400 错误。
用户可以在 HTTP 请求中增加 Authorization(授权)的 Head 来包含签名(Signature)信息,表明这个消息已被授权。
Authorization 字段计算方法如下:
Authorization: "acs " + Access Key Id + ":" + Signature
Signature = base64(hmac-sha1(AccessKeySecret,
+ VERB + "\n"
+ ACCEPT + "\n"
+ CONTENT-MD5 + "\n"
+ CONTENT-TYPE + "\n"
+ DATE + "\n"
+ CanonicalizedBatchComputeHeaders
+ CanonicalizedResource))
其中,CanonicalizedBatchComputeHeaders 表示 http 中的 object meta 组合。CanonicalizedResource 表示 API 想要访问的 BatchCompute 资源。DATE 和 CanonicalizedResource 不能为空。如果请求中的 DATE 时间和 BatchCompute 服务器的时间差正负 15 分钟以上,BatchCompute 服务器将拒绝该服务,并返回 HTTP 400 错误。其他字段请参考公共请求头参数。
构建 CanonicalizedBatchComputeHeaders 的方法:
所有以“x-acs-”为前缀的 HTTP Header 被称为 CanonicalizedBatchComputeHeaders,它的构建方法如下:
构建CanonicalizedResource的方法:
用户发送请求中想访问的 BatchCompute 目标资源被称为 CanonicalizedResource。它的构建方法如下:
例如,需要签名以下信息:
PUT /jobs/job-000000005645B53B0000AEA300000001 HTTP/1.0
Content-Md5: 900150983cd24fb0d6963f7d28e17f72
Content-Type: application/json
Date: Thu, 17 Nov 2005 18:49:58 GMT
Host: batchcompute.cn-qingdao.aliyuncs.com
x-acs-signature-method: HMAC-SHA1
x-acs-signature-version: 1.0
其中,Access Key ID 是:“44CF9590006BF252F707”, Access Key Secret 是“OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV”,可用以下方法签名(Signature):
python示例代码:
import base64
import hmac
import sha
h = hmac.new("OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV",
"PUT\n900150983cd24fb0d6963f7d28e17f72\napplication/json\nThu, 17 Nov 2005 18:49:58 GMT\nx-acs-signature-method:HMAC-SHA1\nx-acs-signature-version:1.0\n/jobs/job-000000005645B53B0000AEA300000001", sha)
base64.encodestring(h.digest()).strip()
签名(Signature)计算结果应该为“26NBxoKdsyly4EDv6inkoDft/yA=”, 然后加上 Authorization 头来组成最后需要发送的消息:
PUT /jobs/job-000000005645B53B0000AEA300000001 HTTP/1.0
Authorization: acs 44CF9590006BF252F707: 26NBxoKdsyly4EDv6inkoDft/yA=
Content-Md5: 900150983cd24fb0d6963f7d28e17f72
Content-Type: application/json
Date: Thu, 17 Nov 2005 18:49:58 GMT
Host: batchcompute.cn-qingdao.aliyuncs.com
x-acs-signature-method: HMAC-SHA1
x-acs-signature-version: 1.0
在计算签名头的时候请遵循如下规则:
备注:BatchCompute 所有的请求都必须使用 HTTP 1.1 协议规定的 GMT 时间格式 。其中,日期的格式有三种:
date1 = 2DIGIT SP month SP 4DIGIT; day month year (e.g., 02 Jun 1982) |
date2 = 2DIGIT “-“ month “-“ 2DIGIT; day-month-year (e.g., 02-Jun-82) |
date3 = month SP ( 2DIGIT or ( SP 1DIGIT )); month day (e.g., Jun 2) 【注意“2”前面有两个空格】 |
述这三种日期格式中,“天”所占位数都是“2 DIGIT”。因此,“Jun 2”、“2 Jun 1982”和“2-Jun-82”都是非法日期格式。
实例健康诊断功能是一种自助诊断方式,您可以随时对实例的系统状态、网络状态、...
? 2021 年 6 月 26 日, 由阿里云、VMware、Intel 联合主办的 “Edge X Kubernet...
如今的数据具有多种多样的形式,而且来自许多不同的数据源。更为重要的是,除非...
批量计算服务本身完全 免费 。 批量计算调度作业过程中会根据用户配置创建 CVM ...
作者:jingjunli,腾讯 IEG 后台开发工程师 Redis 作为高性能缓存被广泛应用到各...
10月19日,“2020工业互联网高峰论坛暨工业互联网标识解析二级节点(黑龙江)上...
根据最新发布的《IDC全球大数据支出指南》(Worldwide Big Data and Analytics Sp...
1.掐指一算,如果不出意外的话,今年我又要过光棍节了。 2.学长,你帮我看看这...
一、Spark 介绍及生态 Spark是UC Berkeley AMP Lab开源的通用分布式并行计算框架...
在经济大发展的今天,各种产品市场竞争达到了前所未有的白热化程度,各个销售商...