Skip to content

Commit 04b3ecc

Browse files
wallisyanJacksonTian
authored andcommitted
modify InvalidAccessKeySecret
modify http code just modify lint modify invalidAccessKeySecert error msg modify AccessKey to AccessKeyId
1 parent 9eefc94 commit 04b3ecc

File tree

7 files changed

+32
-13
lines changed

7 files changed

+32
-13
lines changed

aliyun-python-sdk-core/aliyunsdkcore/auth/composer/roa_signature_composer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def get_signature(
139139
uri_pattern=uri_pattern,
140140
paths=paths)
141141
signature = signer.get_sign_string(sign_to_string, secret=secret)
142-
return signature
142+
return signature, sign_to_string
143143

144144

145145
def get_signature_headers(
@@ -152,7 +152,7 @@ def get_signature_headers(
152152
paths,
153153
method,
154154
signer=mac1):
155-
signature = get_signature(
155+
signature, sign_to_string = get_signature(
156156
queries,
157157
access_key,
158158
secret,
@@ -163,7 +163,7 @@ def get_signature_headers(
163163
method,
164164
signer)
165165
headers["Authorization"] = "acs " + str(access_key) + ":" + str(signature)
166-
return headers
166+
return headers, sign_to_string
167167

168168

169169
def get_url(uri_pattern, queries, path_parameters):

aliyun-python-sdk-core/aliyunsdkcore/auth/composer/rpc_signature_composer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,4 @@ def get_signed_url(params, ak, secret, accept_format, method, body_params, signe
7676
signature = __get_signature(string_to_sign, secret, signer)
7777
url_params['Signature'] = signature
7878
url = '/?' + __pop_standard_urlencode(urlencode(url_params))
79-
return url
79+
return url, string_to_sign

aliyun-python-sdk-core/aliyunsdkcore/client.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ def _handle_single_request(self, endpoint, request, timeout, signer):
371371
endpoint, aliyunsdkcore.__version__, str(exception))
372372
return None, None, None, exception
373373

374-
exception = self._get_server_exception(status, body, endpoint)
374+
exception = self._get_server_exception(status, body, endpoint, request.string_to_sign)
375375
return status, headers, body, exception
376376

377377
@staticmethod
@@ -391,7 +391,7 @@ def _parse_error_info_from_response_body(response_body):
391391

392392
return error_code_to_return, error_message_to_return
393393

394-
def _get_server_exception(self, http_status, response_body, endpoint):
394+
def _get_server_exception(self, http_status, response_body, endpoint, string_to_sign):
395395
request_id = None
396396

397397
try:
@@ -406,7 +406,11 @@ def _get_server_exception(self, http_status, response_body, endpoint):
406406

407407
server_error_code, server_error_message = self._parse_error_info_from_response_body(
408408
response_body.decode('utf-8'))
409-
409+
if http_status == codes.BAD_REQUEST and server_error_code == 'SignatureDoesNotMatch':
410+
if string_to_sign == server_error_message.split(':')[1]:
411+
server_error_code = 'InvalidAccessKeySecret'
412+
server_error_message = 'The AccessKeySecret is incorrect. ' \
413+
'Please check your AccessKeyId and AccessKeySecret.'
410414
exception = ServerException(
411415
server_error_code,
412416
server_error_message,

aliyun-python-sdk-core/aliyunsdkcore/request.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ def __init__(self, product, version=None,
105105
self.add_header('x-sdk-invoke-type', 'normal')
106106
self.endpoint = None
107107
self._extra_user_agent = {}
108+
self.string_to_sign = ''
108109

109110
def add_query_param(self, k, v):
110111
self._params[k] = v
@@ -296,14 +297,15 @@ def get_url(self, region_id, access_key_id, access_key_secret):
296297
sign_params = self._get_sign_params()
297298
if 'RegionId' not in iterkeys(sign_params):
298299
sign_params['RegionId'] = region_id
299-
url = rpc_signer.get_signed_url(
300+
url, string_to_sign = rpc_signer.get_signed_url(
300301
sign_params,
301302
access_key_id,
302303
access_key_secret,
303304
self.get_accept_format(),
304305
self.get_method(),
305306
self.get_body_params(),
306307
self._signer)
308+
self.string_to_sign = string_to_sign
307309
return url
308310

309311
def get_signed_header(self, region_id=None, ak=None, secret=None):
@@ -404,7 +406,7 @@ def get_signed_header(self, region_id, ak, secret):
404406
sign_params['RegionId'] = region_id
405407
self.add_header('x-acs-region-id', str(region_id))
406408

407-
signed_headers = roa_signer.get_signature_headers(
409+
signed_headers, sign_to_string = roa_signer.get_signature_headers(
408410
sign_params,
409411
ak,
410412
secret,
@@ -413,6 +415,7 @@ def get_signed_header(self, region_id, ak, secret):
413415
self.get_uri_pattern(),
414416
self.get_path_params(),
415417
self.get_method())
418+
self.string_to_sign = sign_to_string
416419
return signed_headers
417420

418421
def get_url(self, region_id, ak=None, secret=None):

aliyun-python-sdk-core/tests/auth/composer/test_roa_signature_composer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,15 @@ def test_refresh_sign_parameters(self, mock_get_rfc_2616_date):
7878
@patch("aliyunsdkcore.utils.parameter_helper.get_rfc_2616_date")
7979
def test_get_signature(self, mock_get_rfc_2616_date):
8080
mock_get_rfc_2616_date.return_value = "2018-12-04T03:55:31Z"
81-
sign = get_signature({}, 'access_key_id',
82-
'access_key_secret', 'json', {}, '/', {}, 'GET')
81+
sign, _ = get_signature({}, 'access_key_id',
82+
'access_key_secret', 'json', {}, '/', {}, 'GET')
8383
mock_get_rfc_2616_date.assert_called_once_with()
8484
self.assertEqual(sign, 'HKCpm41tJg6b3EYdtGMbNuwALZU=')
8585

8686
@patch("aliyunsdkcore.utils.parameter_helper.get_rfc_2616_date")
8787
def test_get_signature_headers(self, mock_get_rfc_2616_date):
8888
mock_get_rfc_2616_date.return_value = "2018-12-04T03:55:31Z"
89-
headers = get_signature_headers(
89+
headers, _ = get_signature_headers(
9090
{}, 'access_key_id', 'access_key_secret', 'json', {}, '/', {}, 'GET')
9191
mock_get_rfc_2616_date.assert_called_once_with()
9292
self.assertEqual(headers.get('Authorization'),

python-sdk-functional-test/bugs_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from aliyunsdkcore.http import method_type
99
from aliyunsdkcore.profile import region_provider
1010
from aliyunsdkcore.request import CommonRequest, RpcRequest
11+
from aliyunsdkcore.client import AcsClient
1112
from base import SDKTestBase
1213

1314

@@ -97,3 +98,14 @@ def test_bug_with_body_params(self):
9798
response = self.client.do_action_with_exception(request)
9899
response = self.get_dict_response(response)
99100
self.assertTrue(response.get("RequestId"))
101+
102+
def test_bug_with_not_match_sign(self):
103+
from aliyunsdkcdn.request.v20180510.PushObjectCacheRequest import PushObjectCacheRequest
104+
client = AcsClient(self.access_key_id, 'BadAccessKeySecret', 'cn-hangzhou')
105+
request = PushObjectCacheRequest()
106+
request.add_query_param('ObjectPath', 'http://lftest005.sbcicp1.net/C环境下SDK部署方式.txt')
107+
try:
108+
response = client.do_action_with_exception(request)
109+
assert False
110+
except ServerException as e:
111+
self.assertEqual("InvalidAccessKeySecret", e.error_code)

python-sdk-functional-test/new_endpoint_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ def test_invalid_access_key_secret(self):
367367
self.resolve("cn-hangzhou", "Ecs", "ecs", "innerAPI")
368368
assert False
369369
except ServerException as e:
370-
self.assertEqual("SignatureDoesNotMatch", e.get_error_code())
370+
self.assertEqual("InvalidAccessKeySecret", e.get_error_code())
371371

372372
def test_local_clock_screw_when_call_location_service(self):
373373
# Not implemented

0 commit comments

Comments
 (0)