Read JCEKS Containing Secret Keys using java

package com.riveriq.db2con.driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.riveriq.exception.CustomException;
import com.riveriq.util.ReadJceks;
public class DB2Connection {
private Connection conn;
private static DB2Connection db2connection;
private static Logger LOGGER = LoggerFactory.getLogger(DB2Connection.class);
private DB2Connection() {
}
public Connection getConnection(Properties prop) throws SQLException, ClassNotFoundException, CustomException {
if (conn == null) {
//Class.forName(prop.getProperty(Constants.HIVEDRIVERNAME));
Class.forName(prop.getProperty(Constants.DBDRIVERNAME));
// jdbc:as400://mytestserver.corp.net:8476/testdb
String connectionURL = "jdbc:sqlserver" + "://" + prop.getProperty(Constants.DBHOST) + ":"
+ prop.getProperty(Constants.DBPORT) + ";database=" + prop.getProperty(Constants.DBNAME);
LOGGER.info(" Connection URL " + connectionURL);
String passwordreturn=ReadJceks.getPasswordFromJceks(prop.getProperty(Constants.JCEKSPATH),prop.getProperty(Constants.JCEKSALIASNAME));
if( passwordreturn == null)
{
LOGGER.info(" Not able to retrive the password from JCEKS PATH " + prop.getProperty(Constants.JCEKSPATH) + " using alias name" +
prop.getProperty(Constants.JCEKSALIASNAME));
throw new CustomException(" Password is empty , not able to retrive");
}
conn = DriverManager.getConnection(connectionURL, prop.getProperty(Constants.DBUSER),passwordreturn);
}
return conn;
}
public static DB2Connection getInstance() {
if (db2connection == null) {
db2connection = new DB2Connection();
}
return db2connection;
}
}
***********************
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.alias.CredentialProviderFactory;
import com.riveriq.driver.DB2Call;
public class ReadJceks {
public static String getPasswordFromJceks(String path, String aliasname) {
//Configuration configuration =DB2Call.configuration;
String alias = aliasname;
String jceksPath = path;
DB2Call.configuration.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH, jceksPath);
String pass = null;
try {
char[] cred = DB2Call.configuration.getPassword(alias);
pass = new String(cred);
} catch (IOException e) {
e.printStackTrace();
}
return pass;
}
}
************************
drivername=com.microsoft.sqlserver.jdbc.SQLServerDriver
0 Comments
Be first to comment on this post.