Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 33 additions & 32 deletions alibabacloud_credentials/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,60 +25,61 @@ def __init__(self, config=None):
self.cloud_credential = provider.get_credentials()
self.cloud_credential = self.get_credential(config)

def get_credential(self, config):
@staticmethod
def get_credential(config):
if config.type == ac.ACCESS_KEY:
return credentials.AccessKeyCredential(config.access_key_id, config.access_key_secret)
elif config.type == ac.STS:
return credentials.StsCredential(config.access_key_id, config.access_key_secret, config.security_token)
elif config.type == ac.BEARER:
return credentials.BearerTokenCredential(config.bearer_token)
else:
return self.get_provider(config).get_credentials()

@staticmethod
def get_provider(config):
if config.type == ac.ECS_RAM_ROLE:
return providers.EcsRamRoleCredentialProvider(config=config)
elif config.type == ac.ECS_RAM_ROLE:
return credentials.EcsRamRoleCredential(
config.access_key_id,
config.access_key_secret,
config.security_token,
0,
providers.EcsRamRoleCredentialProvider(config=config)
)
elif config.type == ac.RAM_ROLE_ARN:
return providers.RamRoleArnCredentialProvider(config=config)
return credentials.RamRoleArnCredential(
config.access_key_id,
config.access_key_secret,
config.security_token,
0,
providers.RamRoleArnCredentialProvider(config=config)
)
elif config.type == ac.RSA_KEY_PAIR:
return providers.RsaKeyPairCredentialProvider(config=config)
return providers.DefaultCredentialsProvider()
return credentials.RsaKeyPairCredential(
config.access_key_id,
config.access_key_secret,
0,
providers.RsaKeyPairCredentialProvider(config=config)
)
return providers.DefaultCredentialsProvider().get_credentials()

@attribute_error_return_none
def get_access_key_id(self):
return self.cloud_credential.get_access_key_id()

@attribute_error_return_none
def get_access_key_secret(self):
return self.cloud_credential.get_access_key_secret()

@attribute_error_return_none
def get_security_token(self):
return self.cloud_credential.get_security_token()

async def get_access_key_id_async(self):
return await self.cloud_credential.get_access_key_id_async()

async def get_access_key_secret_async(self):
return await self.cloud_credential.get_access_key_secret_async()

async def get_security_token_async(self):
return await self.cloud_credential.get_security_token_async()

@attribute_error_return_none
def get_type(self):
return self.cloud_credential.credential_type

@attribute_error_return_none
def get_bearer_token(self):
return self.cloud_credential.bearer_token

async def get_access_key_id_async(self):
if hasattr(self.cloud_credential, 'get_access_key_id'):
return self.cloud_credential.get_access_key_id()
else:
return

async def get_access_key_secret_async(self):
if hasattr(self.cloud_credential, 'get_access_key_secret'):
return self.cloud_credential.get_access_key_secret()
else:
return

async def get_security_token_async(self):
if hasattr(self.cloud_credential, 'get_security_token'):
return self.cloud_credential.get_security_token()
else:
return
116 changes: 110 additions & 6 deletions alibabacloud_credentials/credentials.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,26 @@
from alibabacloud_credentials.utils import auth_constant as ac


class Credential:
def get_access_key_id(self):
return

def get_access_key_secret(self):
return

def get_security_token(self):
return

async def get_access_key_id_async(self):
return

async def get_access_key_secret_async(self):
return

async def get_security_token_async(self):
return


class _AutomaticallyRefreshCredentials:
def __init__(self, expiration, provider):
self.expiration = expiration
Expand All @@ -18,8 +38,11 @@ def _refresh_credential(self):
if self._with_should_refresh():
return self._get_new_credential()

async def _get_new_credential_async(self):
return await self.provider.get_credentials_async()

class AccessKeyCredential:

class AccessKeyCredential(Credential):
"""AccessKeyCredential"""

def __init__(self, access_key_id, access_key_secret):
Expand All @@ -33,16 +56,22 @@ def get_access_key_id(self):
def get_access_key_secret(self):
return self.access_key_secret

async def get_access_key_id_async(self):
return self.access_key_id

async def get_access_key_secret_async(self):
return self.access_key_secret


class BearerTokenCredential:
class BearerTokenCredential(Credential):
"""BearerTokenCredential"""

def __init__(self, bearer_token):
self.bearer_token = bearer_token
self.credential_type = ac.BEARER


class EcsRamRoleCredential(_AutomaticallyRefreshCredentials):
class EcsRamRoleCredential(Credential, _AutomaticallyRefreshCredentials):
"""EcsRamRoleCredential"""

def __init__(self, access_key_id, access_key_secret, security_token, expiration, provider):
Expand All @@ -54,6 +83,18 @@ def __init__(self, access_key_id, access_key_secret, security_token, expiration,

def _refresh_credential(self):
credential = super()._refresh_credential()

if credential:
self.access_key_id = credential.access_key_id
self.access_key_secret = credential.access_key_secret
self.expiration = credential.expiration
self.security_token = credential.security_token

async def _refresh_credential_async(self):
credential = None
if self._with_should_refresh():
credential = await self._get_new_credential_async()

if credential:
self.access_key_id = credential.access_key_id
self.access_key_secret = credential.access_key_secret
Expand All @@ -72,8 +113,20 @@ def get_security_token(self):
self._refresh_credential()
return self.security_token

async def get_access_key_id_async(self):
await self._refresh_credential_async()
return self.access_key_id

async def get_access_key_secret_async(self):
await self._refresh_credential_async()
return self.access_key_secret

class RamRoleArnCredential(_AutomaticallyRefreshCredentials):
async def get_security_token_async(self):
await self._refresh_credential_async()
return self.security_token


class RamRoleArnCredential(Credential, _AutomaticallyRefreshCredentials):
"""RamRoleArnCredential"""

def __init__(self, access_key_id, access_key_secret, security_token, expiration, provider):
Expand All @@ -91,6 +144,17 @@ def _refresh_credential(self):
self.expiration = credential.expiration
self.security_token = credential.security_token

async def _refresh_credential_async(self):
credential = None
if self._with_should_refresh():
credential = await self._get_new_credential_async()

if credential:
self.access_key_id = credential.access_key_id
self.access_key_secret = credential.access_key_secret
self.expiration = credential.expiration
self.security_token = credential.security_token

def get_access_key_id(self):
self._refresh_credential()
return self.access_key_id
Expand All @@ -103,8 +167,20 @@ def get_security_token(self):
self._refresh_credential()
return self.security_token

async def get_access_key_id_async(self):
await self._refresh_credential_async()
return self.access_key_id

async def get_access_key_secret_async(self):
await self._refresh_credential_async()
return self.access_key_secret

async def get_security_token_async(self):
await self._refresh_credential_async()
return self.security_token


class RsaKeyPairCredential(_AutomaticallyRefreshCredentials):
class RsaKeyPairCredential(Credential, _AutomaticallyRefreshCredentials):
def __init__(self, access_key_id, access_key_secret, expiration, provider):
super().__init__(expiration, provider)
self.access_key_id = access_key_id
Expand All @@ -118,6 +194,17 @@ def _refresh_credential(self):
self.access_key_secret = credential.access_key_secret
self.expiration = credential.expiration

async def _refresh_credential_async(self):
credential = None
if self._with_should_refresh():
credential = await self._get_new_credential_async()

if credential:
self.access_key_id = credential.access_key_id
self.access_key_secret = credential.access_key_secret
self.expiration = credential.expiration
self.security_token = credential.security_token

def get_access_key_id(self):
self._refresh_credential()
return self.access_key_id
Expand All @@ -126,8 +213,16 @@ def get_access_key_secret(self):
self._refresh_credential()
return self.access_key_secret

async def get_access_key_id_async(self):
await self._refresh_credential_async()
return self.access_key_id

async def get_access_key_secret_async(self):
await self._refresh_credential_async()
return self.access_key_secret

class StsCredential:

class StsCredential(Credential):
def __init__(self, access_key_id, access_key_secret, security_token):
self.access_key_id = access_key_id
self.access_key_secret = access_key_secret
Expand All @@ -142,3 +237,12 @@ def get_access_key_secret(self):

def get_security_token(self):
return self.security_token

async def get_access_key_id_async(self):
return self.access_key_id

async def get_access_key_secret_async(self):
return self.access_key_secret

async def get_security_token_async(self):
return self.security_token
Loading