Support session token

Signed-off-by: Troels Thomsen <troels@thomsen.io>
This commit is contained in:
Troels Thomsen 2017-03-27 22:04:00 +02:00
parent e85ef3c019
commit 7f510ae9c9
3 changed files with 10 additions and 0 deletions

View file

@ -98,6 +98,7 @@ type DriverParameters struct {
StorageClass string
UserAgent string
ObjectACL string
SessionToken string
}
func init() {
@ -331,6 +332,8 @@ func FromParameters(parameters map[string]interface{}) (*Driver, error) {
objectACL = objectACLString
}
sessionToken := ""
params := DriverParameters{
fmt.Sprint(accessKey),
fmt.Sprint(secretKey),
@ -349,6 +352,7 @@ func FromParameters(parameters map[string]interface{}) (*Driver, error) {
storageClass,
fmt.Sprint(userAgent),
objectACL,
fmt.Sprint(sessionToken),
}
return New(params)
@ -398,6 +402,7 @@ func New(params DriverParameters) (*Driver, error) {
Value: credentials.Value{
AccessKeyID: params.AccessKey,
SecretAccessKey: params.SecretKey,
SessionToken: params.SessionToken,
},
},
&credentials.EnvProvider{},

View file

@ -36,6 +36,7 @@ func init() {
objectACL := os.Getenv("S3_OBJECT_ACL")
root, err := ioutil.TempDir("", "driver-")
regionEndpoint := os.Getenv("REGION_ENDPOINT")
sessionToken := os.Getenv("AWS_SESSION_TOKEN")
if err != nil {
panic(err)
}
@ -84,6 +85,7 @@ func init() {
storageClass,
driverName + "-test",
objectACL,
sessionToken,
}
return New(parameters)

View file

@ -137,6 +137,9 @@ func (v2 *signer) Sign() error {
host, canonicalPath := parsedURL.Host, parsedURL.Path
v2.Request.Header["Host"] = []string{host}
v2.Request.Header["date"] = []string{v2.Time.In(time.UTC).Format(time.RFC1123)}
if credValue.SessionToken != "" {
v2.Request.Header["x-amz-security-token"] = []string{credValue.SessionToken}
}
smap = make(map[string]string)
for k, v := range headers {