Skip to content

Commit

Permalink
Merge pull request #33 from jenkinsci/add_secret_interface
Browse files Browse the repository at this point in the history
have *KubernetesAuth able to directly access Secret instead of String
  • Loading branch information
maxlaverse committed May 24, 2021
2 parents dfe5187 + c58bc65 commit d9a821a
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 25 deletions.
Expand Up @@ -17,31 +17,34 @@ public KubernetesAuthCertificate(String certificate, Secret key) {
this.key = key;
}

@Deprecated
public KubernetesAuthCertificate(String certificate, String key) {
this.certificate = certificate;
this.key = Secret.fromString(key);
this(certificate, Secret.fromString(key));
}

@Override
public AuthInfoBuilder decorate(AuthInfoBuilder builder, KubernetesAuthConfig config) {
return builder
.withClientCertificateData(Utils.encodeBase64(certificate))
.withClientKeyData(Utils.encodeBase64(getKey()));
.withClientKeyData(Utils.encodeBase64(key.getPlainText()));
}

@Override
public ConfigBuilder decorate(ConfigBuilder builder, KubernetesAuthConfig config) {
return builder
.withClientCertData(Utils.encodeBase64(certificate))
.withClientKeyData(Utils.encodeBase64(getKey()));
.withClientKeyData(Utils.encodeBase64(key.getPlainText()));
}

public String getCertificate() {
return certificate;
}

@Deprecated
public String getKey() {
return key.getPlainText();
}

public Secret getKeySecret() {
return key;
}
}
Expand Up @@ -9,38 +9,31 @@
import org.jenkinsci.plugins.kubernetes.credentials.Utils;

import javax.annotation.Nonnull;
import java.security.Key;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.*;
import java.security.cert.CertificateEncodingException;

/**
* Kubernetes authentication using certificate and private key obtained from a keystore with a passphrase.
*/
public class KubernetesAuthKeystore extends AbstractKubernetesAuth implements KubernetesAuth {
private KeyStore keyStore;

private final Secret passPhrase;
private KeyStore keyStore;

public KubernetesAuthKeystore(@Nonnull KeyStore keyStore, Secret passPhrase) {
this.keyStore = keyStore;
this.passPhrase = passPhrase;
}

@Deprecated
public KubernetesAuthKeystore(@Nonnull KeyStore keyStore, String passPhrase) {
this.keyStore = keyStore;
this.passPhrase = Secret.fromString(passPhrase);
this(keyStore, Secret.fromString(passPhrase));
}

@Override
public AuthInfoBuilder decorate(AuthInfoBuilder builder, KubernetesAuthConfig config) throws KubernetesAuthException {
try {
String alias = keyStore.aliases().nextElement();
// Get private key using passphrase
Key key = keyStore.getKey(alias, getPassPhrase().toCharArray());
Key key = keyStore.getKey(alias, passPhrase.getPlainText().toCharArray());
return builder
.withClientCertificateData(Utils.encodeCertificate(keyStore.getCertificate(alias)))
.withClientKeyData(Utils.encodeKey(key));
Expand All @@ -54,7 +47,7 @@ public ConfigBuilder decorate(ConfigBuilder builder, KubernetesAuthConfig config
try {
String alias = keyStore.aliases().nextElement();
// Get private key using passphrase
Key key = keyStore.getKey(alias, getPassPhrase().toCharArray());
Key key = keyStore.getKey(alias, passPhrase.getPlainText().toCharArray());
return builder
.withClientCertData(Utils.encodeCertificate(keyStore.getCertificate(alias)))
.withClientKeyData(Utils.encodeKey(key));
Expand All @@ -67,7 +60,12 @@ public KeyStore getKeyStore() {
return keyStore;
}

@Deprecated
public String getPassPhrase() {
return passPhrase.getPlainText();
}

public Secret getPassPhraseSecret() {
return passPhrase;
}
}
Expand Up @@ -44,5 +44,4 @@ public io.fabric8.kubernetes.api.model.ConfigBuilder buildConfigBuilder(Kubernet
public String getKubeconfig() {
return kubeconfig;
}

}
Expand Up @@ -20,31 +20,34 @@ public KubernetesAuthUsernamePassword(String username, Secret password) {
this.password = password;
}

@Deprecated
public KubernetesAuthUsernamePassword(String username, String password) {
this.username = username;
this.password = Secret.fromString(password);
this(username, Secret.fromString(password));
}

@Override
public AuthInfoBuilder decorate(AuthInfoBuilder authInfoBuilder, KubernetesAuthConfig config) {
return authInfoBuilder
.withUsername(getUsername())
.withPassword(getPassword());
.withUsername(username)
.withPassword(password.getPlainText());
}

@Override
public ConfigBuilder decorate(ConfigBuilder builder, KubernetesAuthConfig config) throws KubernetesAuthException {
return builder
.withUsername(getUsername())
.withPassword(getPassword());
.withUsername(username)
.withPassword(password.getPlainText());
}

public String getUsername() {
return username;
}

@Deprecated
public String getPassword() {
return password.getPlainText();
}

public Secret getPasswordSecret() {
return password;
}
}

0 comments on commit d9a821a

Please sign in to comment.