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服务器。
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的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did97374