Skip to content

Commit 6d8b304

Browse files
revert: revert experimental GDCH support (#1022) (#1042)
This reverts commit 5367aac881fdba814f66e4d6d5f59fccecc12547.
1 parent bc45485 commit 6d8b304

File tree

7 files changed

+20
-578
lines changed

7 files changed

+20
-578
lines changed

packages/google-auth/google/auth/_default.py

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,11 @@
3636
_SERVICE_ACCOUNT_TYPE = "service_account"
3737
_EXTERNAL_ACCOUNT_TYPE = "external_account"
3838
_IMPERSONATED_SERVICE_ACCOUNT_TYPE = "impersonated_service_account"
39-
_GDCH_SERVICE_ACCOUNT_TYPE = "gdch_service_account"
4039
_VALID_TYPES = (
4140
_AUTHORIZED_USER_TYPE,
4241
_SERVICE_ACCOUNT_TYPE,
4342
_EXTERNAL_ACCOUNT_TYPE,
4443
_IMPERSONATED_SERVICE_ACCOUNT_TYPE,
45-
_GDCH_SERVICE_ACCOUNT_TYPE,
4644
)
4745

4846
# Help message when no credentials can be found.
@@ -136,8 +134,6 @@ def load_credentials_from_file(
136134
def _load_credentials_from_info(
137135
filename, info, scopes, default_scopes, quota_project_id, request
138136
):
139-
from google.auth.credentials import CredentialsWithQuotaProject
140-
141137
credential_type = info.get("type")
142138

143139
if credential_type == _AUTHORIZED_USER_TYPE:
@@ -162,17 +158,14 @@ def _load_credentials_from_info(
162158
credentials, project_id = _get_impersonated_service_account_credentials(
163159
filename, info, scopes
164160
)
165-
elif credential_type == _GDCH_SERVICE_ACCOUNT_TYPE:
166-
credentials, project_id = _get_gdch_service_account_credentials(info)
167161
else:
168162
raise exceptions.DefaultCredentialsError(
169163
"The file {file} does not have a valid type. "
170164
"Type is {type}, expected one of {valid_types}.".format(
171165
file=filename, type=credential_type, valid_types=_VALID_TYPES
172166
)
173167
)
174-
if isinstance(credentials, CredentialsWithQuotaProject):
175-
credentials = _apply_quota_project_id(credentials, quota_project_id)
168+
credentials = _apply_quota_project_id(credentials, quota_project_id)
176169
return credentials, project_id
177170

178171

@@ -428,36 +421,6 @@ def _get_impersonated_service_account_credentials(filename, info, scopes):
428421
return credentials, None
429422

430423

431-
def _get_gdch_service_account_credentials(info):
432-
from google.oauth2 import gdch_credentials
433-
434-
k8s_ca_cert_path = info.get("k8s_ca_cert_path")
435-
k8s_cert_path = info.get("k8s_cert_path")
436-
k8s_key_path = info.get("k8s_key_path")
437-
k8s_token_endpoint = info.get("k8s_token_endpoint")
438-
ais_ca_cert_path = info.get("ais_ca_cert_path")
439-
ais_token_endpoint = info.get("ais_token_endpoint")
440-
441-
format_version = info.get("format_version")
442-
if format_version != "v1":
443-
raise exceptions.DefaultCredentialsError(
444-
"format_version is not provided or unsupported. Supported version is: v1"
445-
)
446-
447-
return (
448-
gdch_credentials.ServiceAccountCredentials(
449-
k8s_ca_cert_path,
450-
k8s_cert_path,
451-
k8s_key_path,
452-
k8s_token_endpoint,
453-
ais_ca_cert_path,
454-
ais_token_endpoint,
455-
None,
456-
),
457-
None,
458-
)
459-
460-
461424
def _apply_quota_project_id(credentials, quota_project_id):
462425
if quota_project_id:
463426
credentials = credentials.with_quota_project(quota_project_id)
@@ -493,11 +456,6 @@ def default(scopes=None, request=None, quota_project_id=None, default_scopes=Non
493456
endpoint.
494457
The project ID returned in this case is the one corresponding to the
495458
underlying workload identity pool resource if determinable.
496-
497-
If the environment variable is set to the path of a valid GDCH service
498-
account JSON file (`Google Distributed Cloud Hosted`_), then a GDCH
499-
credential will be returned. The project ID returned is None unless it
500-
is set via `GOOGLE_CLOUD_PROJECT` environment variable.
501459
2. If the `Google Cloud SDK`_ is installed and has application default
502460
credentials set they are loaded and returned.
503461
@@ -532,8 +490,6 @@ def default(scopes=None, request=None, quota_project_id=None, default_scopes=Non
532490
.. _Metadata Service: https://cloud.google.com/compute/docs\
533491
/storing-retrieving-metadata
534492
.. _Cloud Run: https://cloud.google.com/run
535-
.. _Google Distributed Cloud Hosted: https://cloud.google.com/blog/topics\
536-
/hybrid-cloud/announcing-google-distributed-cloud-edge-and-hosted
537493
538494
Example::
539495

packages/google-auth/google/oauth2/_client.py

Lines changed: 18 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,11 @@ def _handle_error_response(response_data):
4444
"""Translates an error response into an exception.
4545
4646
Args:
47-
response_data (Mapping | str): The decoded response data.
47+
response_data (Mapping): The decoded response data.
4848
4949
Raises:
5050
google.auth.exceptions.RefreshError: The errors contained in response_data.
5151
"""
52-
if isinstance(response_data, six.string_types):
53-
raise exceptions.RefreshError(response_data)
5452
try:
5553
error_details = "{}: {}".format(
5654
response_data["error"], response_data.get("error_description")
@@ -81,13 +79,7 @@ def _parse_expiry(response_data):
8179

8280

8381
def _token_endpoint_request_no_throw(
84-
request,
85-
token_uri,
86-
body,
87-
access_token=None,
88-
use_json=False,
89-
expected_status_code=http_client.OK,
90-
**kwargs
82+
request, token_uri, body, access_token=None, use_json=False
9183
):
9284
"""Makes a request to the OAuth 2.0 authorization server's token endpoint.
9385
This function doesn't throw on response errors.
@@ -101,16 +93,6 @@ def _token_endpoint_request_no_throw(
10193
access_token (Optional(str)): The access token needed to make the request.
10294
use_json (Optional(bool)): Use urlencoded format or json format for the
10395
content type. The default value is False.
104-
expected_status_code (Optional(int)): The expected the status code of
105-
the token response. The default value is 200. We may expect other
106-
status code like 201 for GDCH credentials.
107-
kwargs: Additional arguments passed on to the request method. The
108-
kwargs will be passed to `requests.request` method, see:
109-
https://docs.python-requests.org/en/latest/api/#requests.request.
110-
For example, you can use `cert=("cert_pem_path", "key_pem_path")`
111-
to set up client side SSL certificate, and use
112-
`verify="ca_bundle_path"` to set up the CA certificates for sever
113-
side SSL certificate verification.
11496
11597
Returns:
11698
Tuple(bool, Mapping[str, str]): A boolean indicating if the request is
@@ -130,46 +112,32 @@ def _token_endpoint_request_no_throw(
130112
# retry to fetch token for maximum of two times if any internal failure
131113
# occurs.
132114
while True:
133-
response = request(
134-
method="POST", url=token_uri, headers=headers, body=body, **kwargs
135-
)
115+
response = request(method="POST", url=token_uri, headers=headers, body=body)
136116
response_body = (
137117
response.data.decode("utf-8")
138118
if hasattr(response.data, "decode")
139119
else response.data
140120
)
121+
response_data = json.loads(response_body)
141122

142-
if response.status == expected_status_code:
143-
# response_body should be a JSON
144-
response_data = json.loads(response_body)
123+
if response.status == http_client.OK:
145124
break
146125
else:
147-
# For a failed response, response_body could be a string
148-
try:
149-
response_data = json.loads(response_body)
150-
error_desc = response_data.get("error_description") or ""
151-
error_code = response_data.get("error") or ""
152-
if (
153-
any(e == "internal_failure" for e in (error_code, error_desc))
154-
and retry < 1
155-
):
156-
retry += 1
157-
continue
158-
except ValueError:
159-
response_data = response_body
160-
return False, response_data
161-
162-
return response.status == expected_status_code, response_data
126+
error_desc = response_data.get("error_description") or ""
127+
error_code = response_data.get("error") or ""
128+
if (
129+
any(e == "internal_failure" for e in (error_code, error_desc))
130+
and retry < 1
131+
):
132+
retry += 1
133+
continue
134+
return response.status == http_client.OK, response_data
135+
136+
return response.status == http_client.OK, response_data
163137

164138

165139
def _token_endpoint_request(
166-
request,
167-
token_uri,
168-
body,
169-
access_token=None,
170-
use_json=False,
171-
expected_status_code=http_client.OK,
172-
**kwargs
140+
request, token_uri, body, access_token=None, use_json=False
173141
):
174142
"""Makes a request to the OAuth 2.0 authorization server's token endpoint.
175143
@@ -182,16 +150,6 @@ def _token_endpoint_request(
182150
access_token (Optional(str)): The access token needed to make the request.
183151
use_json (Optional(bool)): Use urlencoded format or json format for the
184152
content type. The default value is False.
185-
expected_status_code (Optional(int)): The expected the status code of
186-
the token response. The default value is 200. We may expect other
187-
status code like 201 for GDCH credentials.
188-
kwargs: Additional arguments passed on to the request method. The
189-
kwargs will be passed to `requests.request` method, see:
190-
https://docs.python-requests.org/en/latest/api/#requests.request.
191-
For example, you can use `cert=("cert_pem_path", "key_pem_path")`
192-
to set up client side SSL certificate, and use
193-
`verify="ca_bundle_path"` to set up the CA certificates for sever
194-
side SSL certificate verification.
195153
196154
Returns:
197155
Mapping[str, str]: The JSON-decoded response data.
@@ -201,13 +159,7 @@ def _token_endpoint_request(
201159
an error.
202160
"""
203161
response_status_ok, response_data = _token_endpoint_request_no_throw(
204-
request,
205-
token_uri,
206-
body,
207-
access_token=access_token,
208-
use_json=use_json,
209-
expected_status_code=expected_status_code,
210-
**kwargs
162+
request, token_uri, body, access_token=access_token, use_json=use_json
211163
)
212164
if not response_status_ok:
213165
_handle_error_response(response_data)

0 commit comments

Comments
 (0)