Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

Commit 4878c2a

Browse files
committed
Refactor auth-provider code paths a little. Add Azure support.
1 parent 595ee0d commit 4878c2a

File tree

2 files changed

+28
-20
lines changed

2 files changed

+28
-20
lines changed

config/kube_config.py

+23-15
Original file line numberDiff line numberDiff line change
@@ -178,23 +178,38 @@ def _load_authentication(self):
178178
"""
179179
if not self._user:
180180
return
181-
if self._load_gcp_token():
181+
if self._load_auth_provider_token():
182182
return
183183
if self._load_user_token():
184184
return
185-
if self._load_oid_token():
186-
return
187185
self._load_user_pass_token()
188186

189-
def _load_gcp_token(self):
187+
188+
189+
def _load_auth_provider_token(self):
190190
if 'auth-provider' not in self._user:
191191
return
192192
provider = self._user['auth-provider']
193193
if 'name' not in provider:
194194
return
195-
if provider['name'] != 'gcp':
195+
if provider['name'] == 'gcp':
196+
return self._load_gcp_token(provider)
197+
if provider['name'] == 'azure':
198+
return self._load_azure_token(provider)
199+
if provider['name'] == 'oidc':
200+
return self._load_oid_token(provider)
201+
202+
def _load_azure_token(self, provider):
203+
if 'config' not in provider:
204+
return
205+
if 'access-token' not in provider['config']:
196206
return
207+
# TODO: Refresh token here...
208+
self.token = 'Bearer %s' % provider['config']['access-token']
209+
return self.token
210+
197211

212+
def _load_gcp_token(self, provider):
198213
if (('config' not in provider) or
199214
('access-token' not in provider['config']) or
200215
('expiry' in provider['config'] and
@@ -215,17 +230,10 @@ def _refresh_gcp_token(self):
215230
if self._config_persister:
216231
self._config_persister(self._config.value)
217232

218-
def _load_oid_token(self):
219-
if 'auth-provider' not in self._user:
220-
return
221-
provider = self._user['auth-provider']
222-
223-
if 'name' not in provider or 'config' not in provider:
233+
def _load_oid_token(self, provider):
234+
if 'config' not in provider:
224235
return
225-
226-
if provider['name'] != 'oidc':
227-
return
228-
236+
229237
parts = provider['config']['id-token'].split('.')
230238

231239
if len(parts) != 3: # Not a valid JWT

config/kube_config_test.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,7 @@ def test_load_gcp_token_no_refresh(self):
618618
active_context="gcp",
619619
get_google_credentials=lambda: _raise_exception(
620620
"SHOULD NOT BE CALLED"))
621-
self.assertTrue(loader._load_gcp_token())
621+
self.assertTrue(loader._load_auth_provider_token())
622622
self.assertEqual(BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
623623
loader.token)
624624

@@ -632,7 +632,7 @@ def cred(): return None
632632
active_context="expired_gcp",
633633
get_google_credentials=lambda: cred)
634634
original_expiry = _get_expiry(loader)
635-
self.assertTrue(loader._load_gcp_token())
635+
self.assertTrue(loader._load_auth_provider_token())
636636
new_expiry = _get_expiry(loader)
637637
# assert that the configs expiry actually updates
638638
self.assertTrue(new_expiry > original_expiry)
@@ -644,7 +644,7 @@ def test_oidc_no_refresh(self):
644644
config_dict=self.TEST_KUBE_CONFIG,
645645
active_context="oidc",
646646
)
647-
self.assertTrue(loader._load_oid_token())
647+
self.assertTrue(loader._load_auth_provider_token())
648648
self.assertEqual(TEST_OIDC_TOKEN, loader.token)
649649

650650
@mock.patch('kubernetes.config.kube_config.OAuth2Session.refresh_token')
@@ -669,7 +669,7 @@ def test_oidc_with_refresh(self, mock_ApiClient, mock_OAuth2Session):
669669
config_dict=self.TEST_KUBE_CONFIG,
670670
active_context="expired_oidc",
671671
)
672-
self.assertTrue(loader._load_oid_token())
672+
self.assertTrue(loader._load_auth_provider_token())
673673
self.assertEqual("Bearer abc123", loader.token)
674674

675675
@mock.patch('kubernetes.config.kube_config.OAuth2Session.refresh_token')
@@ -695,7 +695,7 @@ def test_oidc_with_refresh_nocert(
695695
config_dict=self.TEST_KUBE_CONFIG,
696696
active_context="expired_oidc_nocert",
697697
)
698-
self.assertTrue(loader._load_oid_token())
698+
self.assertTrue(loader._load_auth_provider_token())
699699
self.assertEqual("Bearer abc123", loader.token)
700700

701701
def test_user_pass(self):

0 commit comments

Comments
 (0)