Skip to content

Commit 0a4363a

Browse files
fix: revert templates for iam endpoints (#1614)
* fix: revert templates for iam endpoints * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * tests update --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent 168fcc6 commit 0a4363a

File tree

4 files changed

+23
-19
lines changed

4 files changed

+23
-19
lines changed

google/auth/iam.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
from google.auth import _exponential_backoff
2727
from google.auth import _helpers
28+
from google.auth import credentials
2829
from google.auth import crypt
2930
from google.auth import exceptions
3031

@@ -38,16 +39,18 @@
3839
_IAM_SCOPE = ["https://www.googleapis.com/auth/iam"]
3940

4041
_IAM_ENDPOINT = (
41-
"https://iamcredentials.{}/v1/projects/-"
42+
"https://iamcredentials.googleapis.com/v1/projects/-"
4243
+ "/serviceAccounts/{}:generateAccessToken"
4344
)
4445

4546
_IAM_SIGN_ENDPOINT = (
46-
"https://iamcredentials.{}/v1/projects/-" + "/serviceAccounts/{}:signBlob"
47+
"https://iamcredentials.googleapis.com/v1/projects/-"
48+
+ "/serviceAccounts/{}:signBlob"
4749
)
4850

4951
_IAM_IDTOKEN_ENDPOINT = (
50-
"https://iamcredentials.{}/v1/" + "projects/-/serviceAccounts/{}:generateIdToken"
52+
"https://iamcredentials.googleapis.com/v1/"
53+
+ "projects/-/serviceAccounts/{}:generateIdToken"
5154
)
5255

5356

@@ -87,9 +90,9 @@ def _make_signing_request(self, message):
8790
message = _helpers.to_bytes(message)
8891

8992
method = "POST"
90-
url = _IAM_SIGN_ENDPOINT.format(
91-
self._credentials.universe_domain, self._service_account_email
92-
)
93+
url = _IAM_SIGN_ENDPOINT.replace(
94+
credentials.DEFAULT_UNIVERSE_DOMAIN, self._credentials.universe_domain
95+
).format(self._service_account_email)
9396
headers = {"Content-Type": "application/json"}
9497
body = json.dumps(
9598
{"payload": base64.b64encode(message).decode("utf-8")}

google/auth/impersonated_credentials.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ def _make_iam_token_request(
6767
`iamcredentials.googleapis.com` is not enabled or the
6868
`Service Account Token Creator` is not assigned
6969
"""
70-
iam_endpoint = iam_endpoint_override or iam._IAM_ENDPOINT.format(
71-
universe_domain, principal
72-
)
70+
iam_endpoint = iam_endpoint_override or iam._IAM_ENDPOINT.replace(
71+
credentials.DEFAULT_UNIVERSE_DOMAIN, universe_domain
72+
).format(principal)
7373

7474
body = json.dumps(body).encode("utf-8")
7575

@@ -282,9 +282,9 @@ def _update_token(self, request):
282282
def sign_bytes(self, message):
283283
from google.auth.transport.requests import AuthorizedSession
284284

285-
iam_sign_endpoint = iam._IAM_SIGN_ENDPOINT.format(
286-
self.universe_domain, self._target_principal
287-
)
285+
iam_sign_endpoint = iam._IAM_SIGN_ENDPOINT.replace(
286+
credentials.DEFAULT_UNIVERSE_DOMAIN, self.universe_domain
287+
).format(self._target_principal)
288288

289289
body = {
290290
"payload": base64.b64encode(message).decode("utf-8"),
@@ -434,10 +434,10 @@ def with_quota_project(self, quota_project_id):
434434
def refresh(self, request):
435435
from google.auth.transport.requests import AuthorizedSession
436436

437-
iam_sign_endpoint = iam._IAM_IDTOKEN_ENDPOINT.format(
437+
iam_sign_endpoint = iam._IAM_IDTOKEN_ENDPOINT.replace(
438+
credentials.DEFAULT_UNIVERSE_DOMAIN,
438439
self._target_credentials.universe_domain,
439-
self._target_credentials.signer_email,
440-
)
440+
).format(self._target_credentials.signer_email)
441441

442442
body = {
443443
"audience": self._target_audience,

google/oauth2/_client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
from google.auth import _exponential_backoff
3232
from google.auth import _helpers
33+
from google.auth import credentials
3334
from google.auth import exceptions
3435
from google.auth import jwt
3536
from google.auth import metrics
@@ -344,7 +345,9 @@ def call_iam_generate_id_token_endpoint(
344345

345346
response_data = _token_endpoint_request(
346347
request,
347-
iam_id_token_endpoint.format(universe_domain, signer_email),
348+
iam_id_token_endpoint.replace(
349+
credentials.DEFAULT_UNIVERSE_DOMAIN, universe_domain
350+
).format(signer_email),
348351
body,
349352
access_token=access_token,
350353
use_json=True,

tests/oauth2/test_service_account.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,6 @@ def test_refresh_iam_flow(self, call_iam_generate_id_token_endpoint):
798798
assert target_audience == "https://example.com"
799799
decoded_access_token = jwt.decode(access_token, verify=False)
800800
assert decoded_access_token["scope"] == "https://www.googleapis.com/auth/iam"
801-
assert universe_domain == "googleapis.com"
802801

803802
@mock.patch(
804803
"google.oauth2._client.call_iam_generate_id_token_endpoint", autospec=True
@@ -818,13 +817,12 @@ def test_refresh_iam_flow_non_gdu(self, call_iam_generate_id_token_endpoint):
818817
assert req == request
819818
assert (
820819
iam_endpoint
821-
== "https://iamcredentials.{}/v1/projects/-/serviceAccounts/{}:generateIdToken"
820+
== "https://iamcredentials.fake-universe/v1/projects/-/serviceAccounts/{}:generateIdToken"
822821
)
823822
assert signer_email == "service-account@example.com"
824823
assert target_audience == "https://example.com"
825824
decoded_access_token = jwt.decode(access_token, verify=False)
826825
assert decoded_access_token["scope"] == "https://www.googleapis.com/auth/iam"
827-
assert universe_domain == "fake-universe"
828826

829827
@mock.patch("google.oauth2._client.id_token_jwt_grant", autospec=True)
830828
def test_before_request_refreshes(self, id_token_jwt_grant):

0 commit comments

Comments
 (0)