diff --git a/src/main/java/com/bettercloud/vault/api/Auth.java b/src/main/java/com/bettercloud/vault/api/Auth.java index 9c36ca78..b00a74b1 100644 --- a/src/main/java/com/bettercloud/vault/api/Auth.java +++ b/src/main/java/com/bettercloud/vault/api/Auth.java @@ -879,23 +879,24 @@ public AuthResponse loginByGithub(final String githubToken, final String githubA } /** - *
Basic login operation to authenticate to an GCP backend. Example usage:
+ *Basic login operation to authenticate to an JWT backend. Example usage:
* *
* {@code
- * final AuthResponse response = vault.auth().loginByGCP("dev", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...");
+ * final AuthResponse response = vault.auth().loginByJwt("kubernetes", "dev", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...");
*
* final String token = response.getAuthClientToken();
* }
*
*
+ * @param provider Provider of JWT token.
* @param role The gcp role used for authentication
* @param jwt The JWT token for the role
* @return The auth token, with additional response metadata
* @throws VaultException If any error occurs, or unexpected response received from Vault
*/
// TODO: Needs integration test coverage if possible
- public AuthResponse loginByGCP(final String role, final String jwt) throws VaultException {
+ public AuthResponse loginByJwt(final String provider, final String role, final String jwt) throws VaultException {
int retryCount = 0;
while (true) {
@@ -903,7 +904,7 @@ public AuthResponse loginByGCP(final String role, final String jwt) throws Vault
// HTTP request to Vault
final String requestJson = Json.object().add("role", role).add("jwt", jwt).toString();
final RestResponse restResponse = new Rest()
- .url(config.getAddress() + "/v1/auth/gcp/login")
+ .url(config.getAddress() + "/v1/auth/" + provider + "/login")
.optionalHeader("X-Vault-Namespace", this.nameSpace)
.body(requestJson.getBytes(StandardCharsets.UTF_8))
.connectTimeoutSeconds(config.getOpenTimeout())
@@ -941,6 +942,50 @@ public AuthResponse loginByGCP(final String role, final String jwt) throws Vault
}
}
+
+ /**
+ * Basic login operation to authenticate to an GCP backend. Example usage:
+ * + *
+ * {@code
+ * final AuthResponse response = vault.auth().loginByGCP("dev", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...");
+ *
+ * final String token = response.getAuthClientToken();
+ * }
+ *
+ *
+ * @param role The gcp role used for authentication
+ * @param jwt The JWT token for the role
+ * @return The auth token, with additional response metadata
+ * @throws VaultException If any error occurs, or unexpected response received from Vault
+ */
+ public AuthResponse loginByGCP(final String role, final String jwt) throws VaultException {
+ return loginByJwt("gcp", role, jwt);
+ }
+
+
+ /**
+ * Basic login operation to authenticate to an kubernetes backend. Example usage:
+ *
+ *
+ *
+ * {@code
+ * final AuthResponse response =
+ * vault.auth().loginByKubernetes("dev", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...");
+ *
+ * final String token = response.getAuthClientToken();
+ * }
+ *
+ *
+ * @param role The kubernetes role used for authentication
+ * @param jwt The JWT token for the role, typically read from /var/run/secrets/kubernetes.io/serviceaccount/token
+ * @return The auth token, with additional response metadata
+ * @throws VaultException If any error occurs, or unexpected response received from Vault
+ */
+ public AuthResponse loginByKubernetes(final String role, final String jwt) throws VaultException {
+ return loginByJwt("kubernetes", role, jwt);
+ }
+
/**
* Basic login operation to authenticate using Vault's TLS Certificate auth backend. Example usage:
*