好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

amazons3的用户验证access

amazon s3的用户验证方式是一种对称加密方式,下面介绍此加密方式。 请求的构造 请求元素: AWS Access Key Id:其实就是常见的用户名,用来区分用户的。 Signature:签名,使用私钥计算后得出。 Timestamp:时间戳 Date:时间,为每一个请求设置一个过期时间

amazon s3的用户验证方式是一种对称加密方式,下面介绍此加密方式。

请求的构造   请求元素:   AWS Access Key Id:其实就是常见的用户名,用来区分用户的。   Signature:签名,使用私钥计算后得出。   Timestamp:时间戳   Date:时间,为每一个请求设置一个过期时间。

验证过程   客户端:经过下面3个步骤

1 构建http请求。
2 使用请求内容(request_str) 和 secret-key计算签名(signature)。
3 发送请求到aws服务器。

  aws服务器:经过下面三个步骤

4 Amazon S3 根据发送的access-key得到对应的secret-key。
5 Amazon S3 使用同样的算法将请求内容(request_str) 和 secret-key一起计算签名(signature)!和步骤2一样。
6 对比用户发送的签名和Amazon S3计算的签名,判断是否合法。

签名的构造过程

Authorization =  "  AWS  "  +  "   "  + AWSAccessKeyId +  "  :  "  +  Signature;
Signature  = Base64( HMAC-SHA1( UTF-8-Encoding- Of( YourSecretAccessKeyID,
StringToSign ) ) );
StringToSign  = HTTP-Verb +  "  \n  "  + 
 Content -MD5 +  "  \n  "  + 
 Content -Type +  "  \n  "  + 
 Date  +  "  \n  "  + 
 CanonicalizedAmzHeaders  + 
 CanonicalizedResource;
CanonicalizedResource  = [  "  /  "  + Bucket ] +
  from  the protocol name up to the query string> + 
 [ sub -resource,  if  present. For example  "  ?acl  " ,  "  ?location  " ,  "  ?logging  " ,  or 
 "  ?torrent  "  ];
CanonicalizedAmzHeaders  =   

  

Example 客户端

假设:

AWSAccessKeyId: AKIAIOSFODNN7EXAMPLE
AWSSecretAccessKey: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

假设我们需要发送下面这样的请求:

DELETE /puppy.jpg HTTP/1.1 
User-Agent: dotnet
Host: mybucket .s3.amazonaws. com
  Date : Tue, 15 Jan 2008 21:20:27 +0000 
x-amz-  date : Tue, 15 Jan 2008 21:20:27 +0000 
Authorization: AWS AKIAIOSFODNN7EXAMPLE  :k3nL7gH3 +PadhTEVn5EXAMPLE 

1. 构建除Authorization之外的其他字段。

DELETE /puppy.jpg HTTP/1.1 
User-Agent: dotnet
Host: mybucket .s3.amazonaws. com
  Date : Tue, 15 Jan 2008 21:20:27 +0000 
x-amz-  date : Tue, 15 Jan 2008 21:20:27 +0000 

2. 提取request_str:

服务端

查看更多关于amazons3的用户验证access的详细内容...

  阅读:47次