Skip to content

Commit aadda50

Browse files
committed
aksk security: config via credential obj
1 parent 14edd45 commit aadda50

File tree

3 files changed

+35
-8
lines changed

3 files changed

+35
-8
lines changed

qcloud_cos/cos_auth.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ def filter_headers(data):
4545
class CosS3Auth(AuthBase):
4646

4747
def __init__(self, conf, key=None, params={}, expire=10000, sign_host=None):
48-
self._secret_id = conf._secret_id
49-
self._secret_key = conf._secret_key
48+
self._secret_id = conf._secret_id if conf._secret_id else conf._credential_inst.secret_id
49+
self._secret_key = conf._secret_key if conf._secret_key else conf._credential_inst.secret_key
5050
self._anonymous = conf._anonymous
5151
self._expire = expire
5252
self._params = params

qcloud_cos/cos_client.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
class CosConfig(object):
4242
"""config类,保存用户相关信息"""
4343

44-
def __init__(self, Appid=None, Region=None, SecretId=None, SecretKey=None, Token=None, Scheme=None, Timeout=None,
44+
def __init__(self, Appid=None, Region=None, SecretId=None, SecretKey=None, Token=None, CredentialInstance=None, Scheme=None, Timeout=None,
4545
Access_id=None, Access_key=None, Secret_id=None, Secret_key=None, Endpoint=None, IP=None, Port=None,
4646
Anonymous=None, UA=None, Proxies=None, Domain=None, ServiceDomain=None, PoolConnections=10,
4747
PoolMaxSize=10, AllowRedirects=False, SignHost=True, EndpointCi=None, EndpointPic=None, EnableOldDomain=True, EnableInternalDomain=True):
@@ -120,6 +120,10 @@ def __init__(self, Appid=None, Region=None, SecretId=None, SecretKey=None, Token
120120
elif (Access_id and Access_key):
121121
self._secret_id = self.convert_secret_value(Access_id)
122122
self._secret_key = self.convert_secret_value(Access_key)
123+
elif (CredentialInstance and hasattr(CredentialInstance, "secret_id") and hasattr(CredentialInstance, "secret_key") and hasattr(CredentialInstance, "token")):
124+
self._secret_id = None
125+
self._secret_key = None
126+
self._credential_inst = CredentialInstance
123127
elif self._anonymous:
124128
self._secret_id = None
125129
self._secret_key = None

ut/test.py

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,39 @@
2323
REGION = os.environ["REGION"]
2424
APPID = '1251668577'
2525
TEST_CI = os.environ["TEST_CI"]
26+
USE_CREDENTIAL_INST = os.environ["USE_CREDENTIAL_INST"]
2627
test_bucket = 'cos-python-v5-test-' + str(sys.version_info[0]) + '-' + str(
2728
sys.version_info[1]) + '-' + REGION + '-' + APPID
2829
copy_test_bucket = 'copy-' + test_bucket
2930
test_object = "test.txt"
3031
special_file_name = "中文" + "→↓←→↖↗↙↘! \"#$%&'()*+,-./0123456789:;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
31-
conf = CosConfig(
32-
Region=REGION,
33-
SecretId=SECRET_ID,
34-
SecretKey=SECRET_KEY,
35-
)
32+
33+
""" CredentialDemo """
34+
class CredentialDemo:
35+
@property
36+
def secret_id(self):
37+
return SECRET_ID
38+
39+
@property
40+
def secret_key(self):
41+
return SECRET_KEY
42+
43+
@property
44+
def token(self):
45+
return ''
46+
47+
if USE_CREDENTIAL_INST == 'true':
48+
conf = CosConfig(
49+
Region=REGION,
50+
CredentialInstance=CredentialDemo()
51+
)
52+
else:
53+
conf = CosConfig(
54+
Region=REGION,
55+
SecretId=SECRET_ID,
56+
SecretKey=SECRET_KEY,
57+
)
58+
3659
client = CosS3Client(conf, retry=3)
3760
rsa_provider = RSAProvider()
3861
client_for_rsa = CosEncryptionClient(conf, rsa_provider)

0 commit comments

Comments
 (0)