Skip to content

Commit 17884ab

Browse files
committed
Tried to use impersonated_credentials.from_impersonated_account_info in id_token.py
1 parent 8baeee9 commit 17884ab

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

google/auth/impersonated_credentials.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -434,12 +434,12 @@ def _source_credentials_from_impersonated_account_info(cls, info):
434434
source_credentials_type = source_credentials_info.get("type")
435435
if source_credentials_type == _AUTHORIZED_USER_TYPE:
436436
from google.oauth2 import credentials
437-
source_credentials, _ = credentials.Credentials.from_authorized_user_info(
438-
info
437+
source_credentials = credentials.Credentials.from_authorized_user_info(
438+
source_credentials_info
439439
)
440440
elif source_credentials_type == _SERVICE_ACCOUNT_TYPE:
441441
from google.oauth2 import service_account
442-
source_credentials, _ = service_account.Credentials.from_service_account_info(
442+
source_credentials = service_account.Credentials.from_service_account_info(
443443
source_credentials_info
444444
)
445445
elif source_credentials_type == _EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE:

google/oauth2/credentials.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,8 @@ def from_authorized_user_info(cls, info, scopes=None):
457457
Raises:
458458
ValueError: If the info is not in the expected format.
459459
"""
460+
print("NTRACE: from_authorizer_user_info")
461+
print(info)
460462
keys_needed = set(("refresh_token", "client_id", "client_secret"))
461463
missing = keys_needed.difference(info.keys())
462464

google/oauth2/id_token.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,19 @@ def fetch_id_token_credentials(audience, request=None):
284284
return service_account.IDTokenCredentials.from_service_account_info(
285285
info, target_audience=audience
286286
)
287+
elif info.get("type") == "impersonated_service_account":
288+
from google.auth import impersonated_credentials
289+
290+
target_credentials = impersonated_credentials.Credentials.from_impersonated_account_info(
291+
info
292+
)
293+
294+
id_creds = impersonated_credentials.IDTokenCredentials(
295+
target_credentials=target_credentials,
296+
target_audience=audience,
297+
include_email=True,
298+
)
299+
return id_creds
287300
except ValueError as caught_exc:
288301
new_exc = exceptions.DefaultCredentialsError(
289302
"GOOGLE_APPLICATION_CREDENTIALS is not valid service account credentials.",

0 commit comments

Comments
 (0)