amazon s3的用戶驗證方式是一種對稱加密方式,下面介紹此加密方式。 請求的構(gòu)造 請求元素: AWS Access Key Id:其實就是常見的用戶名,用來區(qū)分用戶的。 Signature:簽名,使用私鑰計算后得出。 Timestamp:時間戳 Date:時間,為每一個請求設(shè)置一個過期時間
amazon s3的用戶驗證方式是一種對稱加密方式,下面介紹此加密方式。
1 構(gòu)建http請求。
2 使用請求內(nèi)容(request_str) 和 secret-key計算簽名(signature)。
3 發(fā)送請求到aws服務(wù)器。
4 Amazon S3 根據(jù)發(fā)送的access-key得到對應(yīng)的secret-key。
5 Amazon S3 使用同樣的算法將請求內(nèi)容(request_str) 和 secret-key一起計算簽名(signature)!和步驟2一樣。
6 對比用戶發(fā)送的簽名和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 ] ++ [ sub-resource, if present. For example "?acl", "?location", "?logging", or "?torrent"]; CanonicalizedAmzHeaders =
假設(shè):
AWSAccessKeyId: AKIAIOSFODNN7EXAMPLE
AWSSecretAccessKey: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
假設(shè)我們需要發(fā)送下面這樣的請求:
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. 構(gòu)建除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:
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com