From 875796cbace847797898bc506eac188edbaa3192 Mon Sep 17 00:00:00 2001 From: sai-sunder-s <4540365+sai-sunder-s@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:34:10 +0000 Subject: [PATCH] feat: Support External Account Authorized User as a Source Credential for impersonated credentials in ADC (#1608) * feat: Support External Account Authorized User as a Source Credential for impersonated credentials in ADC * formatting --- google/auth/_default.py | 4 ++++ system_tests/secrets.tar.enc | Bin 10324 -> 10324 bytes ...ternal_account_authorized_user_source.json | 16 ++++++++++++++++ tests/test__default.py | 16 ++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 tests/data/impersonated_service_account_external_account_authorized_user_source.json diff --git a/google/auth/_default.py b/google/auth/_default.py index 7bbcf8591..cdc8b7a64 100644 --- a/google/auth/_default.py +++ b/google/auth/_default.py @@ -472,6 +472,10 @@ def _get_impersonated_service_account_credentials(filename, info, scopes): source_credentials, _ = _get_service_account_credentials( filename, source_credentials_info ) + elif source_credentials_type == _EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE: + source_credentials, _ = _get_external_account_authorized_user_credentials( + filename, source_credentials_info + ) else: raise exceptions.InvalidType( "source credential of type {} is not supported.".format( diff --git a/system_tests/secrets.tar.enc b/system_tests/secrets.tar.enc index 4a6a25883c48ae15a2b07b3dc239fc812835aa75..b2fb69b4adb68560ddbc8cc0f1bc33aaa51068c7 100644 GIT binary patch literal 10324 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 literal 10324 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 diff --git a/tests/data/impersonated_service_account_external_account_authorized_user_source.json b/tests/data/impersonated_service_account_external_account_authorized_user_source.json new file mode 100644 index 000000000..0bc44c13a --- /dev/null +++ b/tests/data/impersonated_service_account_external_account_authorized_user_source.json @@ -0,0 +1,16 @@ +{ + "delegates": [ + "service-account-delegate@example.com" + ], + "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/service-account-target@example.com:generateAccessToken", + "source_credentials": { + "type": "external_account_authorized_user", + "audience": "//iam.googleapis.com/locations/global/workforcePools/$WORKFORCE_POOL_ID/providers/$PROVIDER_ID", + "refresh_token": "refreshToken", + "token_url": "https://sts.googleapis.com/v1/oauth/token", + "token_info_url": "https://sts.googleapis.com/v1/instrospect", + "client_id": "clientId", + "client_secret": "clientSecret" + }, + "type": "impersonated_service_account" +} \ No newline at end of file diff --git a/tests/test__default.py b/tests/test__default.py index d17c747af..e42b4dd94 100644 --- a/tests/test__default.py +++ b/tests/test__default.py @@ -153,6 +153,11 @@ DATA_DIR, "impersonated_service_account_service_account_source.json" ) +IMPERSONATED_SERVICE_ACCOUNT_EXTERNAL_ACCOUNT_AUTHORIZED_USER_SOURCE_FILE = os.path.join( + DATA_DIR, + "impersonated_service_account_external_account_authorized_user_source.json", +) + EXTERNAL_ACCOUNT_AUTHORIZED_USER_FILE = os.path.join( DATA_DIR, "external_account_authorized_user.json" ) @@ -365,6 +370,17 @@ def test_load_credentials_from_file_impersonated_with_service_account_source(): assert not credentials._quota_project_id +def test_load_credentials_from_file_impersonated_with_external_account_authorized_user_source(): + credentials, _ = _default.load_credentials_from_file( + IMPERSONATED_SERVICE_ACCOUNT_EXTERNAL_ACCOUNT_AUTHORIZED_USER_SOURCE_FILE + ) + assert isinstance(credentials, impersonated_credentials.Credentials) + assert isinstance( + credentials._source_credentials, external_account_authorized_user.Credentials + ) + assert not credentials._quota_project_id + + def test_load_credentials_from_file_impersonated_passing_quota_project(): credentials, _ = _default.load_credentials_from_file( IMPERSONATED_SERVICE_ACCOUNT_SERVICE_ACCOUNT_SOURCE_FILE,