diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretReader.java b/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretReader.java index cd4953f0da2ed712eebe3172d03cdbcbe2af2083..f82e19b6e5b3d9854da2f5322cbb1f4d70c1a49e 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretReader.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/UserSecretReader.java @@ -24,6 +24,9 @@ package de.ozgcloud.operator.keycloak.user; +import java.io.IOException; + +import org.keycloak.common.util.Base64; import org.springframework.stereotype.Component; import io.fabric8.kubernetes.api.model.Secret; @@ -32,6 +35,15 @@ import io.fabric8.kubernetes.api.model.Secret; class UserSecretReader { public String getPasswortFromSecret(Secret secret) { - return secret.getStringData().get(UserSecretBuilder.SECRET_PASSWORD_FIELD); + String encodedPassword = secret.getData().get(UserSecretBuilder.SECRET_PASSWORD_FIELD); + return decode(encodedPassword, secret); + } + + private String decode(String encodedPassword, Secret secret) { + try { + return new String(Base64.decode(encodedPassword)); + } catch (IOException e) { + throw new RuntimeException("Could not decode content from secret (base64) for secret " + secret.getFullResourceName()); + } } } diff --git a/src/test/java/de/ozgcloud/operator/keycloak/user/UserSecretReaderTest.java b/src/test/java/de/ozgcloud/operator/keycloak/user/UserSecretReaderTest.java index 80053a5b7b3123797b0a5bf5ea64431801ba351c..96079affc852906af61e14341b52b7ade8a4b813 100644 --- a/src/test/java/de/ozgcloud/operator/keycloak/user/UserSecretReaderTest.java +++ b/src/test/java/de/ozgcloud/operator/keycloak/user/UserSecretReaderTest.java @@ -26,6 +26,7 @@ package de.ozgcloud.operator.keycloak.user; import static org.assertj.core.api.Assertions.*; +import java.util.Base64; import java.util.Map; import org.junit.jupiter.api.Test; @@ -49,6 +50,13 @@ class UserSecretReaderTest { } private Secret buildSecret() { - return new SecretBuilder().addToStringData(Map.of(UserSecretBuilder.SECRET_PASSWORD_FIELD, SecretTestFactory.PASSWORD)).build(); + return new SecretBuilder() + .addToData(Map.of(UserSecretBuilder.SECRET_PASSWORD_FIELD, + encodeStringBase64(SecretTestFactory.PASSWORD))) + .build(); + } + + private String encodeStringBase64(String string) { + return Base64.getEncoder().encodeToString(string.getBytes()); } }