Skip to content

Commit 4ec7c99

Browse files
authored
fix: updated OpenId access and refresh token persistend in in-memory config (5888)
update updated OpenId access and refresh token in memory config --- fix style --- add test case --- fix comments --- fix NPE
1 parent 6f63909 commit 4ec7c99

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

Diff for: kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/utils/OpenIDConnectionUtils.java

+13-6
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package io.fabric8.kubernetes.client.utils;
1717

1818
import io.fabric8.kubernetes.api.model.AuthInfo;
19+
import io.fabric8.kubernetes.api.model.AuthProviderConfig;
1920
import io.fabric8.kubernetes.api.model.NamedAuthInfo;
2021
import io.fabric8.kubernetes.api.model.NamedContext;
2122
import io.fabric8.kubernetes.client.Config;
@@ -37,10 +38,7 @@
3738
import java.security.cert.CertificateException;
3839
import java.security.spec.InvalidKeySpecException;
3940
import java.time.Instant;
40-
import java.util.Base64;
41-
import java.util.Collections;
42-
import java.util.LinkedHashMap;
43-
import java.util.Map;
41+
import java.util.*;
4442
import java.util.concurrent.CompletableFuture;
4543
import java.util.function.Consumer;
4644

@@ -242,6 +240,12 @@ static boolean persistKubeConfigWithUpdatedToken(Config currentConfig, Map<Strin
242240
*/
243241
public static boolean persistKubeConfigWithUpdatedAuthInfo(Config currentConfig, Consumer<AuthInfo> updateAction)
244242
throws IOException {
243+
AuthInfo authInfo = new AuthInfo();
244+
authInfo.setAuthProvider(new AuthProviderConfig(new HashMap<>(2), currentConfig.getAuthProvider().getName()));
245+
updateAction.accept(authInfo);
246+
//update new auth info to in-memory config
247+
currentConfig.getAuthProvider().getConfig().putAll(authInfo.getAuthProvider().getConfig());
248+
245249
if (currentConfig.getFile() == null) {
246250
return false;
247251
}
@@ -259,10 +263,13 @@ public static boolean persistKubeConfigWithUpdatedAuthInfo(Config currentConfig,
259263
config.getUsers().add(result);
260264
return result;
261265
});
266+
//update new auth info to kubeConfig
262267
if (namedAuthInfo.getUser() == null) {
263-
namedAuthInfo.setUser(new AuthInfo());
268+
namedAuthInfo.setUser(authInfo);
269+
} else {
270+
Optional.ofNullable(authInfo.getToken()).ifPresent(t -> namedAuthInfo.getUser().setToken(t));
271+
namedAuthInfo.getUser().getAuthProvider().getConfig().putAll(authInfo.getAuthProvider().getConfig());
264272
}
265-
updateAction.accept(namedAuthInfo.getUser());
266273
// Persist changes to KUBECONFIG
267274
KubeConfigUtils.persistKubeConfigIntoFile(config, currentConfig.getFile().getAbsolutePath());
268275
return true;

Diff for: kubernetes-client-api/src/test/java/io/fabric8/kubernetes/client/utils/OpenIDConnectionUtilsTest.java

+10-4
Original file line numberDiff line numberDiff line change
@@ -183,10 +183,16 @@ void testPersistKubeConfigWithUpdatedToken() throws IOException {
183183
assertNotNull(currentNamedContext);
184184
int currentUserIndex = KubeConfigUtils.getNamedUserIndexFromConfig(config, currentNamedContext.getContext().getUser());
185185
assertTrue(currentUserIndex > 0);
186-
Map<String, String> authProviderConfig = config.getUsers().get(currentUserIndex).getUser().getAuthProvider().getConfig();
187-
assertFalse(authProviderConfig.isEmpty());
188-
assertEquals("id-token-updated", authProviderConfig.get(ID_TOKEN_KUBECONFIG));
189-
assertEquals("refresh-token-updated", authProviderConfig.get(REFRESH_TOKEN_KUBECONFIG));
186+
Map<String, String> authProviderConfigInFile = config.getUsers().get(currentUserIndex).getUser().getAuthProvider()
187+
.getConfig();
188+
assertFalse(authProviderConfigInFile.isEmpty());
189+
Map<String, String> authProviderConfigInMemory = theConfig.getAuthProvider().getConfig();
190+
//auth info should be updated in memory
191+
assertEquals("id-token-updated", authProviderConfigInMemory.get(ID_TOKEN_KUBECONFIG));
192+
assertEquals("refresh-token-updated", authProviderConfigInMemory.get(REFRESH_TOKEN_KUBECONFIG));
193+
//auth info should be updated in kubeConfig
194+
assertEquals("id-token-updated", authProviderConfigInFile.get(ID_TOKEN_KUBECONFIG));
195+
assertEquals("refresh-token-updated", authProviderConfigInFile.get(REFRESH_TOKEN_KUBECONFIG));
190196
}
191197

192198
@Test

0 commit comments

Comments
 (0)