Skip to content

Commit 52f015c

Browse files
author
wb-yxy487231
committed
modify sign
1 parent 3fe9721 commit 52f015c

File tree

11 files changed

+52
-62
lines changed

11 files changed

+52
-62
lines changed

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def __init__(self, access_key_id=None, access_key_secret=None, region_id=None,
6868
# proxy provider两个: client env
6969
self.http_proxy = http_proxy
7070
self.https_proxy = https_proxy
71-
self.proxy = {
71+
self._proxy = {
7272
'http': self.http_proxy,
7373
'https': self.https_proxy,
7474
}
@@ -77,6 +77,11 @@ def __init__(self, access_key_id=None, access_key_secret=None, region_id=None,
7777
self.config_file = config_file
7878

7979
def read_from_env(self):
80+
# 从环境变量读取一定量的数据
81+
env_vars = ['HTTP_DEBUG', 'HTTPS_PROXY', 'HTTP_PROXY']
82+
for item in env_vars:
83+
if getattr(self, item.lower()) is None:
84+
setattr(self, item.lower(), os.environ.get(item) or os.environ.get(item.lower()))
8085

8186
def _set_env_to_config(config_name, env_name):
8287

@@ -132,17 +137,13 @@ def read_from_profile(self):
132137
if profile.get(key)is not None and getattr(self, key) is None:
133138
# 不存在config当中的值 pass
134139
setattr(self, key, profile.get(key))
135-
136-
return None
140+
print('不存在config当中的值', key)
137141

138142
def read_from_default(self):
139143
# some config DEFAULT
140144
# 用户实例化的时候,就进行了覆盖
141145
pass
142146

143-
def handle_timeout(self):
144-
pass
145-
146147

147148
def get_merged_client_config(config):
148149
config.read_from_env()

aliyun-python-sdk-core/alibabacloud/handlers/http_header_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def handle_http_request(self, context):
3333
signed_header = api_request.get_signed_header(context.config.region_id,
3434
context.config.access_key_id,
3535
context.config.access_key_secret)
36-
# 重新处理的header
36+
# 重新处理的header, http-request 的header
3737
headers = signed_header
3838
body_params = api_request.get_body_params()
3939
if body_params:

aliyun-python-sdk-core/alibabacloud/handlers/log_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
class LogHandler(RequestHandler):
1919

2020
def handle_request(self, context):
21-
log_string = self._get_request_log_string(context.request)
21+
# log_string = self._get_request_log_string(context.request)
2222
context.client.logger.debug(log_string)
2323

2424
def handle_response(self, context):
25-
log_string = self._get_response_log_string(context.response)
25+
# log_string = self._get_response_log_string(context.response)
2626
context.client.logger.debug(log_string)
2727

2828
def _get_request_log_string(self, request):

aliyun-python-sdk-core/alibabacloud/handlers/retry_handler.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ def _add_request_client_token(self, api_request):
2929
pass
3030

3131
def handle_request(self, context):
32-
retry_policy_context = RetryPolicyContext(context.api_request, None, 0, None)
33-
if context.client.retry_policy.should_retry(retry_policy_context) & \
34-
RetryCondition.SHOULD_RETRY_WITH_CLIENT_TOKEN:
35-
self._add_request_client_token(context.api_request)
36-
context.http_request.retries = 0
32+
if context.http_request.retries == 0:
33+
retry_policy_context = RetryPolicyContext(context.api_request, None, 0, None)
34+
if context.client.retry_policy.should_retry(retry_policy_context) & \
35+
RetryCondition.SHOULD_RETRY_WITH_CLIENT_TOKEN:
36+
self._add_request_client_token(context.api_request)
3737

3838
def handle_response(self, context):
3939
api_request = context.api_request
@@ -54,4 +54,3 @@ def handle_response(self, context):
5454
if context.exception:
5555
raise context.exception
5656
context.http_request.retries += 1
57-

aliyun-python-sdk-core/alibabacloud/signer/access_key_signer.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,7 @@ def sign(self, access_key_credential, context):
3131
cred = access_key_credential
3232
request = context.api_request
3333
region_id = context.config.region_id
34+
if request.get_style() == 'RPC':
35+
request.get_url_params()
3436
signature = request.get_signed_signature(region_id, cred.access_key_id)
3537
return signature

aliyun-python-sdk-core/alibabacloud/signer/bearer_token_signer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def sign(self, bear_token_credential, context):
3636
# which token
3737
if request.get_style() == 'RPC':
3838
request.add_query_param("BearerToken", token)
39+
request.get_url_params()
3940
else:
4041
request.add_header("x-acs-bearer-token", token)
4142
signature = request.get_signed_signature(region_id, None)

aliyun-python-sdk-core/alibabacloud/signer/security_signer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def sign(self, security_credential, context):
3333
region_id = context.config.region_id
3434
if request.get_style() == 'RPC':
3535
request.add_query_param("SecurityToken", security_credential.token)
36+
request.get_url_params()
3637
else:
3738
request.add_header("x-acs-security-token", security_credential.token)
3839
signature = request.get_signed_signature(region_id, security_credential.access_key_id)

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

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -119,29 +119,6 @@ def __build_query_string(uri, queries):
119119
return query_builder
120120

121121

122-
def get_signature(
123-
queries,
124-
access_key,
125-
secret,
126-
format,
127-
headers,
128-
uri_pattern,
129-
paths,
130-
method,
131-
signer=mac1):
132-
headers = refresh_sign_parameters(
133-
parameters=headers,
134-
format=format)
135-
sign_to_string = compose_string_to_sign(
136-
method=method,
137-
queries=queries,
138-
headers=headers,
139-
uri_pattern=uri_pattern,
140-
paths=paths)
141-
signature = signer.get_sign_string(sign_to_string, secret=secret)
142-
return signature, sign_to_string
143-
144-
145122
def get_signed_signature(queries, format, headers, uri_pattern, paths, method):
146123
headers = refresh_sign_parameters(
147124
parameters=headers,

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

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
# format: XML or JSON
3232
def __refresh_sign_parameters(
3333
parameters,
34-
access_key_id,
3534
accept_format="JSON",
3635
signer=mac1):
3736
if parameters is None or not isinstance(parameters, dict):
@@ -43,7 +42,6 @@ def __refresh_sign_parameters(
4342
parameters["SignatureType"] = signer.get_signer_type()
4443
parameters["SignatureVersion"] = signer.get_signer_version()
4544
parameters["SignatureNonce"] = helper.get_uuid()
46-
parameters["AccessKeyId"] = access_key_id
4745
if accept_format is not None:
4846
parameters["Format"] = accept_format
4947
return parameters
@@ -68,22 +66,29 @@ def __get_signature(string_to_sign, secret, signer=mac1):
6866
return signer.get_sign_string(string_to_sign, secret + '&')
6967

7068

71-
def __get_url_params(params, ak, accept_format, signer=mac1):
72-
url_params = __refresh_sign_parameters(params, ak, accept_format, signer)
69+
def get_url_params(params, accept_format, signer):
70+
url_params = __refresh_sign_parameters(params, accept_format, signer)
7371
return url_params
7472

7573

76-
def get_signed_signature(params, ak, accept_format, method, body_params, signer=mac1):
77-
url_params = __get_url_params(params, ak, accept_format, signer)
74+
def get_signed_signature(region_id, access_key_id, method, body_params,url_params):
7875
sign_params = dict(url_params)
76+
if 'RegionId' not in sign_params:
77+
sign_params['RegionId'] = region_id
78+
sign_params["AccessKeyId"] = access_key_id
7979
sign_params.update(body_params)
8080
string_to_sign = __compose_string_to_sign(method, sign_params)
8181
return string_to_sign
8282

8383

84-
def get_signed_url(params, ak, secret, accept_format, signer=mac1, string_to_sign=None):
85-
url_params = __get_url_params(params, ak, accept_format, signer)
84+
def get_signed_url(region_id, access_key_id, secret, url_params, string_to_sign, signer=mac1):
85+
sign_params = dict(url_params)
86+
if 'RegionId' not in sign_params:
87+
sign_params['RegionId'] = region_id
88+
sign_params["AccessKeyId"] = access_key_id
89+
8690
signature = __get_signature(string_to_sign, secret, signer)
87-
url_params['Signature'] = signature
88-
url = '/?' + __pop_standard_urlencode(urlencode(url_params))
91+
print('rpc.signature', signature)
92+
sign_params['Signature'] = signature
93+
url = '/?' + __pop_standard_urlencode(urlencode(sign_params))
8994
return url

aliyun-python-sdk-core/aliyunsdkcore/auth/signers/access_key_signer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ def __init__(self, access_key_credential):
3131

3232
def sign(self, region_id, request):
3333
cred = self._credential
34+
if request.get_style() == 'RPC':
35+
request.get_url_params()
36+
request.get_signed_signature(region_id, cred.access_key_id)
3437
header = request.get_signed_header(region_id, cred.access_key_id, cred.access_key_secret)
3538
url = request.get_url(region_id, cred.access_key_id, cred.access_key_secret)
3639
return header, url

0 commit comments

Comments
 (0)