From 5467ad75334ee0b5e23522679171cda5fd4edb8a Mon Sep 17 00:00:00 2001 From: Carl Lundin <108372512+clundin25@users.noreply.github.com> Date: Thu, 8 Jun 2023 09:56:01 -0700 Subject: [PATCH 1/3] feat: Add public API load_credentials_from_dict (#1326) feat: Add public API load_credentials_from_dict to allow creating a default credential object from a dictionary. This resolves https://github.com/googleapis/google-auth-library-python/issues/1313. --- google/auth/__init__.py | 8 +++++-- google/auth/_default.py | 44 +++++++++++++++++++++++++++++++++++ system_tests/secrets.tar.enc | Bin 10324 -> 10324 bytes tests/test__default.py | 22 ++++++++++++++++++ 4 files changed, 72 insertions(+), 2 deletions(-) diff --git a/google/auth/__init__.py b/google/auth/__init__.py index 861abe7ea..2875772b3 100644 --- a/google/auth/__init__.py +++ b/google/auth/__init__.py @@ -17,13 +17,17 @@ import logging from google.auth import version as google_auth_version -from google.auth._default import default, load_credentials_from_file +from google.auth._default import ( + default, + load_credentials_from_dict, + load_credentials_from_file, +) __version__ = google_auth_version.__version__ -__all__ = ["default", "load_credentials_from_file"] +__all__ = ["default", "load_credentials_from_file", "load_credentials_from_dict"] # Set default logging handler to avoid "No handler found" warnings. logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/google/auth/_default.py b/google/auth/_default.py index 4effeec9e..1ae26b4eb 100644 --- a/google/auth/_default.py +++ b/google/auth/_default.py @@ -130,6 +130,50 @@ def load_credentials_from_file( ) +def load_credentials_from_dict( + info, scopes=None, default_scopes=None, quota_project_id=None, request=None +): + """Loads Google credentials from a dict. + + The credentials file must be a service account key, stored authorized + user credentials, external account credentials, or impersonated service + account credentials. + + Args: + info (Dict[str, Any]): A dict object containing the credentials + scopes (Optional[Sequence[str]]): The list of scopes for the credentials. If + specified, the credentials will automatically be scoped if + necessary + default_scopes (Optional[Sequence[str]]): Default scopes passed by a + Google client library. Use 'scopes' for user-defined scopes. + quota_project_id (Optional[str]): The project ID used for + quota and billing. + request (Optional[google.auth.transport.Request]): An object used to make + HTTP requests. This is used to determine the associated project ID + for a workload identity pool resource (external account credentials). + If not specified, then it will use a + google.auth.transport.requests.Request client to make requests. + + Returns: + Tuple[google.auth.credentials.Credentials, Optional[str]]: Loaded + credentials and the project ID. Authorized user credentials do not + have the project ID information. External account credentials project + IDs may not always be determined. + + Raises: + google.auth.exceptions.DefaultCredentialsError: if the file is in the + wrong format or is missing. + """ + if not isinstance(info, dict): + raise exceptions.DefaultCredentialsError( + "info object was of type {} but dict type was expected.".format(type(info)) + ) + + return _load_credentials_from_info( + "dict object", info, scopes, default_scopes, quota_project_id, request + ) + + def _load_credentials_from_info( filename, info, scopes, default_scopes, quota_project_id, request ): diff --git a/system_tests/secrets.tar.enc b/system_tests/secrets.tar.enc index 04a24e425f30530e7b7cf1d224069734fecaf08a..efa90e0ea2da034b4fc538ba64aa8f4c2e9c9674 100644 GIT binary patch literal 10324 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 literal 10324 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 Date: Thu, 8 Jun 2023 10:47:08 -0700 Subject: [PATCH 2/3] chore(test): replace AWS creds with fictitious samples (#1324) (#1325) --- tests/test_aws.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/test_aws.py b/tests/test_aws.py index 45397d34f..8b18584b0 100644 --- a/tests/test_aws.py +++ b/tests/test_aws.py @@ -63,10 +63,10 @@ CRED_VERIFICATION_URL = ( "https://sts.{region}.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15" ) -# Sample AWS security credentials to be used with tests that require a session token. -ACCESS_KEY_ID = "ASIARD4OQDT6A77FR3CL" -SECRET_ACCESS_KEY = "Y8AfSaucF37G4PpvfguKZ3/l7Id4uocLXxX0+VTx" -TOKEN = "IQoJb3JpZ2luX2VjEIz//////////wEaCXVzLWVhc3QtMiJGMEQCIH7MHX/Oy/OB8OlLQa9GrqU1B914+iMikqWQW7vPCKlgAiA/Lsv8Jcafn14owfxXn95FURZNKaaphj0ykpmS+Ki+CSq0AwhlEAAaDDA3NzA3MTM5MTk5NiIMx9sAeP1ovlMTMKLjKpEDwuJQg41/QUKx0laTZYjPlQvjwSqS3OB9P1KAXPWSLkliVMMqaHqelvMF/WO/glv3KwuTfQsavRNs3v5pcSEm4SPO3l7mCs7KrQUHwGP0neZhIKxEXy+Ls//1C/Bqt53NL+LSbaGv6RPHaX82laz2qElphg95aVLdYgIFY6JWV5fzyjgnhz0DQmy62/Vi8pNcM2/VnxeCQ8CC8dRDSt52ry2v+nc77vstuI9xV5k8mPtnaPoJDRANh0bjwY5Sdwkbp+mGRUJBAQRlNgHUJusefXQgVKBCiyJY4w3Csd8Bgj9IyDV+Azuy1jQqfFZWgP68LSz5bURyIjlWDQunO82stZ0BgplKKAa/KJHBPCp8Qi6i99uy7qh76FQAqgVTsnDuU6fGpHDcsDSGoCls2HgZjZFPeOj8mmRhFk1Xqvkbjuz8V1cJk54d3gIJvQt8gD2D6yJQZecnuGWd5K2e2HohvCc8Fc9kBl1300nUJPV+k4tr/A5R/0QfEKOZL1/k5lf1g9CREnrM8LVkGxCgdYMxLQow1uTL+QU67AHRRSp5PhhGX4Rek+01vdYSnJCMaPhSEgcLqDlQkhk6MPsyT91QMXcWmyO+cAZwUPwnRamFepuP4K8k2KVXs/LIJHLELwAZ0ekyaS7CptgOqS7uaSTFG3U+vzFZLEnGvWQ7y9IPNQZ+Dffgh4p3vF4J68y9049sI6Sr5d5wbKkcbm8hdCDHZcv4lnqohquPirLiFQ3q7B17V9krMPu3mz1cg4Ekgcrn/E09NTsxAqD8NcZ7C7ECom9r+X3zkDOxaajW6hu3Az8hGlyylDaMiFfRbBJpTIlxp7jfa7CxikNgNtEKLH9iCzvuSg2vhA==" +# Sample fictitious AWS security credentials to be used with tests that require a session token. +ACCESS_KEY_ID = "AKIAIOSFODNN7EXAMPLE" +SECRET_ACCESS_KEY = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" +TOKEN = "AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE" # To avoid json.dumps() differing behavior from one version to other, # the JSON payload is hardcoded. REQUEST_PARAMS = '{"KeySchema":[{"KeyType":"HASH","AttributeName":"Id"}],"TableName":"TestTable","AttributeDefinitions":[{"AttributeName":"Id","AttributeType":"S"}],"ProvisionedThroughput":{"WriteCapacityUnits":5,"ReadCapacityUnits":5}}' @@ -514,7 +514,7 @@ "headers": { "Authorization": "AWS4-HMAC-SHA256 Credential=" + ACCESS_KEY_ID - + "/20200811/us-east-2/ec2/aws4_request, SignedHeaders=host;x-amz-date;x-amz-security-token, Signature=631ea80cddfaa545fdadb120dc92c9f18166e38a5c47b50fab9fce476e022855", + + "/20200811/us-east-2/ec2/aws4_request, SignedHeaders=host;x-amz-date;x-amz-security-token, Signature=41e226f997bf917ec6c9b2b14218df0874225f13bb153236c247881e614fafc9", "host": "ec2.us-east-2.amazonaws.com", "x-amz-date": "20200811T065522Z", "x-amz-security-token": TOKEN, @@ -540,7 +540,7 @@ "headers": { "Authorization": "AWS4-HMAC-SHA256 Credential=" + ACCESS_KEY_ID - + "/20200811/us-east-2/sts/aws4_request, SignedHeaders=host;x-amz-date;x-amz-security-token, Signature=73452984e4a880ffdc5c392355733ec3f5ba310d5e0609a89244440cadfe7a7a", + + "/20200811/us-east-2/sts/aws4_request, SignedHeaders=host;x-amz-date;x-amz-security-token, Signature=596aa990b792d763465d73703e684ca273c45536c6d322c31be01a41d02e5b60", "host": "sts.us-east-2.amazonaws.com", "x-amz-date": "20200811T065522Z", "x-amz-security-token": TOKEN, @@ -562,7 +562,7 @@ "headers": { "Authorization": "AWS4-HMAC-SHA256 Credential=" + ACCESS_KEY_ID - + "/20200811/us-east-2/sts/aws4_request, SignedHeaders=host;x-amz-date, Signature=d095ba304919cd0d5570ba8a3787884ee78b860f268ed040ba23831d55536d56", + + "/20200811/us-east-2/sts/aws4_request, SignedHeaders=host;x-amz-date, Signature=9e722e5b7bfa163447e2a14df118b45ebd283c5aea72019bdf921d6e7dc01a9a", "host": "sts.us-east-2.amazonaws.com", "x-amz-date": "20200811T065522Z", }, @@ -592,7 +592,7 @@ "headers": { "Authorization": "AWS4-HMAC-SHA256 Credential=" + ACCESS_KEY_ID - + "/20200811/us-east-2/dynamodb/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-amz-security-token;x-amz-target, Signature=fdaa5b9cc9c86b80fe61eaf504141c0b3523780349120f2bd8145448456e0385", + + "/20200811/us-east-2/dynamodb/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-amz-security-token;x-amz-target, Signature=eb8bce0e63654bba672d4a8acb07e72d69210c1797d56ce024dbbc31beb2a2c7", "host": "dynamodb.us-east-2.amazonaws.com", "x-amz-date": "20200811T065522Z", "Content-Type": "application/x-amz-json-1.0", From a9b8f12db0c3ff4f84939646ba0777d21e68f572 Mon Sep 17 00:00:00 2001 From: con-f-use Date: Fri, 9 Jun 2023 01:44:12 +0200 Subject: [PATCH 3/3] fix: invalid `dev` version identifiers in `setup.py` (#1322) Not ~PEP 440~ distlib compliant. Fixes #1321 --- setup.py | 4 ++-- system_tests/secrets.tar.enc | Bin 10324 -> 10324 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 7e96b5757..01cf80806 100644 --- a/setup.py +++ b/setup.py @@ -31,9 +31,9 @@ ) extras = { - "aiohttp": ["aiohttp >= 3.6.2, < 4.0.0dev", "requests >= 2.20.0, < 3.0.0dev"], + "aiohttp": ["aiohttp >= 3.6.2, < 4.0.0.dev0", "requests >= 2.20.0, < 3.0.0.dev0"], "pyopenssl": ["pyopenssl>=20.0.0", "cryptography>=38.0.3"], - "requests": "requests >= 2.20.0, < 3.0.0dev", + "requests": "requests >= 2.20.0, < 3.0.0.dev0", "reauth": "pyu2f>=0.1.5", # Enterprise cert only works for OpenSSL 1.1.1. Newer versions of these # dependencies are built with OpenSSL 3.0 so we need to fix the version. diff --git a/system_tests/secrets.tar.enc b/system_tests/secrets.tar.enc index efa90e0ea2da034b4fc538ba64aa8f4c2e9c9674..8740e8ffe97261ec908ae628a44ed57af78bf610 100644 GIT binary patch literal 10324 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 literal 10324 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