All Downloads are FREE. Search and download functionalities are using the official Maven repository.

prerna.aws.AwsSecretsManager Maven / Gradle / Ivy

The newest version!
package prerna.aws;

import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import com.google.gson.Gson;

import prerna.security.HttpHelperUtility;
import prerna.util.Constants;
import prerna.util.Utility;

public class AwsSecretsManager {

	private static final Logger classLogger = LogManager.getLogger(AwsSecretsManager.class);

	// https://docs.aws.amazon.com/secretsmanager/latest/userguide/endpoints.html
	private String url;
	private boolean useApplicationCerts = false;
	private String keyStore;
	private String keyStorePass;
	private String keyPass;

	// security
	private String accessKey;
	private String secretKey;
	
	// inputs
	private String secretId;
	private String versionId;
	private String versionStage;

	// output 
	private String responseData;
	private Map responseJson;

	public AwsSecretsManager() {

	}

	/**
	 * Once inputs passed in make the request
	 */
	public void makeRequest() {
		if(this.url == null || (this.url=this.url.trim()).isEmpty()) {
			throw new NullPointerException("Must define the url");
		}
		if(this.secretId == null || (this.secretId=this.secretId.trim()).isEmpty()) {
			throw new NullPointerException("Must define the ARN of the secret");
		}
		
		Map headersMap = new HashMap<>();
		headersMap.put("SecretId", this.secretId);
		if(this.versionId != null && !(this.versionId=this.versionId.trim()).isEmpty()) {
			headersMap.put("VersionId", this.versionId);
		}
		if(this.versionStage != null && !(this.versionStage=this.versionStage.trim()).isEmpty()) {
			headersMap.put("VersionStage", this.versionStage);
		}
		if(this.accessKey != null && this.secretKey != null) {
			String authorization = createAuthorizationHeader(accessKey, secretKey);
			headersMap.put("Authorization", authorization);
		}

		this.responseData = HttpHelperUtility.getRequest(url, headersMap, keyStore, keyStorePass, keyPass);
		this.responseJson = new Gson().fromJson(this.responseData, Map.class);
	}

	/**
	 * 
	 * @param accessKey
	 * @param secretKey
	 * @return
	 */
	private static String createAuthorizationHeader(String accessKey, String secretKey) {
		String credentials = accessKey + ":" + secretKey;
		String encodedCredentials = Base64.getEncoder().encodeToString(credentials.getBytes(StandardCharsets.UTF_8));
		return "Basic " + encodedCredentials;
	}

	//////////////////////////////////


	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}
	
	public String getAccessKey() {
		return accessKey;
	}

	public void setAccessKey(String accessKey) {
		this.accessKey = accessKey;
	}

	public String getSecretKey() {
		return secretKey;
	}

	public void setSecretKey(String secretKey) {
		this.secretKey = secretKey;
	}

	public boolean isUseApplicationCerts() {
		return useApplicationCerts;
	}

	public void setUseApplicationCerts(boolean useApplicationCerts) {
		this.useApplicationCerts = useApplicationCerts;
		if(this.useApplicationCerts) {
			setKeyStore(Utility.getDIHelperProperty(Constants.SCHEDULER_KEYSTORE));
			setKeyStorePass(Utility.getDIHelperProperty(Constants.SCHEDULER_KEYSTORE_PASSWORD));
			setKeyPass(Utility.getDIHelperProperty(Constants.SCHEDULER_CERTIFICATE_PASSWORD));
		}
	}

	public String getKeyStore() {
		return keyStore;
	}

	public void setKeyStore(String keyStore) {
		this.keyStore = keyStore;
	}

	public String getKeyStorePass() {
		return keyStorePass;
	}

	public void setKeyStorePass(String keyStorePass) {
		this.keyStorePass = keyStorePass;
	}

	public String getKeyPass() {
		return keyPass;
	}

	public void setKeyPass(String keyPass) {
		this.keyPass = keyPass;
	}

	public String getSecretId() {
		return secretId;
	}

	public void setSecretId(String secretId) {
		this.secretId = secretId;
	}

	public String getVersionId() {
		return versionId;
	}

	public void setVersionId(String versionId) {
		this.versionId = versionId;
	}

	public String getVersionStage() {
		return versionStage;
	}

	public void setVersionStage(String versionStage) {
		this.versionStage = versionStage;
	}

	public String getResponseData() {
		return responseData;
	}

	public void setResponseData(String responseData) {
		this.responseData = responseData;
	}

	public Map getResponseJson() {
		return responseJson;
	}

	public void setResponseJson(Map responseJson) {
		this.responseJson = responseJson;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy