diff options
| author | chrislu <chris.lu@gmail.com> | 2022-04-19 22:58:59 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2022-04-19 22:58:59 -0700 |
| commit | f3fdfb07b8f0cf33ef4955416088fb2d16d47149 (patch) | |
| tree | ed635621b76a5be6259f671f8adefad8464db380 /weed/iamapi | |
| parent | 8e9ad7db5ac31ef38649a44a7599f6431ee616ad (diff) | |
| parent | 8c345bdc7f2170e1ee72824f3badfdcb14e8643c (diff) | |
| download | seaweedfs-f3fdfb07b8f0cf33ef4955416088fb2d16d47149.tar.xz seaweedfs-f3fdfb07b8f0cf33ef4955416088fb2d16d47149.zip | |
Merge branch 'master' of https://github.com/chrislusf/seaweedfs
Diffstat (limited to 'weed/iamapi')
| -rw-r--r-- | weed/iamapi/iamapi_management_handlers.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/weed/iamapi/iamapi_management_handlers.go b/weed/iamapi/iamapi_management_handlers.go index 94003c46e..5fea49f5c 100644 --- a/weed/iamapi/iamapi_management_handlers.go +++ b/weed/iamapi/iamapi_management_handlers.go @@ -377,6 +377,18 @@ func (iama *IamApiServer) DeleteAccessKey(s3cfg *iam_pb.S3ApiConfiguration, valu return resp } +// handleImplicitUsername adds username who signs the request to values if 'username' is not specified +// According to https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-access-key.html/ +// "If you do not specify a user name, IAM determines the user name implicitly based on the Amazon Web +// Services access key ID signing the request." +func handleImplicitUsername(r *http.Request, values url.Values) { + if values.Get("UserName") == "" { + // get username who signs the request + userName := strings.Split(r.Header["Authorization"][0], "/")[2] + values.Set("UserName", userName) + } +} + func (iama *IamApiServer) DoActions(w http.ResponseWriter, r *http.Request) { if err := r.ParseForm(); err != nil { s3err.WriteErrorResponse(w, r, s3err.ErrInvalidRequest) @@ -401,6 +413,7 @@ func (iama *IamApiServer) DoActions(w http.ResponseWriter, r *http.Request) { response = iama.ListUsers(s3cfg, values) changed = false case "ListAccessKeys": + handleImplicitUsername(r, values) response = iama.ListAccessKeys(s3cfg, values) changed = false case "CreateUser": @@ -428,8 +441,10 @@ func (iama *IamApiServer) DoActions(w http.ResponseWriter, r *http.Request) { return } case "CreateAccessKey": + handleImplicitUsername(r, values) response = iama.CreateAccessKey(s3cfg, values) case "DeleteAccessKey": + handleImplicitUsername(r, values) response = iama.DeleteAccessKey(s3cfg, values) case "CreatePolicy": response, err = iama.CreatePolicy(s3cfg, values) |
