mirror of
https://github.com/rclone/rclone
synced 2025-04-01 18:25:30 +02:00
s3: fix copy multipart with v2 auth failing with 'SignatureDoesNotMatch'
Signed-off-by: zhuc <zhucan.k8s@gmail.com>
This commit is contained in:
parent
78afe01d15
commit
cdaea62932
@ -53,6 +53,7 @@ func sign(AccessKey, SecretKey string, req *http.Request) {
|
|||||||
var md5 string
|
var md5 string
|
||||||
var contentType string
|
var contentType string
|
||||||
var headersToSign []string
|
var headersToSign []string
|
||||||
|
tmpHeadersToSign := make(map[string][]string)
|
||||||
for k, v := range req.Header {
|
for k, v := range req.Header {
|
||||||
k = strings.ToLower(k)
|
k = strings.ToLower(k)
|
||||||
switch k {
|
switch k {
|
||||||
@ -62,15 +63,24 @@ func sign(AccessKey, SecretKey string, req *http.Request) {
|
|||||||
contentType = v[0]
|
contentType = v[0]
|
||||||
default:
|
default:
|
||||||
if strings.HasPrefix(k, "x-amz-") {
|
if strings.HasPrefix(k, "x-amz-") {
|
||||||
vall := strings.Join(v, ",")
|
tmpHeadersToSign[k] = v
|
||||||
headersToSign = append(headersToSign, k+":"+vall)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var keys []string
|
||||||
|
for k := range tmpHeadersToSign {
|
||||||
|
keys = append(keys, k)
|
||||||
|
}
|
||||||
|
// https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
|
||||||
|
sort.Strings(keys)
|
||||||
|
|
||||||
|
for _, key := range keys {
|
||||||
|
vall := strings.Join(tmpHeadersToSign[key], ",")
|
||||||
|
headersToSign = append(headersToSign, key+":"+vall)
|
||||||
|
}
|
||||||
// Make headers of interest into canonical string
|
// Make headers of interest into canonical string
|
||||||
var joinedHeadersToSign string
|
var joinedHeadersToSign string
|
||||||
if len(headersToSign) > 0 {
|
if len(headersToSign) > 0 {
|
||||||
sort.StringSlice(headersToSign).Sort()
|
|
||||||
joinedHeadersToSign = strings.Join(headersToSign, "\n") + "\n"
|
joinedHeadersToSign = strings.Join(headersToSign, "\n") + "\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user