summaryrefslogtreecommitdiff
path: root/swift/common/middleware/s3api/s3request.py
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-01-29 19:10:21 +0000
committerGerrit Code Review <review@openstack.org>2020-01-29 19:10:21 +0000
commit898cb928c7bae882ffc336c29098ccc38db7fb3c (patch)
tree809dd96c9b33e9d4d006bd98bca2ae75117b2cc2 /swift/common/middleware/s3api/s3request.py
parent3010d318043e8a2fbd1c6bc8595e185b2201e247 (diff)
parentbd063b678992a710f423a86d392a34237a8379ba (diff)
downloadswift-898cb928c7bae882ffc336c29098ccc38db7fb3c.tar.gz
Merge "s3api: use native strings in s3api.auth_details access_key"
Diffstat (limited to 'swift/common/middleware/s3api/s3request.py')
-rw-r--r--swift/common/middleware/s3api/s3request.py19
1 files changed, 10 insertions, 9 deletions
diff --git a/swift/common/middleware/s3api/s3request.py b/swift/common/middleware/s3api/s3request.py
index 8aa41bd4a..fa39a68d8 100644
--- a/swift/common/middleware/s3api/s3request.py
+++ b/swift/common/middleware/s3api/s3request.py
@@ -253,15 +253,16 @@ class SigV4Mixin(object):
self.params.get('X-Amz-Algorithm'))
try:
cred_param = self._parse_credential(
- self.params['X-Amz-Credential'])
- sig = self.params['X-Amz-Signature']
+ swob.wsgi_to_str(self.params['X-Amz-Credential']))
+ sig = swob.wsgi_to_str(self.params['X-Amz-Signature'])
if not sig:
raise AccessDenied()
except KeyError:
raise AccessDenied()
try:
- signed_headers = self.params['X-Amz-SignedHeaders']
+ signed_headers = swob.wsgi_to_str(
+ self.params['X-Amz-SignedHeaders'])
except KeyError:
# TODO: make sure if is it malformed request?
raise AuthorizationHeaderMalformed()
@@ -298,7 +299,7 @@ class SigV4Mixin(object):
:raises: AuthorizationHeaderMalformed
"""
- auth_str = self.headers['Authorization']
+ auth_str = swob.wsgi_to_str(self.headers['Authorization'])
cred_param = self._parse_credential(auth_str.partition(
"Credential=")[2].split(',')[0])
sig = auth_str.partition("Signature=")[2].split(',')[0]
@@ -371,7 +372,7 @@ class SigV4Mixin(object):
headers_to_sign = [
(key, value) for key, value in sorted(headers_lower_dict.items())
- if key in self._signed_headers]
+ if swob.wsgi_to_str(key) in self._signed_headers]
if len(headers_to_sign) != len(self._signed_headers):
# NOTE: if we are missing the header suggested via
@@ -646,9 +647,9 @@ class S3Request(swob.Request):
:raises: AccessDenied
"""
try:
- access = self.params['AWSAccessKeyId']
- expires = self.params['Expires']
- sig = self.params['Signature']
+ access = swob.wsgi_to_str(self.params['AWSAccessKeyId'])
+ expires = swob.wsgi_to_str(self.params['Expires'])
+ sig = swob.wsgi_to_str(self.params['Signature'])
except KeyError:
raise AccessDenied()
@@ -664,7 +665,7 @@ class S3Request(swob.Request):
:returns: a tuple of access_key and signature
:raises: AccessDenied
"""
- auth_str = self.headers['Authorization']
+ auth_str = swob.wsgi_to_str(self.headers['Authorization'])
if not auth_str.startswith('AWS ') or ':' not in auth_str:
raise AccessDenied()
# This means signature format V2