我想設置一個Amazon S3帳戶,創建一個存儲桶,上傳一些數據,並且該數據將使用HTTP GET ,且基本身份驗證。Amazon S3是否支持帶有基本身份驗證的HTTP請求
我知道有幾種方法獲得S3數據認證(查詢字符串等),但我希望能夠提供一個簡單的用戶名/密碼方案進行身份驗證。
這可能嗎?
我想設置一個Amazon S3帳戶,創建一個存儲桶,上傳一些數據,並且該數據將使用HTTP GET ,且基本身份驗證。Amazon S3是否支持帶有基本身份驗證的HTTP請求
我知道有幾種方法獲得S3數據認證(查詢字符串等),但我希望能夠提供一個簡單的用戶名/密碼方案進行身份驗證。
這可能嗎?
不,這是不可能的。 您必須符合Amazons Authentication API
查看一些列出的包裝here。
我不認爲那篇文章聲稱你可以使用S3的基本身份驗證。 – 2011-02-04 16:47:59
參見http://aws.amazon.com/s3/faqs/#How_can_I_control_access_to_my_data_stored_on_Amazon_S3 – 2011-02-04 16:49:00
我來自AdroitLogic。關於鏈接的文章,它展示了UltraESB如何放置在您的客戶端和Amazon S3之間以驗證您的請求。如果需要,它可以創建一個「代理」服務,它將接受客戶端的基本身份驗證,並按照Amazon S3的要求發送憑證。這可以以微不足道的方式完成,並且會隱藏客戶的任何複雜性。
你可以自己開發它作爲一個Web應用程序或現有應用程序的一部分。它將使用HTTP請求,檢索其URI組件,將其轉換爲S3對象名稱並使用getObject()獲取其內容(使用可用的S3 SDK之一,例如AWS Java SDK)。
否則,您可以嘗試託管解決方案 - s3auth.com(我是開發人員)。這是一個開源項目,你可以看到這個機制是如何在one of its core classes的內部實現的。 HTTP請求由服務處理,然後重新轉換到Amazon S3內部認證方案:
http://s3auth:[email protected]/texry/packages.png
此體系結構圖說明如何項目實施。 PNG圖片從亞馬遜S3存儲桶maven.s3auth.com
加載,這是不可匿名讀取的。這一形象的完整URL是
http://s3auth:[email protected]/texry/packages.png
檢查也這篇文章:Basic HTTP Auth for S3 Buckets
這正是我一直在尋找!說明最近已被澄清,並且設置起來非常簡單。 – 2012-10-11 19:57:16
要澄清你的答案的最後一點,一個資源的標準URL將是'http:// maven.s3auth.com/texry/packages.png',但是一旦它被認證,它就變成'http:// s3auth:s3auth @ maven.s3auth.com/texry/packages.png',對嗎? – 2012-12-05 10:34:16
什麼是「標準網址」? :)可以下載文檔的URL是'http:// s3auth:s3auth @ maven.s3auth.com/texry/packages.png',它包含我嘗試在我的賬戶中實現的驗證信息 – yegor256 2012-12-05 11:28:32
通過分層多AWS服務,您可以實現一些接近基本HTTP授權。
你現在應該有這隻能使用正確的用戶名和密碼訪問的靜態站點。
注:使用此設置的請求被阻止了403禁止代替401未授權你將不會被提示輸入您的憑據。
注意:您可以直接在s3存儲桶前創建CloudFront分配,但不能默認爲子文件夾中的根索引文件。
流式傳輸向請求添加標題的建議? Chrome插件還是一些這樣的? – 2017-03-06 07:57:35
現在可以使用CloudFront和Lambda @ Edge(自2017年7月以來一直在us-east-1地區提供)。
這裏的lambda函數: https://gist.github.com/lmakarov/e5984ec16a76548ff2b278c06027f1a4
簡短的回答是否定的,不使用基本身份驗證。但是,這是一種與基本身份驗證完全相同的方式,而且比其他列出的解決方案更容易。我相信這是安全的,但我不確定。
您可以在符合請求標題的s3存儲桶上設置條件。作爲一個例子,您可以使用useragent
和referer
標頭作爲與基本身份驗證中的用戶名和密碼等效的內容。通常情況下,用戶代理是瀏覽器,OS(如Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0)
,以及引薦是先前網頁。
下面是一個例子S3存儲策略,允許通過用戶代理匹配將對象,並獲取對象和referer(注意變化:BUCKETNAME
,USERNAME
,PASSWORD
,AWS_REGION
和FILENAME
到您的詳細信息):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "allow-username-and-password-access",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::BUCKETNAME/*",
"Condition": {
"StringEquals": {
"aws:UserAgent": "USERNAME",
"aws:Referer": "PASSWORD"
}
}
}
]
}
爲了把資源桶中,你可以使用這樣的捲曲請求(注變化:BUCKETNAME
,USERNAME
,PASSWORD
,AWS_REGION
,和FILENAME
):
curl --user-agent USERNAME --referer PASSWORD --upload-file "FILENAME" --request PUT "https://s3-AWS_REGION.amazonaws.com/BUCKETNAME/FILENAME"
要獲得使用資源,你可以使用這樣的事情:再次
curl --user-agent USERNAME --referer PASSWORD "https://s3-AWS_REGION.amazonaws.com/BUCKETNAME/FILENAME" > FILENAME
,我相信這是安全的,因爲用戶代理,如果你是引用者應該加密使用https,但請告訴我,如果它不是。
非常好。這正是我一直在尋找的!我同意它是安全的。 – sudheerchamarthi 2018-03-05 05:04:06
我自己試圖找到解決這個問題的方法。 This這裏的帖子已經列出了他們全部。引用行:
我一直在尋找解決方案的基礎HTTP身份驗證添加到亞馬遜的S3桶的數月。有些選項涉及預先簽名的URL(僅限單個對象),使用第三方免費或商業服務(隱私問題),啓動EC2/Heroku /等。用中間件來代理請求(複雜而不是無服務器),使用page redirects and bucket policies(不安全)。
桶政策的解決方案: 我親自嘗試這樣做,它似乎完全安全的,我(除非你有辦法繞過AWS桶政策)。它只需要s3桶來操作。簡單實施。基本思想:
使用AWS LAMBDA @邊緣:這種解決方案需要S3,AWS Lambda和AWS CloudFront的操作。基本構思:
鏈接到Lambda解決方案:http://johnpreston.ews-network.net/posts/s3-and-cloudfront-basic-auth-hack – rahuljain1311 2017-10-03 10:08:41
看看這個有點相關的問題my answer here。
的問題有得到沒有必要重S3登錄認證水桶對象列表。所以,從你的問題,我的回答並沒有真正解釋你的Http-request with basic username/password authentication
查詢 - 而是給人一種可能性,使鬥私,仍然獲取其數據的瞭解和identity-pool (ID)
一個Amazon Resource Name (ARN)
(你可以考慮類似的用戶名和密碼)。當然,要獲得(ID)和(ARN),您必須執行一些設置 - 在AWS主頁as described in my 17-step answer here...中工作 - 此外,它不是GET請求的一部分,而是在Amazon提供的AWSS3框架內提供的。我希望,它仍然給您更多的選擇,你的問題;)
您可以使用[s3auth.com(http://www.s3auth.com),這是你需要什麼 – yegor256 2012-08-26 14:18:00
一個免費的託管解決方案[s3auth ](http://www.s3auth.com/)絕對是解決方案。 – 2017-04-21 13:45:21