Amazon S3 istemci tarayıcı doğrudan dosya upload - özel anahtar açıklama
Amazon REST API üzerinden S3 için istemci makineden doğrudan dosya upload sadece JavaScript, sunucu tarafı kod olmadan kullanarak oluşturuyorum. Tüm iyi çalışır ama bir şey beni endişelendiriyor
Ben Amazon için bir istek göndermek S3 REST API isteği ve işareti Authentication
başlık içine bir imza koymak istiyorum. Bir imza oluşturmak için, gizli anahtarımı kullanmak zorundayım. Ama her şeyin bir istemci tarafında olur, gizli anahtarı, kolayca sayfa kaynağını ben kaynaklarımı şifrelemek/karartmak (bile) ortaya çıkarılabilir.
Bunu nasıl halledebilir miyim? Ve hiç de bir sorun mu var? Belki özel anahtar kullanımı yalnızca belirli bir İSTASYONDAN bir kaynaktan API çağrıları DİNLENMEK ve tek ve POST yöntemleri veya sadece S3 ve belirli bir kova için anahtar bağlantı KOYMAK belki sınır miyim? Başka bir kimlik doğrulama yöntemi vardır olabilir?
"Sunucusuz" çözüm ideal değildir, ama bazı sunucu taraflı işlemeyle ilgili, benim sunucuya dosya yükleme hariç düşünebilirim ve S3 için gönderdiler.
CEVAP
Tarayıcı Tabanlı istediğinizi Kullanarak YAZI Yüklemeler düşünüyorum.
Temel olarak, sunucu tarafı kod gerekiyor, ama yok tüm imzalı politikalar üretiyor. -Yan istemci kod imzalı politikası, doğrudan veri server geçmeden S3 için POST kullanarak yükleyebilirsiniz.
İşte resmi belge bağlantıları:
Diyagram: http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingHTTPPOST.html
Örnek kod: http://docs.aws.amazon.com/AmazonS3/latest/dev/HTTPPOSTExamples.html
İmzalı politikası şöyle: bir form içinde html giderdim
<html>
<head>
...
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
...
</head>
<body>
...
<form action="http://johnsmith.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
Key to upload: <input type="input" name="key" value="user/eric/" /><br />
<input type="hidden" name="acl" value="public-read" />
<input type="hidden" name="success_action_redirect" value="http://johnsmith.s3.amazonaws.com/successful_upload.html" />
Content-Type: <input type="input" name="Content-Type" value="image/jpeg" /><br />
<input type="hidden" name="x-amz-meta-uuid" value="14365123651274" />
Tags for File: <input type="input" name="x-amz-meta-tag" value="" /><br />
<input type="hidden" name="AWSAccessKeyId" value="AKIAIOSFODNN7EXAMPLE" />
<input type="hidden" name="Policy" value="POLICY" />
<input type="hidden" name="Signature" value="SIGNATURE" />
File: <input type="file" name="file" /> <br />
<!-- The elements after this will be ignored -->
<input type="submit" name="submit" value="Upload to Amazon S3" />
</form>
...
</html>
Aksiyon dosya gönderme FORMU dikkat edindoğrudan S3 için- sunucu üzerinden.
Her zaman eğer kullanıcı bir dosya yüklemek istiyor, sunucunuz üzerinde POLICY
SIGNATURE
oluşturacak. Seni kullanıcının tarayıcısına cevap verin. Kullanıcı daha sonra bir dosya doğrudan sunucu geçmeden S3 yükleyebilir.
Politika oturum açtığınızda, genellikle politika birkaç dakika sonra sona erecek. Bu kullanıcılar yüklemeden önce sunucu ile konuşmaya zorlar. Bu eğer arzu ederseniz ve yüklemeler izlemek sınırlamak sağlar.
Tek veri veya sunucunuza giden imzalı URL. Gizli anahtarları sunucu üzerinde gizli kalmak.
Nasıl bir özel entegre dosya tarayıcı/...
UYARI: ÖZEL ANAHTAR DOSYASI KORUMASIZ!...
Nasıl dönüştürme .dosya özel anahtar i...
Özü-PK-SSH Doğrulaması daha sonra kull...
Çapraz tarayıcı özel yükleme düğmesi d...