S3 query string authentication and AWS Security Token Service
Getting this right took some tweaking, so:
// http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAuthentication.html#RESTAuthenticationQueryStringAuth // http://docs.amazonwebservices.com/STS/latest/APIReference/Welcome.html var access_key = '…', secret_key = '…', session_token = '…'; var expires = Math.floor(((new Date()).getTime()/1000) + 3600); var string_to_sign = [ 'GET\n\n\n', expires, '\n', 'x-amz-security-token:', session_token, '\n', '/', bucket, '/', key ].join(''); // https://github.com/lmorchard/S3Ajax/blob/master/js/sha1.js var signature = b64_hmac_sha1(secret_key, string_to_sign) + '='; var url = key + '?AWSAccessKeyId=' + encodeURIComponent(access_key) + '&Signature=' + encodeURIComponent(signature) + '&Expires=' + expires + '&x-amz-security-token=' + encodeURIComponent(session_token);
Categorised as: snippet