请求签名

确保用户日记标明的保证,Log Service API 的占有 HTTP 占有乞讨不得早已过无损的批准。。眼前,本Ali云的保证批准 逗留电键,应用对称美编码算法。

任务流出如次:

  1. 乞讨完毕 API 乞讨灵(包罗 HTTP Header 和 体)建造签名字母行。
  2. 乞讨端应用阿列伊云的逗留电键对(AccessKeyID 和 AccessKeySecret)对第一步建造的签名字母行停止签名,长即将到来的 API 乞讨数位签名。
  3. 乞讨完毕 API 乞讨灵和数位签名被发送到服务器。。
  4. 在收到乞讨后,发球者将如上反复。、二步任务(留意:服务器会在配乐取来该乞讨应用的用户逗留电键对)并在服务器相识的人某人的本质该乞讨前程的数位签名。
  5. 发球者应用盘算的数位签名和数位签名SEN。,免得有丰富的的同意,则经过保证批准乞讨。。另外,乞讨被直的回绝。。

上面的整个地流出也可以应用下图直观的叙述:

图 1. 无损的批准工序

上面的无损的批准工序可以达成如次实体的:

  • 鸣谢用户在做什么 API 乞讨。因用户理由仔细的阐明电键来建造数位签名。,用户生产能力可以经过发球者SID上的电键对来决定。,后来地可以做大国实行。
  • 在NE工序中鸣谢用户乞讨能否被不称职地代表。因发球者将重行计算收执到的RE上的数位签名。,一旦乞讨的灵被体系不称职地代表,没数位签名的比较地。

为了经过 API 乞讨无损的批准,用户理由在客户端 API 乞讨被签名(换句话说,建造一直的数位签名),应用 HTTP 头 Authorization 在体系上传动装置该乞讨数位签名。Authorization 头部的仔细的体式如次:

归因于:日记 :

如前述的体式所示,Authorization 头的值包住用户逗留电键对做成某事 AccessKeyId,并与之绝对应 AccessKeySecret 将被应用 Signature 面值建造物。上面将仔细的解说办法建造物即将到来的 Signature 值。

第一步:预备形成的阿列伊云逗留电键

如上所述,给 API 乞讨建造签名,需应用一对逗留电键(AccessKeyId/AccessKeySecret)。您可以应用早已在的逗留电键对,也可以准备新的逗留电键对,即使,不得已确保所应用的电键对在。

第二的步:建造乞讨的签名字母行

Log Service API 签名字母行是由 HTTP 到处到处乞讨中 Method,Header 和 Body 数据建造被拖,仔细的办法如次:

SignString = VERB + "\n"
             + CONTENT-MD5 + "\n"
             + CONTENT-TYPE + "\n"
             + DATE + "\n"
             + CanonicalizedLOGHeaders + "\n"
             + CanonicalizedResource

在前述的表示中 \n 快线出奔使具有特征,+( )是每一字母行衔接开刀,宁静党派清晰度如次。

表 1. 签名字母行清晰度
确定 清晰度 示例
VERB HTTP 乞讨的办法的确定 PUT、GET、POST 等
CONTENT-MD5 HTTP 到处在乞讨中 Body 党派的 MD5 值(不得已是每一字母行) 875264590688CA6171F6228AF5BBB3D2
CONTENT-TYPE HTTP 到处在乞讨中 Body 党派的典型 application/x-protobuf
DATE HTTP 到处到处乞讨中规范工夫戳头(遵照 RFC 1123 体式,应用 GMT 规范工夫) Mon, 3 Jan 2010 08:33:47 GMT
CanonicalizedLOGHeaders 由 HTTP 到处到处乞讨中 x-logx-acs 为前缀的自清晰度头部建造物的字母行(逮捕建造物) x-log-apiversion:\nx-log-bodyrawsize:50\nx-log-signaturemethod:hmac-sha1
CanonicalizedResource 由 HTTP 乞讨资源使安定的字母行(逮捕上面的建造物论文) /logstores/app_log

为了没 Body 的 HTTP 乞讨,其 CONTENT-MD5 和 CONTENT-TYPE 两个域是空字母行,建造整个地签名字母行的版式如次:

SignString = VERB + "\n"
             + "\n"
             + "\n"
             + DATE + "\n"
             + CanonicalizedLOGHeaders + "\n"
             + CanonicalizedResource

不下于 公共乞讨头 中级的叙述,Log Service API 将自清晰度乞讨标头引入到站的。 x-log-date。免得您到处到处乞讨中仔细的阐明了该乞讨头,后来地它的面值将被代替。 HTTP 规范乞讨姓名牌 Date 添加签名计算。

CanonicalizedLOGHeaders 破土办法如次:

  1. 每个城市 x-logx-acs 为前缀的 HTTP 乞讨头的确定被替换为小写字母字母。。
  2. 末版一步会说服的 LOG 着陆字典O,自清晰度乞讨头按升序排序。。
  3. 截师符的两端暗中的乞讨标头。
  4. 应用占有头部和灵 \n 分离装置分解终极的。 CanonicalizedLOGHeader。

CanonicalizedResource 破土办法如次:

  1. 将 CanonicalizedResource 设置为空字母行。
  2. 进入逗留 LOG 资源,如 /logstores/logstorename(无 logstorename 不要填写它)。
  3. 免得乞讨包住查询字母行QUERY_STRING),则在 CanonicalizedResource 字母行尾加 ? 查询字母行。

到站的,QUERY_STRING 是 URL 索取按字典按次排序参量的字母行。,到站的应用参量名和值 = 分区分解字母行,参量名-值对以词典按次升序。,后来地, & 记分衔接使安定字母行。。其表示叙述如次:

QUERY_STRING = "KEY1=VALUE1" + "&" + "KEY2=VALUE2"

第三步:建造乞讨数位签名

眼前,Log Service API 只后退数位签名算法,由于不到庭而败诉签名算法 hmac-sha1。其丰富的的签名表示如次:

Signature = base64(hmac-sha1(UTF8-Encoding-Of(SignString),AccessKeySecret))

应用签名办法 RFC 2104 清晰度在 HMAC-SHA1 办法。如前述的表示用过的 AccessKeySecret 理由与终极 Authorization 用于头部 AccessKeyId 绝对应。另外,乞讨不熟练的经过服务器批准。。

计算数位签名后,应用此值,如本条文上弦所述 Authorization 头部体式已最后阶段 Log Service API 乞讨无损的批准头,并填写 HTTP 到处您可以到处乞讨中发送。

乞讨签名工序示例

为较好的地逮捕整个地乞讨签名的流出,朕用两个样板来阐明整个地工序。。率先,想象你如此的做 Log Service API 签名的逗留电键对如次:

AccessKeyId = "bq2sjzesjmo86kq*********"
AccessKeySecret = "4fdO2fTDDnZPU/L7CHNd********"

示例一:

您理由发送以下灵 GET 乞讨列表 ali-test-project 整个论文下 Logstores,其 HTTP 乞讨如次:

GET /logstores HTTP 1.1
Mon, 09 Nov 2015 06:11:16 GMT
Host: ali-test-project.regionid.example.com
x-log-apiversion: 
x-log-signaturemethod: hmac-sha1

如上 Log Service API 乞讨建造的签名字母行是:

GET\n\n\nMon, 09 Nov 2015 06:11:16 GMT\nx-log-apiversion:\nx-log-signaturemethod:hmac-sha1\n/logstores?logstoreName=&offset=0&size=1000

由终于 GET 乞讨,即将到来的乞讨与什么有关。 HTTP Body,因而在建造的签名字母行中 CONTENT-TYPE 与 CONTENT-MD5 域为空字母行。免得后面仔细的阐明 AccessKeySecret 签名开刀后到达的签名是:

jEYOTCJs2e88o+y5F4/S5IsnBJQ=

末版,发送数位签名。 HTTP 乞讨的灵如次:

GET /logstores HTTP 1.1
Mon, 09 Nov 2015 06:11:16 GMT
Host: ali-test-project.regionid.example.com
x-log-apiversion: 
x-log-signaturemethod: hmac-sha1
Authorization: LOG bq2sjzesjmo86kq35behupbq:jEYOTCJs2e88o+y5F4/S5IsnBJQ=

例二:

你理由作出同一的样板 ali-test-project 该论文命名为 test-logstore 的 Logstore 调解以下日记:

topic=""
time=1447048976
source=""
"TestKey": "TestContent"

为了这个目的,依照 Log Service API 清晰度理由达到如次 HTTP 乞讨:

POST /logstores/test-logstore HTTP/1.1
Date: Mon, 09 Nov 2015 06:03:03 GMT
Host: test-project.regionid.example.com
x-log-apiversion: 
x-log-signaturemethod: hmac-sha1
Content-MD5: 1DD45FA4A70A9300CC9FE7305AF2C494
Content-Length: 52
x-log-apiversion:
x-log-bodyrawsize:50
x-log-compresstype:lz4
x-log-signaturemethod:hmac-sha1
<日记灵序列化成 ProtoBuffer 体式的字节流>

在即将到来的 HTTP 到处在乞讨中,率先记载全挂在脸上日记灵。 ProtoBuffer 体式(请参阅 ProtoBuffer体式 相识的人此体式的更多论文作为乞讨 Body。因而乞讨是 Content-Type 标头的值仔细的阐明为 application/x-protobuf。比拟,Content-MD5 头部的面值是乞讨 body 对应的 MD5 值。着陆在上的签名字母行建造物典范,与此乞讨绝对应的签名字母行是:

POST\n1DD45FA4A70A9300CC9FE7305AF2C494\napplication/x-protobuf\nMon, 09 Nov 2015 06:03:03 GMT\nx-log-apiversion:\nx-log-bodyrawsize:50\nx-log-compresstype:lz4\nx-log-signaturemethod:hmac-sha1\n/logstores/test-logstore

同一,在后面的样板中 AccessKeySecret 签名开刀,到达的终极签名是:

XWLGYHGg2F2hcfxWxMLiNkGki6g=

末版,发送数位签名。 HTTP 乞讨的灵如次:

POST /logstores/test-logstore HTTP/1.1
Date: Mon, 09 Nov 2015 06:03:03 GMT
Host: test-project.regionid.example.com
x-log-apiversion: 
x-log-signaturemethod: hmac-sha1
Content-MD5: 1DD45FA4A70A9300CC9FE7305AF2C494
Content-Length: 52
x-log-apiversion:
x-log-bodyrawsize:50
x-log-compresstype:lz4
x-log-signaturemethod:hmac-sha1
Authorization: LOG bq2sjzesjmo86kq35behupbq:XWLGYHGg2F2hcfxWxMLiNkGki6g=
<日记灵序列化成 ProtoBuffer 体式的字节流>

发表评论

电子邮件地址不会被公开。 必填项已用*标注